Linux Standard Base Core Specification 4.0 | ||
---|---|---|
<<< Previous | Chapter 11. Object Format | Next >>> |
The LSB does not specify debugging information, however, some additional sections contain information which is encoded using the the encoding as specified by DWARF Debugging Information Format, Revision 2.0.0 with extensions defined here.
Note: The extensions specified here also exist in DWARF Debugging Information Format, Revision 3.0.0 (Draft). It is expected that future versions of the LSB will reference the final version of that document, and that the definitions here will be taken from that document instead of being specified here.
The DWARF Exception Header Encoding is used to describe the type of data used in the .eh_frame and .eh_frame_hdr section. The upper 4 bits indicate how the value is to be applied. The lower 4 bits indicate the format of the data.
Table 11-5. DWARF Exception Header value format
Name | Value | Meaning |
---|---|---|
DW_EH_PE_absptr | 0x00 | The Value is a literal pointer whose size is determined by the architecture. |
DW_EH_PE_uleb128 | 0x01 | Unsigned value is encoded using the Little Endian Base 128 (LEB128) as defined by DWARF Debugging Information Format, Revision 2.0.0. |
DW_EH_PE_udata2 | 0x02 | A 2 bytes unsigned value. |
DW_EH_PE_udata4 | 0x03 | A 4 bytes unsigned value. |
DW_EH_PE_udata8 | 0x04 | An 8 bytes unsigned value. |
DW_EH_PE_sleb128 | 0x09 | Signed value is encoded using the Little Endian Base 128 (LEB128) as defined by DWARF Debugging Information Format, Revision 2.0.0. |
DW_EH_PE_sdata2 | 0x0A | A 2 bytes signed value. |
DW_EH_PE_sdata4 | 0x0B | A 4 bytes signed value. |
DW_EH_PE_sdata8 | 0x0C | An 8 bytes signed value. |
Table 11-6. DWARF Exception Header application
Name | Value | Meaning |
---|---|---|
DW_EH_PE_pcrel | 0x10 | Value is relative to the current program counter. |
DW_EH_PE_textrel | 0x20 | Value is relative to the beginning of the .text section. |
DW_EH_PE_datarel | 0x30 | Value is relative to the beginning of the .got or .eh_frame_hdr section. |
DW_EH_PE_funcrel | 0x40 | Value is relative to the beginning of the function. |
DW_EH_PE_aligned | 0x50 | Value is aligned to an address unit sized boundary. |
One special encoding, 0xff (DW_EH_PE_omit), shall be used to indicate that no value ispresent.
In addition to the Call Frame Instructions defined in section 6.4.2 of DWARF Debugging Information Format, Revision 2.0.0, the following additional Call Frame Instructions may also be used.
Table 11-7. Additional DWARF Call Frame Instructions
Name | Value | Meaning |
---|---|---|
DW_CFA_expression | 0x10 | The DW_CFA_expression instruction takes two operands: an unsigned LEB128 value representing a register number, and a DW_FORM_block value representing a DWARF expression. The required action is to establish the DWARF expression as the means by which the address in which the given register contents are found may be computed. The value of the CFA is pushed on the DWARF evaluation stack prior to execution of the DWARF expression. The DW_OP_call2, DW_OP_call4, DW_OP_call_ref and DW_OP_push_object_address DWARF operators (see Section 2.4.1 of DWARF Debugging Information Format, Revision 2.0.0) cannot be used in such a DWARF expression. |
DW_CFA_offset_extended_sf | 0x11 | The DW_CFA_offset_extended_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_offset_extended except that the second operand is signed. |
DW_CFA_def_cfa_sf | 0x12 | The DW_CFA_def_cfa_sf instruction takes two operands: an unsigned LEB128 value representing a register number and a signed LEB128 factored offset. This instruction is identical to DW_CFA_def_cfa except that the second operand is signed and factored. |
DW_CFA_def_cfa_offset_sf | 0x13 | The DW_CFA_def_cfa_offset_sf instruction takes a signed LEB128 operand representing a factored offset. This instruction is identical to DW_CFA_def_cfa_offset except that the operand is signed and factored. |
DW_CFA_GNU_args_size | 0x2e | The DW_CFA_GNU_args_size instruction takes an unsigned LEB128 operand representing an argument size. This instruction specifies the total of the size of the arguments which have been pushed onto the stack. |
DW_CFA_GNU_negative_offset_extended | 0x2f | The DW_CFA_def_cfa_sf instruction takes two operands: an unsigned LEB128 value representing a register number and an unsigned LEB128 which represents the magnitude of the offset. This instruction is identical to DW_CFA_offset_extended_sf except that the operand is subtracted to produce the offset. This instructions is obsoleted by DW_CFA_offset_extended_sf. |
<<< Previous | Home | Next >>> |
Symbol Mapping | Up | Exception Frames |