Enumerations |
| enum | LEVEL_CORE::SEC_TYPE {
SEC_TYPE_INVALID,
SEC_TYPE_UNUSED,
LEVEL_CORE::SEC_TYPE_REGREL,
LEVEL_CORE::SEC_TYPE_DYNREL,
LEVEL_CORE::SEC_TYPE_EXEC,
LEVEL_CORE::SEC_TYPE_DATA,
SEC_TYPE_DYNAMIC,
SEC_TYPE_OPD,
SEC_TYPE_GOT,
SEC_TYPE_STACK,
SEC_TYPE_PLTOFF,
SEC_TYPE_HASH,
LEVEL_CORE::SEC_TYPE_LSDA,
SEC_TYPE_UNWIND,
SEC_TYPE_UNWINDINFO,
SEC_TYPE_REGSYM,
SEC_TYPE_DYNSYM,
SEC_TYPE_DEBUG,
LEVEL_CORE::SEC_TYPE_BSS,
SEC_TYPE_SYMSTR,
SEC_TYPE_DYNSTR,
SEC_TYPE_SECSTR,
SEC_TYPE_COMMENT,
LEVEL_CORE::SEC_TYPE_LOOS,
LEVEL_CORE::SEC_TYPE_USER,
LEVEL_CORE::SEC_TYPE_PROC,
SEC_TYPE_LAST
} |
Functions |
| IMG | LEVEL_PINCLIENT::SEC_Img (SEC sec) |
| SEC | LEVEL_PINCLIENT::SEC_Next (SEC sec) |
| SEC | LEVEL_PINCLIENT::SEC_Prev (SEC sec) |
| SEC | LEVEL_PINCLIENT::SEC_Invalid () |
| BOOL | LEVEL_PINCLIENT::SEC_Valid (SEC x) |
| RTN | LEVEL_PINCLIENT::SEC_RtnHead (SEC sec) |
| RTN | LEVEL_PINCLIENT::SEC_RtnTail (SEC sec) |
| const string & | LEVEL_PINCLIENT::SEC_Name (SEC sec) |
| SEC_TYPE | LEVEL_PINCLIENT::SEC_Type (SEC sec) |
| BOOL | LEVEL_PINCLIENT::SEC_Mapped (SEC sec) |
| const VOID * | LEVEL_PINCLIENT::SEC_Data (SEC sec) |
| ADDRINT | LEVEL_PINCLIENT::SEC_Address (SEC sec) |
| BOOL | LEVEL_PINCLIENT::SEC_IsReadable (SEC sec) |
| BOOL | LEVEL_PINCLIENT::SEC_IsWriteable (SEC sec) |
| BOOL | LEVEL_PINCLIENT::SEC_IsExecutable (SEC sec) |
| USIZE | LEVEL_PINCLIENT::SEC_Size (SEC sec) |
Detailed Description
A SEC is modeled after the sections found inside elf images. Can be accessed at instrumentation time and analysis time.
SECs can be mapped or unmapped, a mapped SEC occupies address space inside the IMG. Unmapped SECs often contain debug and relocation information.
APIs from this group are available in any thread, including any internal thread spawned by the tool.
Iteration idioms:
- Availability:
- Mode: JIT & Probe
O/S: Linux & Windows
CPU: All
Enumeration Type Documentation
SEC types
- Enumerator:
| SEC_TYPE_REGREL |
relocations
|
| SEC_TYPE_DYNREL |
dynamic relocations
|
| SEC_TYPE_EXEC |
contains code
|
| SEC_TYPE_DATA |
contains initialized data
|
| SEC_TYPE_LSDA |
old exception_info (obsolete)
|
| SEC_TYPE_BSS |
contains uninitialized data
|
| SEC_TYPE_LOOS |
OS specific.
|
| SEC_TYPE_USER |
Application specific.
|
| SEC_TYPE_PROC |
Processor specific.
|
Function Documentation
| ADDRINT LEVEL_PINCLIENT::SEC_Address |
( |
SEC |
sec | ) |
|
- Returns:
- Address in memory of sec
If image is loaded by system loader, the real virtual address of section will be returned. If the image is mapped by IMG_Open() the address will be inside the mapped image. On Unix, if the section is not loadable, 0 will be returned in the both cases.
| const VOID* LEVEL_PINCLIENT::SEC_Data |
( |
SEC |
sec | ) |
|
- Returns:
- Return a pointer to the raw data for the section
On Linux, Pin maps the whole image file for processing. The pointer returned by SEC_Data() points inside the mapped file. Note, SEC_Data() pointer is always between IMG_StartAddress() and IMG_StartAddress() + IMG_SizeMapped(). If you are analyzing image in image-load callback, please remember that the image will be unmapped after the callback returns and the pointer provided by SEC_Data() becomes invalid. If you are working with IMG_Open() the pointer is valid until IMG_Close().
If section does not have raw data the function returns 0.
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| IMG LEVEL_PINCLIENT::SEC_Img |
( |
SEC |
sec | ) |
|
- Returns:
- Image that contains this section
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| SEC LEVEL_PINCLIENT::SEC_Invalid |
( |
| ) |
|
- Returns:
- Invalid section value
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| BOOL LEVEL_PINCLIENT::SEC_IsExecutable |
( |
SEC |
sec | ) |
|
- Returns:
- TRUE if section is executable
| BOOL LEVEL_PINCLIENT::SEC_IsReadable |
( |
SEC |
sec | ) |
|
- Returns:
- TRUE if section is readable
| BOOL LEVEL_PINCLIENT::SEC_IsWriteable |
( |
SEC |
sec | ) |
|
- Returns:
- TRUE if section is writable
| BOOL LEVEL_PINCLIENT::SEC_Mapped |
( |
SEC |
sec | ) |
|
- Returns:
- True if section is mapped in memory, unmapped section contain data not needed at run time, like debug information
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| const string& LEVEL_PINCLIENT::SEC_Name |
( |
SEC |
sec | ) |
|
- Returns:
- Section name
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| SEC LEVEL_PINCLIENT::SEC_Next |
( |
SEC |
sec | ) |
|
- Returns:
- Section that follows x, or SEC_Invalid() is x is last section in the image
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| SEC LEVEL_PINCLIENT::SEC_Prev |
( |
SEC |
sec | ) |
|
- Returns:
- Previous section of x, or SEC_Invalid() if x is the first in the image
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| RTN LEVEL_PINCLIENT::SEC_RtnHead |
( |
SEC |
sec | ) |
|
- Returns:
- First RTN of x, or RTN_Invalid() if no RTNs
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| RTN LEVEL_PINCLIENT::SEC_RtnTail |
( |
SEC |
sec | ) |
|
- Returns:
- Last RTN of x, or RTN_Invalid() if no RTNs
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| USIZE LEVEL_PINCLIENT::SEC_Size |
( |
SEC |
sec | ) |
|
| SEC_TYPE LEVEL_PINCLIENT::SEC_Type |
( |
SEC |
sec | ) |
|
- Returns:
- Section type
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All
| BOOL LEVEL_PINCLIENT::SEC_Valid |
( |
SEC |
x | ) |
|
- Returns:
- True if x is not SEC_Invalid()
- Availability:
- Mode: JIT & Probe
O/S: Linux, Windows & MacOS
CPU: All