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, Version 4 with extensions defined 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 10-5. DWARF Exception Header value format
|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, Version 4.|
|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, Version 4.|
|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 10-6. DWARF Exception Header application
|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, Version 4, the following additional Call Frame Instructions may also be used.
Table 10-7. Additional DWARF Call Frame Instructions
|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.|