Enumerations | |
enum | LEVEL_PINCLIENT::UNDECORATION { LEVEL_PINCLIENT::UNDECORATION_COMPLETE, LEVEL_PINCLIENT::UNDECORATION_NAME_ONLY } |
Functions | |
SYM | LEVEL_PINCLIENT::SYM_Next (SYM x) |
SYM | LEVEL_PINCLIENT::SYM_Prev (SYM x) |
const string & | LEVEL_PINCLIENT::SYM_Name (SYM x) |
SYM | LEVEL_PINCLIENT::SYM_Invalid () |
BOOL | LEVEL_PINCLIENT::SYM_Valid (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_Dynamic (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_GeneratedByPin (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_IFuncImplementation (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_IFuncResolver (SYM x) |
ADDRINT | LEVEL_PINCLIENT::SYM_Value (SYM x) |
UINT32 | LEVEL_PINCLIENT::SYM_Index (SYM x) |
ADDRINT | LEVEL_PINCLIENT::SYM_Address (SYM x) |
string | LEVEL_PINCLIENT::PIN_UndecorateSymbolName (const string &symbolName, UNDECORATION style) |
You must call PIN_InitSymbols to make symbols available.
Can be accessed at instrumentation time and analysis time.
APIs from this group are available in any thread, including any internal thread spawned by the tool.
Iteration idioms:
// Forward pass over all symbols in an image for( SYM sym= IMG_RegsymHead(img); SYM_Valid(sym); sym = SYM_Next(sym) )
|
List of supported symbol name undecoration styles. Used in PIN_UndecorateSymbolName() |
|
Undecorate symbol name.
The C++ mangled name is undecorated either to its full signature (UNDECORATION_COMPLETE style)
Example of undecoration of symbol generated by Microsoft compiler in Windows:
Style Original name Undecorated name ===================== ================== ====================================== UNDECORATION_COMPLETE ?foo@ccc@@QAEPADH@Z public: char * __thiscall ccc::foo(int) UNDECORATION_NAME_ONLY ccc::foo
Symbol name decorated according to Windows IA32 C calling conventions is undecorated as follows: _foo -> foo (__cdecl convention) _foo@4 -> foo (__stdcall convention) @foo@12 -> foo (__fastcall convention)
Example of undecoration of symbol generated by GCC compiler on Linux:
Style Original name Undecorated name ===================== ================== ====================================== UNDECORATION_COMPLETE _ZN1A7method1ERKSt6vectorIiSaIiEE A::method1(std::vector<int, std::allocator<int> > const&) UNDECORATION_NAME_ONLY A::method1
You should be careful if using this function, since some of the undecorated names it generates for symbols generated by the compiler may not be valid C++ symbol names. For example on Linux demangling can give names like
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|