Symbol Formats
For ease of implementation the output of the lprof and
lcov programs list internal symbols from the compiler rather
than entirely meaningful names. This document describes how to decode
these symbols.
Firstly here is a synopsis of the terminology used:
-
External
- An external symbol coresponds to something that may be visible
outside the file in which it is declared, such as something declared
within a library or at the outermost scope level.
-
Internal
- Any symbol that is not visible outside the file in which it is
declared in an internal symbol.
Here are the formats that are used and their meanings:
-
F_ name
- The external function name. Example:
F_close
-
F_ name _ line _
idcode [ _ file ]*
- The internal function name, declared on line line
(or thereabouts). idcode is a meaningless number used to
disambiguate multiple uses of the same name within one file. One or
more _ file suffixes are added at link time to
indicate the file containing the declaration. Example:
F_Exec_data_abort_344_12435_execute
-
F_ name _ overloadnum
- The overloaded external function name. Since there are
multiple distinct declarations of name that cannot be
disambiguated using meaningless internal codes a slightly meaningful
number is used instead. overloadnum is the count of this
particular declaration. Counting starts at 1 for the
overloaded declaration and 2 for the first "real"
declaration. Examples:
F_print1_5
-
E_ name _ line _
idcode [ _ file ]*
- A call to the function name that occurs on line
line (or thereabouts) of file file. Example:
E_wait_for_26_11245_utils
-
T_ name
- The external type name. Example:
T_int
-
T_ name _ line _
idcode [ _ file ]*
- The internal type name, declared on line line
(or thereabouts) of file file. Example:
T_mytype_135_11232_foo