| ## Test loading an ELF file with split DWARF. |
| ## First we make the ELF file and dwo file from yaml, |
| ## then we test converting the ELF file with and without a valid dwo |
| |
| ## RUN: yaml2obj %s -o %t |
| ## RUN: llvm-gsymutil --convert=%t -o %t.gsym | FileCheck %s --check-prefix=WARNING |
| ## RUN: llvm-gsymutil --convert=%t -o %t.gsym --quiet | FileCheck %s --check-prefix=WARNING-QUIET |
| |
| ## WARNING: Input file: {{.*\.yaml\.tmp}} |
| ## WARNING: Output file (x86_64): {{.*\.yaml\.tmp\.gsym}} |
| ## WARNING: warning: Unable to retrieve DWO .debug_info section for main_split-main.dwo |
| ## WARNING: Loaded 0 functions from DWARF. |
| ## WARNING: Loaded 10 functions from symbol table. |
| ## WARNING: Pruned 0 functions, ended with 10 total |
| |
| ## WARNING-QUIET: Input file: {{.*\.yaml\.tmp}} |
| ## WARNING-QUIET: Output file (x86_64): {{.*\.yaml\.tmp\.gsym}} |
| ## WARNING-QUIET: Pruned 0 functions, ended with 10 total |
| ## WARNING-QUIET: warning: Unable to retrieve DWO .debug_info section for some object files. (Remove the --quiet flag for full output) |
| |
| |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_EXEC |
| Machine: EM_X86_64 |
| Entry: 0x401020 |
| ProgramHeaders: |
| - Type: PT_PHDR |
| Flags: [ PF_R ] |
| VAddr: 0x400040 |
| Align: 0x8 |
| - Type: PT_INTERP |
| Flags: [ PF_R ] |
| FirstSec: .interp |
| LastSec: .interp |
| VAddr: 0x400318 |
| - Type: PT_LOAD |
| Flags: [ PF_R ] |
| FirstSec: .interp |
| LastSec: .rela.dyn |
| VAddr: 0x400000 |
| Align: 0x1000 |
| - Type: PT_LOAD |
| Flags: [ PF_X, PF_R ] |
| FirstSec: .init |
| LastSec: .fini |
| VAddr: 0x401000 |
| Align: 0x1000 |
| - Type: PT_LOAD |
| Flags: [ PF_R ] |
| FirstSec: .rodata |
| LastSec: .eh_frame |
| VAddr: 0x402000 |
| Align: 0x1000 |
| - Type: PT_LOAD |
| Flags: [ PF_W, PF_R ] |
| FirstSec: .init_array |
| LastSec: .bss |
| VAddr: 0x403DF8 |
| Align: 0x1000 |
| - Type: PT_DYNAMIC |
| Flags: [ PF_W, PF_R ] |
| FirstSec: .dynamic |
| LastSec: .dynamic |
| VAddr: 0x403E08 |
| Align: 0x8 |
| - Type: PT_NOTE |
| Flags: [ PF_R ] |
| FirstSec: .note.gnu.property |
| LastSec: .note.gnu.property |
| VAddr: 0x400338 |
| Align: 0x8 |
| - Type: PT_NOTE |
| Flags: [ PF_R ] |
| FirstSec: .note.gnu.build-id |
| LastSec: .note.ABI-tag |
| VAddr: 0x400358 |
| Align: 0x4 |
| - Type: PT_GNU_PROPERTY |
| Flags: [ PF_R ] |
| FirstSec: .note.gnu.property |
| LastSec: .note.gnu.property |
| VAddr: 0x400338 |
| Align: 0x8 |
| - Type: PT_GNU_EH_FRAME |
| Flags: [ PF_R ] |
| FirstSec: .eh_frame_hdr |
| LastSec: .eh_frame_hdr |
| VAddr: 0x402010 |
| Align: 0x4 |
| - Type: PT_GNU_STACK |
| Flags: [ PF_W, PF_R ] |
| Align: 0x10 |
| - Type: PT_GNU_RELRO |
| Flags: [ PF_R ] |
| FirstSec: .init_array |
| LastSec: .got.plt |
| VAddr: 0x403DF8 |
| Sections: |
| - Name: .interp |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Address: 0x400318 |
| AddressAlign: 0x1 |
| Content: 2F6C696236342F6C642D6C696E75782D7838362D36342E736F2E3200 |
| - Name: .note.gnu.property |
| Type: SHT_NOTE |
| Flags: [ SHF_ALLOC ] |
| Address: 0x400338 |
| AddressAlign: 0x8 |
| Notes: |
| - Name: GNU |
| Desc: 028000C0040000000300000000000000 |
| Type: NT_GNU_PROPERTY_TYPE_0 |
| - Name: .note.gnu.build-id |
| Type: SHT_NOTE |
| Flags: [ SHF_ALLOC ] |
| Address: 0x400358 |
| AddressAlign: 0x4 |
| Notes: |
| - Name: GNU |
| Desc: 250FD8246225C95E81C87BE2EEB38DD068A42DEE |
| Type: NT_PRPSINFO |
| - Name: .note.ABI-tag |
| Type: SHT_NOTE |
| Flags: [ SHF_ALLOC ] |
| Address: 0x40037C |
| AddressAlign: 0x4 |
| Notes: |
| - Name: GNU |
| Desc: '00000000030000000200000000000000' |
| Type: NT_VERSION |
| - Name: .gnu.hash |
| Type: SHT_GNU_HASH |
| Flags: [ SHF_ALLOC ] |
| Address: 0x4003A0 |
| Link: .dynsym |
| AddressAlign: 0x8 |
| Header: |
| SymNdx: 0x1 |
| Shift2: 0x0 |
| BloomFilter: [ 0x0 ] |
| HashBuckets: [ 0x0 ] |
| HashValues: [ ] |
| - Name: .dynsym |
| Type: SHT_DYNSYM |
| Flags: [ SHF_ALLOC ] |
| Address: 0x4003C0 |
| Link: .dynstr |
| AddressAlign: 0x8 |
| - Name: .dynstr |
| Type: SHT_STRTAB |
| Flags: [ SHF_ALLOC ] |
| Address: 0x400438 |
| AddressAlign: 0x1 |
| - Name: .gnu.version |
| Type: SHT_GNU_versym |
| Flags: [ SHF_ALLOC ] |
| Address: 0x4004CC |
| Link: .dynsym |
| AddressAlign: 0x2 |
| Entries: [ 0, 2, 1, 1, 1 ] |
| - Name: .gnu.version_r |
| Type: SHT_GNU_verneed |
| Flags: [ SHF_ALLOC ] |
| Address: 0x4004D8 |
| Link: .dynstr |
| AddressAlign: 0x8 |
| Dependencies: |
| - Version: 1 |
| File: libc.so.6 |
| Entries: |
| - Name: GLIBC_2.34 |
| Hash: 110530996 |
| Flags: 0 |
| Other: 2 |
| - Name: .rela.dyn |
| Type: SHT_RELA |
| Flags: [ SHF_ALLOC ] |
| Address: 0x4004F8 |
| Link: .dynsym |
| AddressAlign: 0x8 |
| Relocations: |
| - Offset: 0x403FC8 |
| Symbol: __libc_start_main |
| Type: R_X86_64_GLOB_DAT |
| - Offset: 0x403FD0 |
| Symbol: _ITM_deregisterTMCloneTable |
| Type: R_X86_64_GLOB_DAT |
| - Offset: 0x403FD8 |
| Symbol: __gmon_start__ |
| Type: R_X86_64_GLOB_DAT |
| - Offset: 0x403FE0 |
| Symbol: _ITM_registerTMCloneTable |
| Type: R_X86_64_GLOB_DAT |
| - Name: .init |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Address: 0x401000 |
| AddressAlign: 0x4 |
| Offset: 0x1000 |
| Content: F30F1EFA4883EC08488B05C92F00004885C07402FFD04883C408C3 |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Address: 0x401020 |
| AddressAlign: 0x10 |
| Content: F30F1EFA31ED4989D15E4889E24883E4F050544531C031C948C7C720114000FF15832F0000F4662E0F1F840000000000F30F1EFAC3662E0F1F84000000000090488D3DA12F0000488D059A2F00004839F87415488B05562F00004885C07409FFE00F1F8000000000C30F1F8000000000488D3D712F0000488D356A2F00004829FE4889F048C1EE3F48C1F8034801C648D1FE7414488B05252F00004885C07408FFE0660F1F440000C30F1F8000000000F30F1EFA803D292F0000007513554889E5E87AFFFFFFC605172F0000015DC390C366662E0F1F8400000000000F1F4000F30F1EFAEB8A662E0F1F840000000000554889E55DC3662E0F1F840000000000554889E54883EC10C745FC00000000E8DCFFFFFF31C04883C4105DC3 |
| - Name: .fini |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Address: 0x40113C |
| AddressAlign: 0x4 |
| Content: F30F1EFA4883EC084883C408C3 |
| - Name: .rodata |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Address: 0x402000 |
| AddressAlign: 0x8 |
| Offset: 0x2000 |
| Content: '01000200000000000000000000000000' |
| - Name: .eh_frame_hdr |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Address: 0x402010 |
| AddressAlign: 0x4 |
| Content: 011B033B2C0000000400000010F0FFFF4800000040F0FFFF5C00000000F1FFFF7000000010F1FFFF90000000 |
| - Name: .eh_frame |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC ] |
| Address: 0x402040 |
| AddressAlign: 0x8 |
| Content: 1400000000000000017A5200017810011B0C070890010000100000001C000000C0EFFFFF26000000004407101000000030000000DCEFFFFF05000000000000001C0000004400000088F0FFFF0600000000410E108602430D06410C07080000001C0000006400000078F0FFFF1C00000000410E108602430D06570C070800000000000000 |
| - Name: .init_array |
| Type: SHT_INIT_ARRAY |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x403DF8 |
| AddressAlign: 0x8 |
| EntSize: 0x8 |
| Offset: 0x2DF8 |
| Content: '0011400000000000' |
| - Name: .fini_array |
| Type: SHT_FINI_ARRAY |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x403E00 |
| AddressAlign: 0x8 |
| EntSize: 0x8 |
| Content: D010400000000000 |
| - Name: .dynamic |
| Type: SHT_DYNAMIC |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x403E08 |
| Link: .dynstr |
| AddressAlign: 0x8 |
| Entries: |
| - Tag: DT_NEEDED |
| Value: 0x58 |
| - Tag: DT_NEEDED |
| Value: 0x67 |
| - Tag: DT_NEEDED |
| Value: 0x71 |
| - Tag: DT_NEEDED |
| Value: 0x7F |
| - Tag: DT_INIT |
| Value: 0x401000 |
| - Tag: DT_FINI |
| Value: 0x40113C |
| - Tag: DT_INIT_ARRAY |
| Value: 0x403DF8 |
| - Tag: DT_INIT_ARRAYSZ |
| Value: 0x8 |
| - Tag: DT_FINI_ARRAY |
| Value: 0x403E00 |
| - Tag: DT_FINI_ARRAYSZ |
| Value: 0x8 |
| - Tag: DT_GNU_HASH |
| Value: 0x4003A0 |
| - Tag: DT_STRTAB |
| Value: 0x400438 |
| - Tag: DT_SYMTAB |
| Value: 0x4003C0 |
| - Tag: DT_STRSZ |
| Value: 0x94 |
| - Tag: DT_SYMENT |
| Value: 0x18 |
| - Tag: DT_DEBUG |
| Value: 0x0 |
| - Tag: DT_RELA |
| Value: 0x4004F8 |
| - Tag: DT_RELASZ |
| Value: 0x60 |
| - Tag: DT_RELAENT |
| Value: 0x18 |
| - Tag: DT_VERNEED |
| Value: 0x4004D8 |
| - Tag: DT_VERNEEDNUM |
| Value: 0x1 |
| - Tag: DT_VERSYM |
| Value: 0x4004CC |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Tag: DT_NULL |
| Value: 0x0 |
| - Name: .got |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x403FC8 |
| AddressAlign: 0x8 |
| EntSize: 0x8 |
| Content: '0000000000000000000000000000000000000000000000000000000000000000' |
| - Name: .got.plt |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x403FE8 |
| AddressAlign: 0x8 |
| EntSize: 0x8 |
| Content: '083E40000000000000000000000000000000000000000000' |
| - Name: .data |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x404000 |
| AddressAlign: 0x1 |
| Content: '00000000' |
| - Name: .bss |
| Type: SHT_NOBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| Address: 0x404004 |
| AddressAlign: 0x1 |
| Size: 0x4 |
| - Name: .comment |
| Type: SHT_PROGBITS |
| Flags: [ SHF_MERGE, SHF_STRINGS ] |
| AddressAlign: 0x1 |
| EntSize: 0x1 |
| Content: 4743433A2028474E55292031312E342E312032303233303630352028526564204861742031312E342E312D3229004743433A2028474E55292031332E322E312032303233313131302028526564204861742031332E322E312D352900636C616E672076657273696F6E2031372E302E31202843656E744F532031372E302E312D322E656C392900 |
| - Name: .gnu.build.attributes |
| Type: SHT_NOTE |
| Address: 0x406008 |
| AddressAlign: 0x4 |
| Notes: |
| - Name: "GA$\x013a1" |
| Desc: '20104000000000004610400000000000' |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: '55104000000000005510400000000000' |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: '00104000000000001610400000000000' |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: 3C114000000000004411400000000000 |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: '60104000000000000611400000000000' |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: 3C114000000000003C11400000000000 |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: 3C114000000000003C11400000000000 |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: 16104000000000001B10400000000000 |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: "GA$\x013a1" |
| Desc: '44114000000000004911400000000000' |
| Type: NT_GNU_BUILD_ATTRIBUTE_OPEN |
| - Name: .debug_info |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: 2C000000040000000000080100000000000000000E000000939F5FCB7816797B10114000000000002C00000000000000 |
| - Name: .debug_abbrev |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: 01110010171B0EB44219B0420EB1420711011206B34217000000 |
| - Name: .debug_line |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: 47000000040020000000010101FB0E0D000101010100000001000001006D61696E2E637070000000000000090210114000000000000105050A0B4B0500BD05050AE559060B2E0206000101 |
| - Name: .debug_addr |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: '10114000000000002011400000000000' |
| - Name: .debug_gnu_pubnames |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: 21000000020000000000300000001900000030666F6F0025000000306D61696E0000000000 |
| - Name: .debug_gnu_pubtypes |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: '17000000020000000000300000003400000090696E740000000000' |
| Symbols: |
| - Name: crt1.o |
| Type: STT_FILE |
| Index: SHN_ABS |
| - Name: __abi_tag |
| Type: STT_OBJECT |
| Section: .note.ABI-tag |
| Value: 0x40037C |
| Size: 0x20 |
| - Name: crtstuff.c |
| Type: STT_FILE |
| Index: SHN_ABS |
| - Name: deregister_tm_clones |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x401060 |
| - Name: register_tm_clones |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x401090 |
| - Name: __do_global_dtors_aux |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x4010D0 |
| - Name: completed.0 |
| Type: STT_OBJECT |
| Section: .bss |
| Value: 0x404004 |
| Size: 0x1 |
| - Name: __do_global_dtors_aux_fini_array_entry |
| Type: STT_OBJECT |
| Section: .fini_array |
| Value: 0x403E00 |
| - Name: frame_dummy |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x401100 |
| - Name: __frame_dummy_init_array_entry |
| Type: STT_OBJECT |
| Section: .init_array |
| Value: 0x403DF8 |
| - Name: main.cpp |
| Type: STT_FILE |
| Index: SHN_ABS |
| - Name: 'crtstuff.c (1)' |
| Type: STT_FILE |
| Index: SHN_ABS |
| - Name: __FRAME_END__ |
| Type: STT_OBJECT |
| Section: .eh_frame |
| Value: 0x4020C0 |
| - Type: STT_FILE |
| Index: SHN_ABS |
| - Name: __GNU_EH_FRAME_HDR |
| Section: .eh_frame_hdr |
| Value: 0x402010 |
| - Name: _DYNAMIC |
| Type: STT_OBJECT |
| Section: .dynamic |
| Value: 0x403E08 |
| - Name: _GLOBAL_OFFSET_TABLE_ |
| Type: STT_OBJECT |
| Section: .got.plt |
| Value: 0x403FE8 |
| - Name: _edata |
| Section: .data |
| Binding: STB_GLOBAL |
| Value: 0x404004 |
| - Name: data_start |
| Section: .data |
| Binding: STB_WEAK |
| Value: 0x404000 |
| - Name: _IO_stdin_used |
| Type: STT_OBJECT |
| Section: .rodata |
| Binding: STB_GLOBAL |
| Value: 0x402000 |
| Size: 0x4 |
| - Name: main |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Value: 0x401120 |
| Size: 0x1C |
| - Name: __dso_handle |
| Type: STT_OBJECT |
| Section: .rodata |
| Binding: STB_GLOBAL |
| Value: 0x402008 |
| Other: [ STV_HIDDEN ] |
| - Name: _fini |
| Type: STT_FUNC |
| Section: .fini |
| Binding: STB_GLOBAL |
| Value: 0x40113C |
| Other: [ STV_HIDDEN ] |
| - Name: '__libc_start_main@GLIBC_2.34' |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: _dl_relocate_static_pie |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Value: 0x401050 |
| Size: 0x5 |
| Other: [ STV_HIDDEN ] |
| - Name: _start |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Value: 0x401020 |
| Size: 0x26 |
| - Name: _init |
| Type: STT_FUNC |
| Section: .init |
| Binding: STB_GLOBAL |
| Value: 0x401000 |
| Other: [ STV_HIDDEN ] |
| - Name: __TMC_END__ |
| Type: STT_OBJECT |
| Section: .data |
| Binding: STB_GLOBAL |
| Value: 0x404008 |
| Other: [ STV_HIDDEN ] |
| - Name: __data_start |
| Section: .data |
| Binding: STB_GLOBAL |
| Value: 0x404000 |
| - Name: _end |
| Section: .bss |
| Binding: STB_GLOBAL |
| Value: 0x404008 |
| - Name: __bss_start |
| Section: .bss |
| Binding: STB_GLOBAL |
| Value: 0x404004 |
| - Name: _Z3foov |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Value: 0x401110 |
| Size: 0x6 |
| - Name: _ITM_deregisterTMCloneTable |
| Binding: STB_WEAK |
| - Name: __gmon_start__ |
| Binding: STB_WEAK |
| - Name: _ITM_registerTMCloneTable |
| Binding: STB_WEAK |
| DynamicSymbols: |
| - Name: __libc_start_main |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: _ITM_deregisterTMCloneTable |
| Binding: STB_WEAK |
| - Name: __gmon_start__ |
| Binding: STB_WEAK |
| - Name: _ITM_registerTMCloneTable |
| Binding: STB_WEAK |
| DWARF: |
| debug_str: |
| - '/tmp/test_dwo' |
| - main_split-main.dwo |
| ... |