diff options
Diffstat (limited to 'llvm/test/tools/llvm-readobj')
-rw-r--r-- | llvm/test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml | 46 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/unwind.test | 170 |
2 files changed, 216 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml b/llvm/test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml new file mode 100644 index 00000000000..5b8f3671bc3 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml @@ -0,0 +1,46 @@ +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_EXEC + Machine: EM_X86_64 + Entry: 0x0000000000400000 +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + Address: 0x0000000000400000 + AddressAlign: 16 + Content: 50C704240020400031C05AC3 + - Name: .eh_frame_hdr + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x00000000004013c0 + AddressAlign: 4 + Content: 011B033B3C00000006000000E0F0FFFF8800000010F1FFFF58000000F6F1FFFFB000000010F2FFFFD000000090FEFFFF0001000000FFFFFF30010000 + - Name: .eh_frame + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + Address: 0x0000000000401400 + AddressAlign: 8 + Content: 1400000000000000017A5200017810011B0C070890010710140000001C000000B0F0FFFF2A00000000000000000000001400000000000000017A5200017810011B0C070890010000240000001C00000050F0FFFF20000000000E10460E184A0F0B770880003F1A3B2A332422000000001C000000440000003EF1FFFF1000000000410E108602430D064B0C07080000002C0000006400000038F1FFFF7F0C000000450C0A00491006027600450F0376780603660C0C0A00450C070800000000002C0000009400000088FDFFFF6600000000410E108602430D06428F03458E04478D058C06488307024B0C07080000000014000000C4000000C8FDFFFF01000000000000000000000000000000 +Symbols: + Global: + - Name: myfunc + Type: STT_FUNC + Section: .text + Value: 0x0000000000400000 +ProgramHeaders: + - Type: PT_LOAD + Flags: [ PF_X, PF_R ] + VAddr: 0x00400000 + PAddr: 0x00400000 + Sections: + - Section: .text + - Type: PT_GNU_EH_FRAME + Flags: [ PF_X, PF_R ] + VAddr: 0x004013C0 + PAddr: 0x004013C0 + Sections: + - Section: .eh_frame_hdr +... diff --git a/llvm/test/tools/llvm-readobj/unwind.test b/llvm/test/tools/llvm-readobj/unwind.test new file mode 100644 index 00000000000..72c591048c8 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/unwind.test @@ -0,0 +1,170 @@ +RUN: yaml2obj %p/Inputs/dwarf-exprs.exe-x86-64.yaml > %t.exe +RUN: llvm-readobj -unwind %t.exe | FileCheck %s + +CHECK: EH_FRAME Header [ +CHECK-NEXT: Address: 0x4013c0 +CHECK-NEXT: Offset: 0x27c +CHECK-NEXT: Size: 0x3c +CHECK-NEXT: Corresponding Section: .eh_frame_hdr +CHECK-NEXT: Header { +CHECK-NEXT: version: 1 +CHECK-NEXT: eh_frame_ptr_enc: 0x1b +CHECK-NEXT: fde_count_enc: 0x3 +CHECK-NEXT: table_enc: 0x3b +CHECK-NEXT: eh_frame_ptr: 0x401400 +CHECK-NEXT: fde_count: 6 +CHECK-NEXT: entry 0 { +CHECK-NEXT: initial_location: 0x4004a0 +CHECK-NEXT: address: 0x401448 +CHECK-NEXT: } +CHECK-NEXT: entry 1 { +CHECK-NEXT: initial_location: 0x4004d0 +CHECK-NEXT: address: 0x401418 +CHECK-NEXT: } +CHECK-NEXT: entry 2 { +CHECK-NEXT: initial_location: 0x4005b6 +CHECK-NEXT: address: 0x401470 +CHECK-NEXT: } +CHECK-NEXT: entry 3 { +CHECK-NEXT: initial_location: 0x4005d0 +CHECK-NEXT: address: 0x401490 +CHECK-NEXT: } +CHECK-NEXT: entry 4 { +CHECK-NEXT: initial_location: 0x401250 +CHECK-NEXT: address: 0x4014c0 +CHECK-NEXT: } +CHECK-NEXT: entry 5 { +CHECK-NEXT: initial_location: 0x4012c0 +CHECK-NEXT: address: 0x4014f0 +CHECK-NEXT: } +CHECK-NEXT: } +CHECK-NEXT:] + +CHECK: .eh_frame section at offset 0x2b8 address 0x401400: +CHECK-NEXT: [0x401400] CIE length=20 +CHECK-NEXT: version: 1 +CHECK-NEXT: augmentation: zR +CHECK-NEXT: code_alignment_factor: 1 +CHECK-NEXT: data_alignment_factor: -8 +CHECK-NEXT: return_address_register: 16 + +CHECK: Program: +CHECK-NEXT: DW_CFA_def_cfa: reg7 +8 +CHECK-NEXT: DW_CFA_offset: reg16 -8 +CHECK-NEXT: DW_CFA_undefined: reg16 + +CHECK: [0x401418] FDE length=20 cie=[0x401400] +CHECK-NEXT: initial_location: 0x4004d0 +CHECK-NEXT: address_range: 0x2a (end : 0x4004fa) + +CHECK: Program: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x401430] CIE length=20 +CHECK-NEXT: version: 1 +CHECK-NEXT: augmentation: zR +CHECK-NEXT: code_alignment_factor: 1 +CHECK-NEXT: data_alignment_factor: -8 +CHECK-NEXT: return_address_register: 16 + +CHECK: Program: +CHECK-NEXT: DW_CFA_def_cfa: reg7 +8 +CHECK-NEXT: DW_CFA_offset: reg16 -8 +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x401448] FDE length=36 cie=[0x401430] +CHECK-NEXT: initial_location: 0x4004a0 +CHECK-NEXT: address_range: 0x20 (end : 0x4004c0) + +CHECK: Program: +CHECK-NEXT: DW_CFA_def_cfa_offset: +16 +CHECK-NEXT: DW_CFA_advance_loc: 6 +CHECK-NEXT: DW_CFA_def_cfa_offset: +24 +CHECK-NEXT: DW_CFA_advance_loc: 10 +CHECK-NEXT: DW_CFA_def_cfa_expression: DW_OP_breg7 +8, DW_OP_breg16 +0, DW_OP_lit15, DW_OP_and, DW_OP_lit11, DW_OP_ge, DW_OP_lit3, DW_OP_shl, DW_OP_plus +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x401470] FDE length=28 cie=[0x401430] +CHECK-NEXT: initial_location: 0x4005b6 +CHECK-NEXT: address_range: 0x10 (end : 0x4005c6) + +CHECK: Program: +CHECK-NEXT: DW_CFA_advance_loc: 1 +CHECK-NEXT: DW_CFA_def_cfa_offset: +16 +CHECK-NEXT: DW_CFA_offset: reg6 -16 +CHECK-NEXT: DW_CFA_advance_loc: 3 +CHECK-NEXT: DW_CFA_def_cfa_register: reg6 +CHECK-NEXT: DW_CFA_advance_loc: 11 +CHECK-NEXT: DW_CFA_def_cfa: reg7 +8 +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x401490] FDE length=44 cie=[0x401430] +CHECK-NEXT: initial_location: 0x4005d0 +CHECK-NEXT: address_range: 0xc7f (end : 0x40124f) + +CHECK: Program: +CHECK-NEXT: DW_CFA_advance_loc: 5 +CHECK-NEXT: DW_CFA_def_cfa: reg10 +0 +CHECK-NEXT: DW_CFA_advance_loc: 9 +CHECK-NEXT: DW_CFA_expression: reg6 DW_OP_breg6 +0 +CHECK-NEXT: DW_CFA_advance_loc: 5 +CHECK-NEXT: DW_CFA_def_cfa_expression: DW_OP_breg6 -8, DW_OP_deref +CHECK-NEXT: DW_CFA_advance_loc2: 3174 +CHECK-NEXT: DW_CFA_def_cfa: reg10 +0 +CHECK-NEXT: DW_CFA_advance_loc: 5 +CHECK-NEXT: DW_CFA_def_cfa: reg7 +8 +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x4014c0] FDE length=44 cie=[0x401430] +CHECK-NEXT: initial_location: 0x401250 +CHECK-NEXT: address_range: 0x66 (end : 0x4012b6) + +CHECK: Program: +CHECK-NEXT: DW_CFA_advance_loc: 1 +CHECK-NEXT: DW_CFA_def_cfa_offset: +16 +CHECK-NEXT: DW_CFA_offset: reg6 -16 +CHECK-NEXT: DW_CFA_advance_loc: 3 +CHECK-NEXT: DW_CFA_def_cfa_register: reg6 +CHECK-NEXT: DW_CFA_advance_loc: 2 +CHECK-NEXT: DW_CFA_offset: reg15 -24 +CHECK-NEXT: DW_CFA_advance_loc: 5 +CHECK-NEXT: DW_CFA_offset: reg14 -32 +CHECK-NEXT: DW_CFA_advance_loc: 7 +CHECK-NEXT: DW_CFA_offset: reg13 -40 +CHECK-NEXT: DW_CFA_offset: reg12 -48 +CHECK-NEXT: DW_CFA_advance_loc: 8 +CHECK-NEXT: DW_CFA_offset: reg3 -56 +CHECK-NEXT: DW_CFA_advance_loc1: 75 +CHECK-NEXT: DW_CFA_def_cfa: reg7 +8 +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: + +CHECK: [0x4014f0] FDE length=20 cie=[0x401430] +CHECK-NEXT: initial_location: 0x4012c0 +CHECK-NEXT: address_range: 0x1 (end : 0x4012c1) + +CHECK: Program: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: +CHECK-NEXT: DW_CFA_nop: |