From 441909b835a8bb753e0d6d6588d7c28efef670e8 Mon Sep 17 00:00:00 2001 From: Philip Craig Date: Sun, 26 Nov 2023 13:18:40 +1000 Subject: [PATCH 1/3] read: use stable sort for SymbolMap::new We'll need this for testing at least, and it's probably better in general. Ideally there wouldn't be duplicates, but they do happen. --- src/read/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/read/mod.rs b/src/read/mod.rs index 8230d43b..b5a9dd4c 100644 --- a/src/read/mod.rs +++ b/src/read/mod.rs @@ -349,7 +349,8 @@ impl SymbolMap { /// /// This function will sort the symbols by address. pub fn new(mut symbols: Vec) -> Self { - symbols.sort_unstable_by_key(|s| s.address()); + // TODO: deterministically remove duplicates + symbols.sort_by_key(|s| s.address()); SymbolMap { symbols } } From ff3fecb919ce5ab7007766b8f3b687d0c1be194b Mon Sep 17 00:00:00 2001 From: Philip Craig Date: Sun, 26 Nov 2023 12:31:35 +1000 Subject: [PATCH 2/3] objdump: print symbol map --- crates/examples/src/objdump.rs | 6 + .../testfiles/coff/import_msvc.lib.objdump | 39 + .../testfiles/elf/base-aarch64.o.objdump | 45 + .../testfiles/elf/base-aarch64.o.readobj | 314 +++ .../testfiles/elf/base-aarch64.objdump | 214 ++ .../testfiles/elf/base-aarch64.readobj | 1877 +++++++++++++++++ .../examples/testfiles/elf/base-strip.objdump | 2 + crates/examples/testfiles/elf/base.o.objdump | 3 + crates/examples/testfiles/elf/base.objdump | 29 + .../macho/base-aarch64-debug.o.objdump | 7 + .../testfiles/macho/base-aarch64.o.objdump | 7 + .../testfiles/macho/base-aarch64.objdump | 4 + .../macho/base-x86_64-debug.o.objdump | 3 + .../testfiles/macho/base-x86_64.o.objdump | 3 + .../testfiles/macho/base-x86_64.objdump | 5 + .../testfiles/macho/reloc-aarch64.o.objdump | 5 + .../testfiles/macho/reloc-arm.o.objdump | 5 + .../testfiles/macho/reloc-i386.o.objdump | 5 + .../testfiles/macho/reloc-x86_64.o.objdump | 4 + .../testfiles/pe/base-bigobj.o.objdump | 3 + .../testfiles/pe/base-bigobj.obj.objdump | 9 + .../testfiles/pe/base-gnu.exe.objdump | 1219 +++++++++++ crates/examples/testfiles/pe/base.exe.objdump | 2 + crates/examples/testfiles/pe/base.o.objdump | 3 + crates/examples/testfiles/pe/base.obj.objdump | 9 + .../examples/testfiles/wasm/base.wasm.objdump | 38 + .../testfiles/wasm/global-wasm32.objdump | 4 + .../wasm/global-wasm64-import.objdump | 4 + .../testfiles/wasm/global-wasm64.objdump | 4 + .../examples/testfiles/xcoff/base.o.objdump | 5 + .../testfiles/xcoff/base.xcoff.objdump | 20 + .../examples/testfiles/xcoff/base32.o.objdump | 5 + .../testfiles/xcoff/base32.xcoff.objdump | 20 + 33 files changed, 3922 insertions(+) create mode 100644 crates/examples/testfiles/elf/base-aarch64.o.objdump create mode 100644 crates/examples/testfiles/elf/base-aarch64.o.readobj create mode 100644 crates/examples/testfiles/elf/base-aarch64.objdump create mode 100644 crates/examples/testfiles/elf/base-aarch64.readobj diff --git a/crates/examples/src/objdump.rs b/crates/examples/src/objdump.rs index 45b1da3e..2f229456 100644 --- a/crates/examples/src/objdump.rs +++ b/crates/examples/src/objdump.rs @@ -248,6 +248,12 @@ fn dump_parsed_object(w: &mut W, e: &mut E, file: &object::F Err(err) => writeln!(e, "Failed to parse exports: {}", err)?, } + writeln!(w)?; + writeln!(w, "Symbol map")?; + for symbol in file.symbol_map().symbols() { + writeln!(w, "0x{:x} \"{}\"", symbol.address(), symbol.name())?; + } + Ok(()) } diff --git a/crates/examples/testfiles/coff/import_msvc.lib.objdump b/crates/examples/testfiles/coff/import_msvc.lib.objdump index 23ecbe37..0ef5e6e6 100644 --- a/crates/examples/testfiles/coff/import_msvc.lib.objdump +++ b/crates/examples/testfiles/coff/import_msvc.lib.objdump @@ -52,6 +52,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "test_x64_NULL_THUNK_DATA" + test_x64.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -70,6 +74,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "__NULL_IMPORT_DESCRIPTOR" + test_x64.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -101,6 +109,11 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "__IMPORT_DESCRIPTOR_test_x64" +0x0 ".idata$6" + test_x86.dll: Format: Short Import File Architecture: I386 @@ -129,6 +142,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "test_x86_NULL_THUNK_DATA" + test_x86.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -147,6 +164,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "__NULL_IMPORT_DESCRIPTOR" + test_x86.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -178,6 +199,11 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "__IMPORT_DESCRIPTOR_test_x86" +0x0 ".idata$6" + test_arm64ec.dll: Format: Short Import File Architecture: Unknown @@ -206,6 +232,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "test_arm64ec_NULL_THUNK_DATA" + test_arm64ec.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -224,6 +254,10 @@ Symbols Dynamic symbols +Symbol map +0x0 "@comp.id" +0x0 "__NULL_IMPORT_DESCRIPTOR" + test_arm64ec.dll: Format: Coff Little-endian 32-bit Kind: Relocatable @@ -254,3 +288,8 @@ Symbols (10, Relocation { kind: ImageOffset, encoding: Generic, size: 20, target: Symbol(SymbolIndex(5)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 "@comp.id" +0x0 "__IMPORT_DESCRIPTOR_test_arm64ec" +0x0 ".idata$6" diff --git a/crates/examples/testfiles/elf/base-aarch64.o.objdump b/crates/examples/testfiles/elf/base-aarch64.o.objdump new file mode 100644 index 00000000..38dcc3f3 --- /dev/null +++ b/crates/examples/testfiles/elf/base-aarch64.o.objdump @@ -0,0 +1,45 @@ +Format: Elf Little-endian 64-bit +Kind: Relocatable +Architecture: Aarch64 +Flags: Elf { os_abi: 0, abi_version: 0, e_flags: 0 } +Relative Address Base: 0 +Entry Address: 0 +0: Section { name: "", address: 0, size: 0, align: 0, kind: Metadata, flags: Elf { sh_flags: 0 } } +1: Section { name: ".text", address: 0, size: 20, align: 4, kind: Text, flags: Elf { sh_flags: 6 } } +2: Section { name: ".rela.text", address: 0, size: 48, align: 8, kind: Metadata, flags: Elf { sh_flags: 40 } } +3: Section { name: ".data", address: 0, size: 0, align: 1, kind: Data, flags: Elf { sh_flags: 3 } } +4: Section { name: ".bss", address: 0, size: 0, align: 1, kind: UninitializedData, flags: Elf { sh_flags: 3 } } +5: Section { name: ".rodata", address: 0, size: d, align: 8, kind: ReadOnlyData, flags: Elf { sh_flags: 2 } } +6: Section { name: ".comment", address: 0, size: 31, align: 1, kind: OtherString, flags: Elf { sh_flags: 30 } } +7: Section { name: ".note.GNU-stack", address: 0, size: 0, align: 1, kind: Other, flags: Elf { sh_flags: 0 } } +8: Section { name: ".symtab", address: 0, size: 120, align: 8, kind: Metadata, flags: Elf { sh_flags: 0 } } +9: Section { name: ".strtab", address: 0, size: 1a, align: 1, kind: Metadata, flags: Elf { sh_flags: 0 } } +10: Section { name: ".shstrtab", address: 0, size: 52, align: 1, kind: Metadata, flags: Elf { sh_flags: 0 } } + +Symbols +0: Symbol { name: "", address: 0, size: 0, kind: Null, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +1: Symbol { name: "base.c", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +2: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(1)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +3: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(3)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +4: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(4)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +5: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(5)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +6: Symbol { name: "$d", address: 0, size: 0, kind: Label, section: Section(SectionIndex(5)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +7: Symbol { name: "$x", address: 0, size: 0, kind: Label, section: Section(SectionIndex(1)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +8: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(7)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +9: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(6)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +10: Symbol { name: "main", address: 0, size: 20, kind: Text, section: Section(SectionIndex(1)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +11: Symbol { name: "printf", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 10, st_other: 0 } } + +.text relocations +(8, Relocation { kind: Elf(113), encoding: Generic, size: 0, target: Symbol(SymbolIndex(5)), addend: 0, implicit_addend: false }) +(c, Relocation { kind: Elf(115), encoding: Generic, size: 0, target: Symbol(SymbolIndex(5)), addend: 0, implicit_addend: false }) +(10, Relocation { kind: PltRelative, encoding: AArch64Call, size: 1a, target: Symbol(SymbolIndex(b)), addend: 0, implicit_addend: false }) + +Dynamic symbols + +Dynamic relocations + +Symbol map +0x0 "$d" +0x0 "$x" +0x0 "main" diff --git a/crates/examples/testfiles/elf/base-aarch64.o.readobj b/crates/examples/testfiles/elf/base-aarch64.o.readobj new file mode 100644 index 00000000..e8c64b46 --- /dev/null +++ b/crates/examples/testfiles/elf/base-aarch64.o.readobj @@ -0,0 +1,314 @@ +Format: ELF 64-bit +FileHeader { + Ident { + Magic: [7F, 45, 4C, 46] + Class: ELFCLASS64 (0x2) + Data: ELFDATA2LSB (0x1) + Version: EV_CURRENT (0x1) + OsAbi: ELFOSABI_SYSV (0x0) + AbiVersion: 0x0 + Unused: [0, 0, 0, 0, 0, 0, 0] + } + Type: ET_REL (0x1) + Machine: EM_AARCH64 (0xB7) + Version: EV_CURRENT (0x1) + Type: ET_REL (0x1) + Entry: 0x0 + ProgramHeaderOffset: 0x0 + SectionHeaderOffset: 0x280 + Flags: 0x0 + HeaderSize: 0x40 + ProgramHeaderEntrySize: 0x0 + ProgramHeaderCount: 0 + SectionHeaderEntrySize: 0x40 + SectionHeaderCount: 11 + SectionHeaderStringTableIndex: 10 +} +SectionHeader { + Index: 0 + Name: "" (0x0) + Type: SHT_NULL (0x0) + Flags: 0x0 + Address: 0x0 + Offset: 0x0 + Size: 0x0 + Link: 0 + Info: 0 + AddressAlign: 0x0 + EntrySize: 0x0 +} +SectionHeader { + Index: 1 + Name: ".text" (0x20) + Type: SHT_PROGBITS (0x1) + Flags: 0x6 + SHF_ALLOC (0x2) + SHF_EXECINSTR (0x4) + Address: 0x0 + Offset: 0x40 + Size: 0x20 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 +} +SectionHeader { + Index: 2 + Name: ".rela.text" (0x1B) + Type: SHT_RELA (0x4) + Flags: 0x40 + SHF_INFO_LINK (0x40) + Address: 0x0 + Offset: 0x1E0 + Size: 0x48 + Link: 8 + Info: 1 + AddressAlign: 0x8 + EntrySize: 0x18 + Relocation { + Offset: 0x8 + Type: R_AARCH64_ADR_PREL_PG_HI21 (0x113) + Symbol: "" (0x5) + } + Relocation { + Offset: 0xC + Type: R_AARCH64_ADD_ABS_LO12_NC (0x115) + Symbol: "" (0x5) + } + Relocation { + Offset: 0x10 + Type: R_AARCH64_CALL26 (0x11B) + Symbol: "printf" (0xB) + } +} +SectionHeader { + Index: 3 + Name: ".data" (0x26) + Type: SHT_PROGBITS (0x1) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x0 + Offset: 0x60 + Size: 0x0 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 4 + Name: ".bss" (0x2C) + Type: SHT_NOBITS (0x8) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x0 + Offset: 0x60 + Size: 0x0 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 5 + Name: ".rodata" (0x31) + Type: SHT_PROGBITS (0x1) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x0 + Offset: 0x60 + Size: 0xD + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x0 +} +SectionHeader { + Index: 6 + Name: ".comment" (0x39) + Type: SHT_PROGBITS (0x1) + Flags: 0x30 + SHF_MERGE (0x10) + SHF_STRINGS (0x20) + Address: 0x0 + Offset: 0x6D + Size: 0x31 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x1 +} +SectionHeader { + Index: 7 + Name: ".note.GNU-stack" (0x42) + Type: SHT_PROGBITS (0x1) + Flags: 0x0 + Address: 0x0 + Offset: 0x9E + Size: 0x0 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 8 + Name: ".symtab" (0x1) + Type: SHT_SYMTAB (0x2) + Flags: 0x0 + Address: 0x0 + Offset: 0xA0 + Size: 0x120 + Link: 9 + Info: 10 + AddressAlign: 0x8 + EntrySize: 0x18 + Symbol { + Index: 0 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 1 + Name: "base.c" (0x1) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 2 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 1 + } + Symbol { + Index: 3 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 3 + } + Symbol { + Index: 4 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 4 + } + Symbol { + Index: 5 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 5 + } + Symbol { + Index: 6 + Name: "$d" (0x8) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 5 + } + Symbol { + Index: 7 + Name: "$x" (0xB) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 1 + } + Symbol { + Index: 8 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 7 + } + Symbol { + Index: 9 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 6 + } + Symbol { + Index: 10 + Name: "main" (0xE) + Value: 0x0 + Size: 0x20 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 1 + } + Symbol { + Index: 11 + Name: "printf" (0x13) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } +} +SectionHeader { + Index: 9 + Name: ".strtab" (0x9) + Type: SHT_STRTAB (0x3) + Flags: 0x0 + Address: 0x0 + Offset: 0x1C0 + Size: 0x1A + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 10 + Name: ".shstrtab" (0x11) + Type: SHT_STRTAB (0x3) + Flags: 0x0 + Address: 0x0 + Offset: 0x228 + Size: 0x52 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} diff --git a/crates/examples/testfiles/elf/base-aarch64.objdump b/crates/examples/testfiles/elf/base-aarch64.objdump new file mode 100644 index 00000000..26f6b8ba --- /dev/null +++ b/crates/examples/testfiles/elf/base-aarch64.objdump @@ -0,0 +1,214 @@ +Format: Elf Little-endian 64-bit +Kind: Dynamic +Architecture: Aarch64 +Flags: Elf { os_abi: 0, abi_version: 0, e_flags: 0 } +Relative Address Base: 0 +Entry Address: 620 +Build ID: [f7, 5e, 1f, d9, 4, 9a, 3f, cb, 21, dc, 15, f2, 7b, 5, 32, d8, 61, cf, 16, 2] +Segment { address: 0, size: 7fc } +Segment { address: 10d80, size: 298 } +0: Section { name: "", address: 0, size: 0, align: 0, kind: Metadata, flags: Elf { sh_flags: 0 } } +1: Section { name: ".interp", address: 200, size: 1b, align: 1, kind: ReadOnlyData, flags: Elf { sh_flags: 2 } } +2: Section { name: ".note.ABI-tag", address: 21c, size: 20, align: 4, kind: Note, flags: Elf { sh_flags: 2 } } +3: Section { name: ".note.gnu.build-id", address: 23c, size: 24, align: 4, kind: Note, flags: Elf { sh_flags: 2 } } +4: Section { name: ".gnu.hash", address: 260, size: 1c, align: 8, kind: Elf(6ffffff6), flags: Elf { sh_flags: 2 } } +5: Section { name: ".dynsym", address: 280, size: f0, align: 8, kind: Metadata, flags: Elf { sh_flags: 2 } } +6: Section { name: ".dynstr", address: 370, size: 89, align: 1, kind: Metadata, flags: Elf { sh_flags: 2 } } +7: Section { name: ".gnu.version", address: 3fa, size: 14, align: 2, kind: Elf(6fffffff), flags: Elf { sh_flags: 2 } } +8: Section { name: ".gnu.version_r", address: 410, size: 20, align: 8, kind: Elf(6ffffffe), flags: Elf { sh_flags: 2 } } +9: Section { name: ".rela.dyn", address: 430, size: f0, align: 8, kind: Metadata, flags: Elf { sh_flags: 2 } } +10: Section { name: ".rela.plt", address: 520, size: 78, align: 8, kind: Metadata, flags: Elf { sh_flags: 42 } } +11: Section { name: ".init", address: 598, size: 14, align: 4, kind: Text, flags: Elf { sh_flags: 6 } } +12: Section { name: ".plt", address: 5b0, size: 70, align: 10, kind: Text, flags: Elf { sh_flags: 6 } } +13: Section { name: ".text", address: 620, size: 1ac, align: 8, kind: Text, flags: Elf { sh_flags: 6 } } +14: Section { name: ".fini", address: 7cc, size: 10, align: 4, kind: Text, flags: Elf { sh_flags: 6 } } +15: Section { name: ".rodata", address: 7e0, size: 15, align: 8, kind: ReadOnlyData, flags: Elf { sh_flags: 2 } } +16: Section { name: ".eh_frame", address: 7f8, size: 4, align: 4, kind: ReadOnlyData, flags: Elf { sh_flags: 2 } } +17: Section { name: ".init_array", address: 10d80, size: 8, align: 8, kind: Elf(e), flags: Elf { sh_flags: 3 } } +18: Section { name: ".fini_array", address: 10d88, size: 8, align: 8, kind: Elf(f), flags: Elf { sh_flags: 3 } } +19: Section { name: ".dynamic", address: 10d90, size: 1f0, align: 8, kind: Metadata, flags: Elf { sh_flags: 3 } } +20: Section { name: ".got", address: 10f80, size: 80, align: 8, kind: Data, flags: Elf { sh_flags: 3 } } +21: Section { name: ".data", address: 11000, size: 10, align: 8, kind: Data, flags: Elf { sh_flags: 3 } } +22: Section { name: ".bss", address: 11010, size: 8, align: 1, kind: UninitializedData, flags: Elf { sh_flags: 3 } } +23: Section { name: ".comment", address: 0, size: 30, align: 1, kind: OtherString, flags: Elf { sh_flags: 30 } } +24: Section { name: ".symtab", address: 0, size: 840, align: 8, kind: Metadata, flags: Elf { sh_flags: 0 } } +25: Section { name: ".strtab", address: 0, size: 347, align: 1, kind: Metadata, flags: Elf { sh_flags: 0 } } +26: Section { name: ".shstrtab", address: 0, size: ec, align: 1, kind: Metadata, flags: Elf { sh_flags: 0 } } + +Symbols +0: Symbol { name: "", address: 0, size: 0, kind: Null, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +1: Symbol { name: "", address: 200, size: 0, kind: Section, section: Section(SectionIndex(1)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +2: Symbol { name: "", address: 21c, size: 0, kind: Section, section: Section(SectionIndex(2)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +3: Symbol { name: "", address: 23c, size: 0, kind: Section, section: Section(SectionIndex(3)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +4: Symbol { name: "", address: 260, size: 0, kind: Section, section: Section(SectionIndex(4)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +5: Symbol { name: "", address: 280, size: 0, kind: Section, section: Section(SectionIndex(5)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +6: Symbol { name: "", address: 370, size: 0, kind: Section, section: Section(SectionIndex(6)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +7: Symbol { name: "", address: 3fa, size: 0, kind: Section, section: Section(SectionIndex(7)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +8: Symbol { name: "", address: 410, size: 0, kind: Section, section: Section(SectionIndex(8)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +9: Symbol { name: "", address: 430, size: 0, kind: Section, section: Section(SectionIndex(9)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +10: Symbol { name: "", address: 520, size: 0, kind: Section, section: Section(SectionIndex(a)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +11: Symbol { name: "", address: 598, size: 0, kind: Section, section: Section(SectionIndex(b)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +12: Symbol { name: "", address: 5b0, size: 0, kind: Section, section: Section(SectionIndex(c)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +13: Symbol { name: "", address: 620, size: 0, kind: Section, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +14: Symbol { name: "", address: 7cc, size: 0, kind: Section, section: Section(SectionIndex(e)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +15: Symbol { name: "", address: 7e0, size: 0, kind: Section, section: Section(SectionIndex(f)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +16: Symbol { name: "", address: 7f8, size: 0, kind: Section, section: Section(SectionIndex(10)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +17: Symbol { name: "", address: 10d80, size: 0, kind: Section, section: Section(SectionIndex(11)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +18: Symbol { name: "", address: 10d88, size: 0, kind: Section, section: Section(SectionIndex(12)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +19: Symbol { name: "", address: 10d90, size: 0, kind: Section, section: Section(SectionIndex(13)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +20: Symbol { name: "", address: 10f80, size: 0, kind: Section, section: Section(SectionIndex(14)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +21: Symbol { name: "", address: 11000, size: 0, kind: Section, section: Section(SectionIndex(15)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +22: Symbol { name: "", address: 11010, size: 0, kind: Section, section: Section(SectionIndex(16)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +23: Symbol { name: "", address: 0, size: 0, kind: Section, section: Section(SectionIndex(17)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +24: Symbol { name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/Scrt1.o", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +25: Symbol { name: "$d", address: 21c, size: 0, kind: Label, section: Section(SectionIndex(2)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +26: Symbol { name: "$x", address: 620, size: 0, kind: Label, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +27: Symbol { name: "$d", address: 7e0, size: 0, kind: Label, section: Section(SectionIndex(f)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +28: Symbol { name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/crti.o", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +29: Symbol { name: "$x", address: 658, size: 0, kind: Label, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +30: Symbol { name: "call_weak_fn", address: 658, size: 14, kind: Text, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 2, st_other: 0 } } +31: Symbol { name: "$x", address: 598, size: 0, kind: Label, section: Section(SectionIndex(b)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +32: Symbol { name: "$x", address: 7cc, size: 0, kind: Label, section: Section(SectionIndex(e)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +33: Symbol { name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/crtn.o", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +34: Symbol { name: "$x", address: 5a4, size: 0, kind: Label, section: Section(SectionIndex(b)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +35: Symbol { name: "$x", address: 7d4, size: 0, kind: Label, section: Section(SectionIndex(e)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +36: Symbol { name: "crtstuff.c", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +37: Symbol { name: "$x", address: 670, size: 0, kind: Label, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +38: Symbol { name: "deregister_tm_clones", address: 670, size: 0, kind: Text, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 2, st_other: 0 } } +39: Symbol { name: "register_tm_clones", address: 6a0, size: 0, kind: Text, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 2, st_other: 0 } } +40: Symbol { name: "$d", address: 11008, size: 0, kind: Label, section: Section(SectionIndex(15)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +41: Symbol { name: "__do_global_dtors_aux", address: 6d8, size: 0, kind: Text, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 2, st_other: 0 } } +42: Symbol { name: "completed.8500", address: 11010, size: 1, kind: Data, section: Section(SectionIndex(16)), scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +43: Symbol { name: "$d", address: 10d88, size: 0, kind: Label, section: Section(SectionIndex(12)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +44: Symbol { name: "__do_global_dtors_aux_fini_array_entry", address: 10d88, size: 0, kind: Data, section: Section(SectionIndex(12)), scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +45: Symbol { name: "frame_dummy", address: 720, size: 0, kind: Text, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 2, st_other: 0 } } +46: Symbol { name: "$d", address: 10d80, size: 0, kind: Label, section: Section(SectionIndex(11)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +47: Symbol { name: "__frame_dummy_init_array_entry", address: 10d80, size: 0, kind: Data, section: Section(SectionIndex(11)), scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +48: Symbol { name: "$d", address: 11010, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +49: Symbol { name: "base.c", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +50: Symbol { name: "$d", address: 7e8, size: 0, kind: Label, section: Section(SectionIndex(f)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +51: Symbol { name: "$x", address: 724, size: 0, kind: Label, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +52: Symbol { name: "elf-init.oS", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +53: Symbol { name: "$x", address: 748, size: 0, kind: Label, section: Section(SectionIndex(d)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +54: Symbol { name: "crtstuff.c", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +55: Symbol { name: "$d", address: 7f8, size: 0, kind: Label, section: Section(SectionIndex(10)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +56: Symbol { name: "__FRAME_END__", address: 7f8, size: 0, kind: Data, section: Section(SectionIndex(10)), scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +57: Symbol { name: "", address: 0, size: 0, kind: File, section: None, scope: Compilation, weak: false, flags: Elf { st_info: 4, st_other: 0 } } +58: Symbol { name: "__init_array_end", address: 10d88, size: 0, kind: Label, section: Section(SectionIndex(11)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +59: Symbol { name: "_DYNAMIC", address: 10d90, size: 0, kind: Data, section: Absolute, scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +60: Symbol { name: "__init_array_start", address: 10d80, size: 0, kind: Label, section: Section(SectionIndex(11)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +61: Symbol { name: "_GLOBAL_OFFSET_TABLE_", address: 10fc0, size: 0, kind: Data, section: Absolute, scope: Compilation, weak: false, flags: Elf { st_info: 1, st_other: 0 } } +62: Symbol { name: "$x", address: 5b0, size: 0, kind: Label, section: Section(SectionIndex(c)), scope: Compilation, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +63: Symbol { name: "__libc_csu_fini", address: 7c8, size: 4, kind: Text, section: Section(SectionIndex(d)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +64: Symbol { name: "_ITM_deregisterTMCloneTable", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +65: Symbol { name: "data_start", address: 11000, size: 0, kind: Label, section: Section(SectionIndex(15)), scope: Dynamic, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +66: Symbol { name: "__bss_start__", address: 11010, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +67: Symbol { name: "__cxa_finalize@@GLIBC_2.17", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 22, st_other: 0 } } +68: Symbol { name: "_bss_end__", address: 11018, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +69: Symbol { name: "_edata", address: 11010, size: 0, kind: Label, section: Section(SectionIndex(15)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +70: Symbol { name: "_fini", address: 7cc, size: 0, kind: Text, section: Section(SectionIndex(e)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +71: Symbol { name: "__bss_end__", address: 11018, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +72: Symbol { name: "__libc_start_main@@GLIBC_2.17", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +73: Symbol { name: "__data_start", address: 11000, size: 0, kind: Label, section: Section(SectionIndex(15)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +74: Symbol { name: "__gmon_start__", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +75: Symbol { name: "__dso_handle", address: 11008, size: 0, kind: Data, section: Section(SectionIndex(15)), scope: Linkage, weak: false, flags: Elf { st_info: 11, st_other: 2 } } +76: Symbol { name: "abort@@GLIBC_2.17", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +77: Symbol { name: "_IO_stdin_used", address: 7e0, size: 4, kind: Data, section: Section(SectionIndex(f)), scope: Dynamic, weak: false, flags: Elf { st_info: 11, st_other: 0 } } +78: Symbol { name: "__libc_csu_init", address: 748, size: 80, kind: Text, section: Section(SectionIndex(d)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +79: Symbol { name: "_end", address: 11018, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +80: Symbol { name: "_start", address: 620, size: 0, kind: Text, section: Section(SectionIndex(d)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +81: Symbol { name: "__end__", address: 11018, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +82: Symbol { name: "__bss_start", address: 11010, size: 0, kind: Label, section: Section(SectionIndex(16)), scope: Dynamic, weak: false, flags: Elf { st_info: 10, st_other: 0 } } +83: Symbol { name: "main", address: 724, size: 20, kind: Text, section: Section(SectionIndex(d)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +84: Symbol { name: "__TMC_END__", address: 11010, size: 0, kind: Data, section: Section(SectionIndex(15)), scope: Linkage, weak: false, flags: Elf { st_info: 11, st_other: 2 } } +85: Symbol { name: "_ITM_registerTMCloneTable", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +86: Symbol { name: "printf@@GLIBC_2.17", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +87: Symbol { name: "_init", address: 598, size: 0, kind: Text, section: Section(SectionIndex(b)), scope: Dynamic, weak: false, flags: Elf { st_info: 12, st_other: 0 } } + +Dynamic symbols +0: Symbol { name: "", address: 0, size: 0, kind: Null, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 0, st_other: 0 } } +1: Symbol { name: "", address: 598, size: 0, kind: Section, section: Section(SectionIndex(b)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +2: Symbol { name: "", address: 11000, size: 0, kind: Section, section: Section(SectionIndex(15)), scope: Compilation, weak: false, flags: Elf { st_info: 3, st_other: 0 } } +3: Symbol { name: "_ITM_deregisterTMCloneTable", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +4: Symbol { name: "__cxa_finalize", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 22, st_other: 0 } } +5: Symbol { name: "__libc_start_main", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +6: Symbol { name: "__gmon_start__", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +7: Symbol { name: "abort", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } +8: Symbol { name: "_ITM_registerTMCloneTable", address: 0, size: 0, kind: Label, section: Undefined, scope: Unknown, weak: true, flags: Elf { st_info: 20, st_other: 0 } } +9: Symbol { name: "printf", address: 0, size: 0, kind: Text, section: Undefined, scope: Unknown, weak: false, flags: Elf { st_info: 12, st_other: 0 } } + +Dynamic relocations +(10d80, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 720, implicit_addend: false }) +(10d88, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 6d8, implicit_addend: false }) +(10fc8, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 7c8, implicit_addend: false }) +(10fe8, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 748, implicit_addend: false }) +(10ff0, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 724, implicit_addend: false }) +(11008, Relocation { kind: Elf(403), encoding: Generic, size: 0, target: Absolute, addend: 11008, implicit_addend: false }) +(10fd0, Relocation { kind: Elf(401), encoding: Generic, size: 0, target: Symbol(SymbolIndex(3)), addend: 0, implicit_addend: false }) +(10fd8, Relocation { kind: Elf(401), encoding: Generic, size: 0, target: Symbol(SymbolIndex(4)), addend: 0, implicit_addend: false }) +(10fe0, Relocation { kind: Elf(401), encoding: Generic, size: 0, target: Symbol(SymbolIndex(6)), addend: 0, implicit_addend: false }) +(10ff8, Relocation { kind: Elf(401), encoding: Generic, size: 0, target: Symbol(SymbolIndex(8)), addend: 0, implicit_addend: false }) +(10f98, Relocation { kind: Elf(402), encoding: Generic, size: 0, target: Symbol(SymbolIndex(4)), addend: 0, implicit_addend: false }) +(10fa0, Relocation { kind: Elf(402), encoding: Generic, size: 0, target: Symbol(SymbolIndex(5)), addend: 0, implicit_addend: false }) +(10fa8, Relocation { kind: Elf(402), encoding: Generic, size: 0, target: Symbol(SymbolIndex(6)), addend: 0, implicit_addend: false }) +(10fb0, Relocation { kind: Elf(402), encoding: Generic, size: 0, target: Symbol(SymbolIndex(7)), addend: 0, implicit_addend: false }) +(10fb8, Relocation { kind: Elf(402), encoding: Generic, size: 0, target: Symbol(SymbolIndex(9)), addend: 0, implicit_addend: false }) + +Import { library: "", name: "_ITM_deregisterTMCloneTable" } +Import { library: "", name: "__cxa_finalize" } +Import { library: "", name: "__libc_start_main" } +Import { library: "", name: "__gmon_start__" } +Import { library: "", name: "abort" } +Import { library: "", name: "_ITM_registerTMCloneTable" } +Import { library: "", name: "printf" } + +Symbol map +0x21c "$d" +0x598 "$x" +0x598 "_init" +0x5a4 "$x" +0x5b0 "$x" +0x620 "$x" +0x620 "_start" +0x658 "$x" +0x658 "call_weak_fn" +0x670 "$x" +0x670 "deregister_tm_clones" +0x6a0 "register_tm_clones" +0x6d8 "__do_global_dtors_aux" +0x720 "frame_dummy" +0x724 "$x" +0x724 "main" +0x748 "$x" +0x748 "__libc_csu_init" +0x7c8 "__libc_csu_fini" +0x7cc "$x" +0x7cc "_fini" +0x7d4 "$x" +0x7e0 "$d" +0x7e0 "_IO_stdin_used" +0x7e8 "$d" +0x7f8 "$d" +0x7f8 "__FRAME_END__" +0x10d80 "$d" +0x10d80 "__frame_dummy_init_array_entry" +0x10d80 "__init_array_start" +0x10d88 "$d" +0x10d88 "__do_global_dtors_aux_fini_array_entry" +0x10d88 "__init_array_end" +0x10d90 "_DYNAMIC" +0x10fc0 "_GLOBAL_OFFSET_TABLE_" +0x11000 "data_start" +0x11000 "__data_start" +0x11008 "$d" +0x11008 "__dso_handle" +0x11010 "completed.8500" +0x11010 "$d" +0x11010 "__bss_start__" +0x11010 "_edata" +0x11010 "__bss_start" +0x11010 "__TMC_END__" +0x11018 "_bss_end__" +0x11018 "__bss_end__" +0x11018 "_end" +0x11018 "__end__" diff --git a/crates/examples/testfiles/elf/base-aarch64.readobj b/crates/examples/testfiles/elf/base-aarch64.readobj new file mode 100644 index 00000000..16f8b684 --- /dev/null +++ b/crates/examples/testfiles/elf/base-aarch64.readobj @@ -0,0 +1,1877 @@ +Format: ELF 64-bit +FileHeader { + Ident { + Magic: [7F, 45, 4C, 46] + Class: ELFCLASS64 (0x2) + Data: ELFDATA2LSB (0x1) + Version: EV_CURRENT (0x1) + OsAbi: ELFOSABI_SYSV (0x0) + AbiVersion: 0x0 + Unused: [0, 0, 0, 0, 0, 0, 0] + } + Type: ET_DYN (0x3) + Machine: EM_AARCH64 (0xB7) + Version: EV_CURRENT (0x1) + Type: ET_DYN (0x3) + Entry: 0x620 + ProgramHeaderOffset: 0x40 + SectionHeaderOffset: 0x1CB8 + Flags: 0x0 + HeaderSize: 0x40 + ProgramHeaderEntrySize: 0x38 + ProgramHeaderCount: 8 + SectionHeaderEntrySize: 0x40 + SectionHeaderCount: 27 + SectionHeaderStringTableIndex: 26 +} +ProgramHeader { + Type: PT_PHDR (0x6) + Offset: 0x40 + VirtualAddress: 0x40 + PhysicalAddress: 0x40 + FileSize: 0x1C0 + MemorySize: 0x1C0 + Flags: 0x4 + PF_R (0x4) + Align: 0x8 +} +ProgramHeader { + Type: PT_INTERP (0x3) + Offset: 0x200 + VirtualAddress: 0x200 + PhysicalAddress: 0x200 + FileSize: 0x1B + MemorySize: 0x1B + Flags: 0x4 + PF_R (0x4) + Align: 0x1 +} +ProgramHeader { + Type: PT_LOAD (0x1) + Offset: 0x0 + VirtualAddress: 0x0 + PhysicalAddress: 0x0 + FileSize: 0x7FC + MemorySize: 0x7FC + Flags: 0x5 + PF_X (0x1) + PF_R (0x4) + Align: 0x10000 +} +ProgramHeader { + Type: PT_LOAD (0x1) + Offset: 0xD80 + VirtualAddress: 0x10D80 + PhysicalAddress: 0x10D80 + FileSize: 0x290 + MemorySize: 0x298 + Flags: 0x6 + PF_W (0x2) + PF_R (0x4) + Align: 0x10000 +} +ProgramHeader { + Type: PT_DYNAMIC (0x2) + Offset: 0xD90 + VirtualAddress: 0x10D90 + PhysicalAddress: 0x10D90 + FileSize: 0x1F0 + MemorySize: 0x1F0 + Flags: 0x6 + PF_W (0x2) + PF_R (0x4) + Align: 0x8 + Dynamic { + Tag: DT_NEEDED (0x1) + Value: "libc.so.6" (0x1) + } + Dynamic { + Tag: DT_INIT (0xC) + Value: 0x598 + } + Dynamic { + Tag: DT_FINI (0xD) + Value: 0x7CC + } + Dynamic { + Tag: DT_INIT_ARRAY (0x19) + Value: 0x10D80 + } + Dynamic { + Tag: DT_INIT_ARRAYSZ (0x1B) + Value: 0x8 + } + Dynamic { + Tag: DT_FINI_ARRAY (0x1A) + Value: 0x10D88 + } + Dynamic { + Tag: DT_FINI_ARRAYSZ (0x1C) + Value: 0x8 + } + Dynamic { + Tag: DT_GNU_HASH (0x6FFFFEF5) + Value: 0x260 + } + Dynamic { + Tag: DT_STRTAB (0x5) + Value: 0x370 + } + Dynamic { + Tag: DT_SYMTAB (0x6) + Value: 0x280 + } + Dynamic { + Tag: DT_STRSZ (0xA) + Value: 0x89 + } + Dynamic { + Tag: DT_SYMENT (0xB) + Value: 0x18 + } + Dynamic { + Tag: DT_DEBUG (0x15) + Value: 0x0 + } + Dynamic { + Tag: DT_PLTGOT (0x3) + Value: 0x10F80 + } + Dynamic { + Tag: DT_PLTRELSZ (0x2) + Value: 0x78 + } + Dynamic { + Tag: DT_PLTREL (0x14) + Value: 0x7 + } + Dynamic { + Tag: DT_JMPREL (0x17) + Value: 0x520 + } + Dynamic { + Tag: DT_RELA (0x7) + Value: 0x430 + } + Dynamic { + Tag: DT_RELASZ (0x8) + Value: 0xF0 + } + Dynamic { + Tag: DT_RELAENT (0x9) + Value: 0x18 + } + Dynamic { + Tag: DT_FLAGS (0x1E) + Value: 0x8 + DF_BIND_NOW (0x8) + } + Dynamic { + Tag: DT_FLAGS_1 (0x6FFFFFFB) + Value: 0x8000001 + DF_1_NOW (0x1) + DF_1_PIE (0x8000000) + } + Dynamic { + Tag: DT_VERNEED (0x6FFFFFFE) + Value: 0x410 + } + Dynamic { + Tag: DT_VERNEEDNUM (0x6FFFFFFF) + Value: 0x1 + } + Dynamic { + Tag: DT_VERSYM (0x6FFFFFF0) + Value: 0x3FA + } + Dynamic { + Tag: DT_RELACOUNT (0x6FFFFFF9) + Value: 0x6 + } + Dynamic { + Tag: DT_NULL (0x0) + Value: 0x0 + } +} +ProgramHeader { + Type: PT_NOTE (0x4) + Offset: 0x21C + VirtualAddress: 0x21C + PhysicalAddress: 0x21C + FileSize: 0x44 + MemorySize: 0x44 + Flags: 0x4 + PF_R (0x4) + Align: 0x4 + Note { + Name: "GNU" (0x4) + Type: NT_GNU_ABI_TAG (0x1) + Desc: [0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0] + } + Note { + Name: "GNU" (0x4) + Type: NT_GNU_BUILD_ID (0x3) + Desc: [F7, 5E, 1F, D9, 4, 9A, 3F, CB, 21, DC, 15, F2, 7B, 5, 32, D8, 61, CF, 16, 2] + } +} +ProgramHeader { + Type: PT_GNU_STACK (0x6474E551) + Offset: 0x0 + VirtualAddress: 0x0 + PhysicalAddress: 0x0 + FileSize: 0x0 + MemorySize: 0x0 + Flags: 0x6 + PF_W (0x2) + PF_R (0x4) + Align: 0x10 +} +ProgramHeader { + Type: PT_GNU_RELRO (0x6474E552) + Offset: 0xD80 + VirtualAddress: 0x10D80 + PhysicalAddress: 0x10D80 + FileSize: 0x280 + MemorySize: 0x280 + Flags: 0x4 + PF_R (0x4) + Align: 0x1 +} +SectionHeader { + Index: 0 + Name: "" (0x0) + Type: SHT_NULL (0x0) + Flags: 0x0 + Address: 0x0 + Offset: 0x0 + Size: 0x0 + Link: 0 + Info: 0 + AddressAlign: 0x0 + EntrySize: 0x0 +} +SectionHeader { + Index: 1 + Name: ".interp" (0x1B) + Type: SHT_PROGBITS (0x1) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x200 + Offset: 0x200 + Size: 0x1B + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 2 + Name: ".note.ABI-tag" (0x23) + Type: SHT_NOTE (0x7) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x21C + Offset: 0x21C + Size: 0x20 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 + Note { + Name: "GNU" (0x4) + Type: NT_GNU_ABI_TAG (0x1) + Desc: [0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0] + } +} +SectionHeader { + Index: 3 + Name: ".note.gnu.build-id" (0x31) + Type: SHT_NOTE (0x7) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x23C + Offset: 0x23C + Size: 0x24 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 + Note { + Name: "GNU" (0x4) + Type: NT_GNU_BUILD_ID (0x3) + Desc: [F7, 5E, 1F, D9, 4, 9A, 3F, CB, 21, DC, 15, F2, 7B, 5, 32, D8, 61, CF, 16, 2] + } +} +SectionHeader { + Index: 4 + Name: ".gnu.hash" (0x44) + Type: SHT_GNU_HASH (0x6FFFFFF6) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x260 + Offset: 0x260 + Size: 0x1C + Link: 5 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x0 + GnuHash { + BucketCount: 1 + SymbolBase: 1 + BloomCount: 1 + BloomShift: 0 + } +} +SectionHeader { + Index: 5 + Name: ".dynsym" (0x4E) + Type: SHT_DYNSYM (0xB) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x280 + Offset: 0x280 + Size: 0xF0 + Link: 6 + Info: 3 + AddressAlign: 0x8 + EntrySize: 0x18 + Symbol { + Index: 0 + Name: "" (0x0) + Version: VER_NDX_LOCAL (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 1 + Name: "" (0x0) + Version: VER_NDX_LOCAL (0x0) + Value: 0x598 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 11 + } + Symbol { + Index: 2 + Name: "" (0x0) + Version: VER_NDX_LOCAL (0x0) + Value: 0x11000 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 3 + Name: "_ITM_deregisterTMCloneTable" (0x44) + Version: VER_NDX_LOCAL (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 4 + Name: "__cxa_finalize" (0x12) + Version: "GLIBC_2.17" (0x2) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 5 + Name: "__libc_start_main" (0x21) + Version: "GLIBC_2.17" (0x2) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 6 + Name: "__gmon_start__" (0x60) + Version: VER_NDX_LOCAL (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 7 + Name: "abort" (0x33) + Version: "GLIBC_2.17" (0x2) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 8 + Name: "_ITM_registerTMCloneTable" (0x6F) + Version: VER_NDX_LOCAL (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 9 + Name: "printf" (0xB) + Version: "GLIBC_2.17" (0x2) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } +} +SectionHeader { + Index: 6 + Name: ".dynstr" (0x56) + Type: SHT_STRTAB (0x3) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x370 + Offset: 0x370 + Size: 0x89 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 7 + Name: ".gnu.version" (0x5E) + Type: SHT_GNU_VERSYM (0x6FFFFFFF) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x3FA + Offset: 0x3FA + Size: 0x14 + Link: 5 + Info: 0 + AddressAlign: 0x2 + EntrySize: 0x2 + VersionSymbol { + Index: 0 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 1 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 2 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 3 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 4 + Version: "GLIBC_2.17" (0x2) + } + VersionSymbol { + Index: 5 + Version: "GLIBC_2.17" (0x2) + } + VersionSymbol { + Index: 6 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 7 + Version: "GLIBC_2.17" (0x2) + } + VersionSymbol { + Index: 8 + Version: VER_NDX_LOCAL (0x0) + } + VersionSymbol { + Index: 9 + Version: "GLIBC_2.17" (0x2) + } +} +SectionHeader { + Index: 8 + Name: ".gnu.version_r" (0x6B) + Type: SHT_GNU_VERNEED (0x6FFFFFFE) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x410 + Offset: 0x410 + Size: 0x20 + Link: 6 + Info: 1 + AddressAlign: 0x8 + EntrySize: 0x0 + VersionNeed { + Version: 1 + AuxCount: 1 + Filename: "libc.so.6" (0x1) + AuxOffset: 16 + NextOffset: 0 + Aux { + Hash: 0x6969197 + Flags: 0x0 + Index: 2 + Name: "GLIBC_2.17" (0x39) + NextOffset: 0 + } + } +} +SectionHeader { + Index: 9 + Name: ".rela.dyn" (0x7A) + Type: SHT_RELA (0x4) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x430 + Offset: 0x430 + Size: 0xF0 + Link: 5 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x18 + Relocation { + Offset: 0x10D80 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x720 + } + Relocation { + Offset: 0x10D88 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x6D8 + } + Relocation { + Offset: 0x10FC8 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x7C8 + } + Relocation { + Offset: 0x10FE8 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x748 + } + Relocation { + Offset: 0x10FF0 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x724 + } + Relocation { + Offset: 0x11008 + Type: R_AARCH64_RELATIVE (0x403) + Symbol: "" (0x0) + Addend: 0x11008 + } + Relocation { + Offset: 0x10FD0 + Type: R_AARCH64_GLOB_DAT (0x401) + Symbol: "_ITM_deregisterTMCloneTable" (0x3) + } + Relocation { + Offset: 0x10FD8 + Type: R_AARCH64_GLOB_DAT (0x401) + Symbol: "__cxa_finalize" (0x4) + } + Relocation { + Offset: 0x10FE0 + Type: R_AARCH64_GLOB_DAT (0x401) + Symbol: "__gmon_start__" (0x6) + } + Relocation { + Offset: 0x10FF8 + Type: R_AARCH64_GLOB_DAT (0x401) + Symbol: "_ITM_registerTMCloneTable" (0x8) + } +} +SectionHeader { + Index: 10 + Name: ".rela.plt" (0x84) + Type: SHT_RELA (0x4) + Flags: 0x42 + SHF_ALLOC (0x2) + SHF_INFO_LINK (0x40) + Address: 0x520 + Offset: 0x520 + Size: 0x78 + Link: 5 + Info: 20 + AddressAlign: 0x8 + EntrySize: 0x18 + Relocation { + Offset: 0x10F98 + Type: R_AARCH64_JUMP_SLOT (0x402) + Symbol: "__cxa_finalize" (0x4) + } + Relocation { + Offset: 0x10FA0 + Type: R_AARCH64_JUMP_SLOT (0x402) + Symbol: "__libc_start_main" (0x5) + } + Relocation { + Offset: 0x10FA8 + Type: R_AARCH64_JUMP_SLOT (0x402) + Symbol: "__gmon_start__" (0x6) + } + Relocation { + Offset: 0x10FB0 + Type: R_AARCH64_JUMP_SLOT (0x402) + Symbol: "abort" (0x7) + } + Relocation { + Offset: 0x10FB8 + Type: R_AARCH64_JUMP_SLOT (0x402) + Symbol: "printf" (0x9) + } +} +SectionHeader { + Index: 11 + Name: ".init" (0x8E) + Type: SHT_PROGBITS (0x1) + Flags: 0x6 + SHF_ALLOC (0x2) + SHF_EXECINSTR (0x4) + Address: 0x598 + Offset: 0x598 + Size: 0x14 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 +} +SectionHeader { + Index: 12 + Name: ".plt" (0x89) + Type: SHT_PROGBITS (0x1) + Flags: 0x6 + SHF_ALLOC (0x2) + SHF_EXECINSTR (0x4) + Address: 0x5B0 + Offset: 0x5B0 + Size: 0x70 + Link: 0 + Info: 0 + AddressAlign: 0x10 + EntrySize: 0x10 +} +SectionHeader { + Index: 13 + Name: ".text" (0x94) + Type: SHT_PROGBITS (0x1) + Flags: 0x6 + SHF_ALLOC (0x2) + SHF_EXECINSTR (0x4) + Address: 0x620 + Offset: 0x620 + Size: 0x1AC + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x0 +} +SectionHeader { + Index: 14 + Name: ".fini" (0x9A) + Type: SHT_PROGBITS (0x1) + Flags: 0x6 + SHF_ALLOC (0x2) + SHF_EXECINSTR (0x4) + Address: 0x7CC + Offset: 0x7CC + Size: 0x10 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 +} +SectionHeader { + Index: 15 + Name: ".rodata" (0xA0) + Type: SHT_PROGBITS (0x1) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x7E0 + Offset: 0x7E0 + Size: 0x15 + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x0 +} +SectionHeader { + Index: 16 + Name: ".eh_frame" (0xA8) + Type: SHT_PROGBITS (0x1) + Flags: 0x2 + SHF_ALLOC (0x2) + Address: 0x7F8 + Offset: 0x7F8 + Size: 0x4 + Link: 0 + Info: 0 + AddressAlign: 0x4 + EntrySize: 0x0 +} +SectionHeader { + Index: 17 + Name: ".init_array" (0xB2) + Type: SHT_INIT_ARRAY (0xE) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x10D80 + Offset: 0xD80 + Size: 0x8 + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x8 +} +SectionHeader { + Index: 18 + Name: ".fini_array" (0xBE) + Type: SHT_FINI_ARRAY (0xF) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x10D88 + Offset: 0xD88 + Size: 0x8 + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x8 +} +SectionHeader { + Index: 19 + Name: ".dynamic" (0xCA) + Type: SHT_DYNAMIC (0x6) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x10D90 + Offset: 0xD90 + Size: 0x1F0 + Link: 6 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x10 + Dynamic { + Tag: DT_NEEDED (0x1) + Value: "libc.so.6" (0x1) + } + Dynamic { + Tag: DT_INIT (0xC) + Value: 0x598 + } + Dynamic { + Tag: DT_FINI (0xD) + Value: 0x7CC + } + Dynamic { + Tag: DT_INIT_ARRAY (0x19) + Value: 0x10D80 + } + Dynamic { + Tag: DT_INIT_ARRAYSZ (0x1B) + Value: 0x8 + } + Dynamic { + Tag: DT_FINI_ARRAY (0x1A) + Value: 0x10D88 + } + Dynamic { + Tag: DT_FINI_ARRAYSZ (0x1C) + Value: 0x8 + } + Dynamic { + Tag: DT_GNU_HASH (0x6FFFFEF5) + Value: 0x260 + } + Dynamic { + Tag: DT_STRTAB (0x5) + Value: 0x370 + } + Dynamic { + Tag: DT_SYMTAB (0x6) + Value: 0x280 + } + Dynamic { + Tag: DT_STRSZ (0xA) + Value: 0x89 + } + Dynamic { + Tag: DT_SYMENT (0xB) + Value: 0x18 + } + Dynamic { + Tag: DT_DEBUG (0x15) + Value: 0x0 + } + Dynamic { + Tag: DT_PLTGOT (0x3) + Value: 0x10F80 + } + Dynamic { + Tag: DT_PLTRELSZ (0x2) + Value: 0x78 + } + Dynamic { + Tag: DT_PLTREL (0x14) + Value: 0x7 + } + Dynamic { + Tag: DT_JMPREL (0x17) + Value: 0x520 + } + Dynamic { + Tag: DT_RELA (0x7) + Value: 0x430 + } + Dynamic { + Tag: DT_RELASZ (0x8) + Value: 0xF0 + } + Dynamic { + Tag: DT_RELAENT (0x9) + Value: 0x18 + } + Dynamic { + Tag: DT_FLAGS (0x1E) + Value: 0x8 + DF_BIND_NOW (0x8) + } + Dynamic { + Tag: DT_FLAGS_1 (0x6FFFFFFB) + Value: 0x8000001 + DF_1_NOW (0x1) + DF_1_PIE (0x8000000) + } + Dynamic { + Tag: DT_VERNEED (0x6FFFFFFE) + Value: 0x410 + } + Dynamic { + Tag: DT_VERNEEDNUM (0x6FFFFFFF) + Value: 0x1 + } + Dynamic { + Tag: DT_VERSYM (0x6FFFFFF0) + Value: 0x3FA + } + Dynamic { + Tag: DT_RELACOUNT (0x6FFFFFF9) + Value: 0x6 + } + Dynamic { + Tag: DT_NULL (0x0) + Value: 0x0 + } +} +SectionHeader { + Index: 20 + Name: ".got" (0xD3) + Type: SHT_PROGBITS (0x1) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x10F80 + Offset: 0xF80 + Size: 0x80 + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x8 +} +SectionHeader { + Index: 21 + Name: ".data" (0xD8) + Type: SHT_PROGBITS (0x1) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x11000 + Offset: 0x1000 + Size: 0x10 + Link: 0 + Info: 0 + AddressAlign: 0x8 + EntrySize: 0x0 +} +SectionHeader { + Index: 22 + Name: ".bss" (0xDE) + Type: SHT_NOBITS (0x8) + Flags: 0x3 + SHF_WRITE (0x1) + SHF_ALLOC (0x2) + Address: 0x11010 + Offset: 0x1010 + Size: 0x8 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 23 + Name: ".comment" (0xE3) + Type: SHT_PROGBITS (0x1) + Flags: 0x30 + SHF_MERGE (0x10) + SHF_STRINGS (0x20) + Address: 0x0 + Offset: 0x1010 + Size: 0x30 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x1 +} +SectionHeader { + Index: 24 + Name: ".symtab" (0x1) + Type: SHT_SYMTAB (0x2) + Flags: 0x0 + Address: 0x0 + Offset: 0x1040 + Size: 0x840 + Link: 25 + Info: 63 + AddressAlign: 0x8 + EntrySize: 0x18 + Symbol { + Index: 0 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 1 + Name: "" (0x0) + Value: 0x200 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 1 + } + Symbol { + Index: 2 + Name: "" (0x0) + Value: 0x21C + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 2 + } + Symbol { + Index: 3 + Name: "" (0x0) + Value: 0x23C + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 3 + } + Symbol { + Index: 4 + Name: "" (0x0) + Value: 0x260 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 4 + } + Symbol { + Index: 5 + Name: "" (0x0) + Value: 0x280 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 5 + } + Symbol { + Index: 6 + Name: "" (0x0) + Value: 0x370 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 6 + } + Symbol { + Index: 7 + Name: "" (0x0) + Value: 0x3FA + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 7 + } + Symbol { + Index: 8 + Name: "" (0x0) + Value: 0x410 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 8 + } + Symbol { + Index: 9 + Name: "" (0x0) + Value: 0x430 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 9 + } + Symbol { + Index: 10 + Name: "" (0x0) + Value: 0x520 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 10 + } + Symbol { + Index: 11 + Name: "" (0x0) + Value: 0x598 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 11 + } + Symbol { + Index: 12 + Name: "" (0x0) + Value: 0x5B0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 12 + } + Symbol { + Index: 13 + Name: "" (0x0) + Value: 0x620 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 14 + Name: "" (0x0) + Value: 0x7CC + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 14 + } + Symbol { + Index: 15 + Name: "" (0x0) + Value: 0x7E0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 15 + } + Symbol { + Index: 16 + Name: "" (0x0) + Value: 0x7F8 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 16 + } + Symbol { + Index: 17 + Name: "" (0x0) + Value: 0x10D80 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 17 + } + Symbol { + Index: 18 + Name: "" (0x0) + Value: 0x10D88 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 18 + } + Symbol { + Index: 19 + Name: "" (0x0) + Value: 0x10D90 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 19 + } + Symbol { + Index: 20 + Name: "" (0x0) + Value: 0x10F80 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 20 + } + Symbol { + Index: 21 + Name: "" (0x0) + Value: 0x11000 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 22 + Name: "" (0x0) + Value: 0x11010 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 23 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_SECTION (0x3) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 23 + } + Symbol { + Index: 24 + Name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/Scrt1.o" (0x1) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 25 + Name: "$d" (0x59) + Value: 0x21C + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 2 + } + Symbol { + Index: 26 + Name: "$x" (0x5C) + Value: 0x620 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 27 + Name: "$d" (0x59) + Value: 0x7E0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 15 + } + Symbol { + Index: 28 + Name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/crti.o" (0x5F) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 29 + Name: "$x" (0x5C) + Value: 0x658 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 30 + Name: "call_weak_fn" (0xB6) + Value: 0x658 + Size: 0x14 + Type: STT_FUNC (0x2) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 31 + Name: "$x" (0x5C) + Value: 0x598 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 11 + } + Symbol { + Index: 32 + Name: "$x" (0x5C) + Value: 0x7CC + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 14 + } + Symbol { + Index: 33 + Name: "/usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/lib/../lib/crtn.o" (0xC3) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 34 + Name: "$x" (0x5C) + Value: 0x5A4 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 11 + } + Symbol { + Index: 35 + Name: "$x" (0x5C) + Value: 0x7D4 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 14 + } + Symbol { + Index: 36 + Name: "crtstuff.c" (0x11A) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 37 + Name: "$x" (0x5C) + Value: 0x670 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 38 + Name: "deregister_tm_clones" (0x125) + Value: 0x670 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 39 + Name: "register_tm_clones" (0x127) + Value: 0x6A0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 40 + Name: "$d" (0x59) + Value: 0x11008 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 41 + Name: "__do_global_dtors_aux" (0x13A) + Value: 0x6D8 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 42 + Name: "completed.8500" (0x150) + Value: 0x11010 + Size: 0x1 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 43 + Name: "$d" (0x59) + Value: 0x10D88 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 18 + } + Symbol { + Index: 44 + Name: "__do_global_dtors_aux_fini_array_entry" (0x15F) + Value: 0x10D88 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 18 + } + Symbol { + Index: 45 + Name: "frame_dummy" (0x186) + Value: 0x720 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 46 + Name: "$d" (0x59) + Value: 0x10D80 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 17 + } + Symbol { + Index: 47 + Name: "__frame_dummy_init_array_entry" (0x192) + Value: 0x10D80 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 17 + } + Symbol { + Index: 48 + Name: "$d" (0x59) + Value: 0x11010 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 49 + Name: "base.c" (0x1B1) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 50 + Name: "$d" (0x59) + Value: 0x7E8 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 15 + } + Symbol { + Index: 51 + Name: "$x" (0x5C) + Value: 0x724 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 52 + Name: "elf-init.oS" (0x1B8) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 53 + Name: "$x" (0x5C) + Value: 0x748 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 54 + Name: "crtstuff.c" (0x11A) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 55 + Name: "$d" (0x59) + Value: 0x7F8 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 16 + } + Symbol { + Index: 56 + Name: "__FRAME_END__" (0x1C4) + Value: 0x7F8 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 16 + } + Symbol { + Index: 57 + Name: "" (0x0) + Value: 0x0 + Size: 0x0 + Type: STT_FILE (0x4) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 58 + Name: "__init_array_end" (0x1D2) + Value: 0x10D88 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 17 + } + Symbol { + Index: 59 + Name: "_DYNAMIC" (0x1E3) + Value: 0x10D90 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 60 + Name: "__init_array_start" (0x1EC) + Value: 0x10D80 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 17 + } + Symbol { + Index: 61 + Name: "_GLOBAL_OFFSET_TABLE_" (0x1FF) + Value: 0x10FC0 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_ABS (0xFFF1) + } + Symbol { + Index: 62 + Name: "$x" (0x5C) + Value: 0x5B0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_LOCAL (0x0) + Other: STV_DEFAULT (0x0) + SectionIndex: 12 + } + Symbol { + Index: 63 + Name: "__libc_csu_fini" (0x215) + Value: 0x7C8 + Size: 0x4 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 64 + Name: "_ITM_deregisterTMCloneTable" (0x225) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 65 + Name: "data_start" (0x29D) + Value: 0x11000 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 66 + Name: "__bss_start__" (0x241) + Value: 0x11010 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 67 + Name: "__cxa_finalize@@GLIBC_2.17" (0x24F) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 68 + Name: "_bss_end__" (0x272) + Value: 0x11018 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 69 + Name: "_edata" (0x26A) + Value: 0x11010 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 70 + Name: "_fini" (0x21F) + Value: 0x7CC + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 14 + } + Symbol { + Index: 71 + Name: "__bss_end__" (0x271) + Value: 0x11018 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 72 + Name: "__libc_start_main@@GLIBC_2.17" (0x27D) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 73 + Name: "__data_start" (0x29B) + Value: 0x11000 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 21 + } + Symbol { + Index: 74 + Name: "__gmon_start__" (0x2A8) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 75 + Name: "__dso_handle" (0x2B7) + Value: 0x11008 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_GLOBAL (0x1) + Other: STV_HIDDEN (0x2) + SectionIndex: 21 + } + Symbol { + Index: 76 + Name: "abort@@GLIBC_2.17" (0x2C4) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 77 + Name: "_IO_stdin_used" (0x2D6) + Value: 0x7E0 + Size: 0x4 + Type: STT_OBJECT (0x1) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 15 + } + Symbol { + Index: 78 + Name: "__libc_csu_init" (0x2E5) + Value: 0x748 + Size: 0x80 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 79 + Name: "_end" (0x1DE) + Value: 0x11018 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 80 + Name: "_start" (0x2A1) + Value: 0x620 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 81 + Name: "__end__" (0x2F5) + Value: 0x11018 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 82 + Name: "__bss_start" (0x2FD) + Value: 0x11010 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 22 + } + Symbol { + Index: 83 + Name: "main" (0x309) + Value: 0x724 + Size: 0x20 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 13 + } + Symbol { + Index: 84 + Name: "__TMC_END__" (0x30E) + Value: 0x11010 + Size: 0x0 + Type: STT_OBJECT (0x1) + Bind: STB_GLOBAL (0x1) + Other: STV_HIDDEN (0x2) + SectionIndex: 21 + } + Symbol { + Index: 85 + Name: "_ITM_registerTMCloneTable" (0x31A) + Value: 0x0 + Size: 0x0 + Type: STT_NOTYPE (0x0) + Bind: STB_WEAK (0x2) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 86 + Name: "printf@@GLIBC_2.17" (0x334) + Value: 0x0 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: SHN_UNDEF (0x0) + } + Symbol { + Index: 87 + Name: "_init" (0x2EF) + Value: 0x598 + Size: 0x0 + Type: STT_FUNC (0x2) + Bind: STB_GLOBAL (0x1) + Other: STV_DEFAULT (0x0) + SectionIndex: 11 + } +} +SectionHeader { + Index: 25 + Name: ".strtab" (0x9) + Type: SHT_STRTAB (0x3) + Flags: 0x0 + Address: 0x0 + Offset: 0x1880 + Size: 0x347 + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} +SectionHeader { + Index: 26 + Name: ".shstrtab" (0x11) + Type: SHT_STRTAB (0x3) + Flags: 0x0 + Address: 0x0 + Offset: 0x1BC7 + Size: 0xEC + Link: 0 + Info: 0 + AddressAlign: 0x1 + EntrySize: 0x0 +} diff --git a/crates/examples/testfiles/elf/base-strip.objdump b/crates/examples/testfiles/elf/base-strip.objdump index 41afadf7..ee708696 100644 --- a/crates/examples/testfiles/elf/base-strip.objdump +++ b/crates/examples/testfiles/elf/base-strip.objdump @@ -13,3 +13,5 @@ Symbols Dynamic symbols Dynamic relocations + +Symbol map diff --git a/crates/examples/testfiles/elf/base.o.objdump b/crates/examples/testfiles/elf/base.o.objdump index cf5c650d..5bff4195 100644 --- a/crates/examples/testfiles/elf/base.o.objdump +++ b/crates/examples/testfiles/elf/base.o.objdump @@ -42,3 +42,6 @@ Symbols Dynamic symbols Dynamic relocations + +Symbol map +0x0 "main" diff --git a/crates/examples/testfiles/elf/base.objdump b/crates/examples/testfiles/elf/base.objdump index 42d1685f..3b450171 100644 --- a/crates/examples/testfiles/elf/base.objdump +++ b/crates/examples/testfiles/elf/base.objdump @@ -130,3 +130,32 @@ Import { library: "", name: "__libc_start_main" } Import { library: "", name: "__gmon_start__" } Import { library: "", name: "_ITM_registerTMCloneTable" } Import { library: "", name: "__cxa_finalize" } + +Symbol map +0x520 "_init" +0x570 "_start" +0x5a0 "deregister_tm_clones" +0x5e0 "register_tm_clones" +0x630 "__do_global_dtors_aux" +0x670 "frame_dummy" +0x67a "main" +0x6a0 "__libc_csu_init" +0x710 "__libc_csu_fini" +0x714 "_fini" +0x720 "_IO_stdin_used" +0x734 "__GNU_EH_FRAME_HDR" +0x874 "__FRAME_END__" +0x200da8 "__frame_dummy_init_array_entry" +0x200da8 "__init_array_start" +0x200db0 "__do_global_dtors_aux_fini_array_entry" +0x200db0 "__init_array_end" +0x200db8 "_DYNAMIC" +0x200fb8 "_GLOBAL_OFFSET_TABLE_" +0x201000 "data_start" +0x201000 "__data_start" +0x201008 "__dso_handle" +0x201010 "completed.7698" +0x201010 "_edata" +0x201010 "__bss_start" +0x201010 "__TMC_END__" +0x201018 "_end" diff --git a/crates/examples/testfiles/macho/base-aarch64-debug.o.objdump b/crates/examples/testfiles/macho/base-aarch64-debug.o.objdump index f4cad6f0..e1c64c62 100644 --- a/crates/examples/testfiles/macho/base-aarch64-debug.o.objdump +++ b/crates/examples/testfiles/macho/base-aarch64-debug.o.objdump @@ -45,3 +45,10 @@ Dynamic symbols Import { library: "", name: "_printf" } Export { name: "_main", address: 0 } + +Symbol map +0x0 "ltmp0" +0x0 "_main" +0x34 "l_.str" +0x34 "ltmp1" +0x268 "ltmp2" diff --git a/crates/examples/testfiles/macho/base-aarch64.o.objdump b/crates/examples/testfiles/macho/base-aarch64.o.objdump index 96c36054..c90914b7 100644 --- a/crates/examples/testfiles/macho/base-aarch64.o.objdump +++ b/crates/examples/testfiles/macho/base-aarch64.o.objdump @@ -30,3 +30,10 @@ Dynamic symbols Import { library: "", name: "_printf" } Export { name: "_main", address: 0 } + +Symbol map +0x0 "ltmp0" +0x0 "_main" +0x34 "l_.str" +0x34 "ltmp1" +0x48 "ltmp2" diff --git a/crates/examples/testfiles/macho/base-aarch64.objdump b/crates/examples/testfiles/macho/base-aarch64.objdump index 5d2f3478..4f14a179 100644 --- a/crates/examples/testfiles/macho/base-aarch64.objdump +++ b/crates/examples/testfiles/macho/base-aarch64.objdump @@ -26,3 +26,7 @@ Import { library: "/usr/lib/libSystem.B.dylib", name: "_printf" } Export { name: "__mh_execute_header", address: 100000000 } Export { name: "_main", address: 100003f68 } + +Symbol map +0x100000000 "__mh_execute_header" +0x100003f68 "_main" diff --git a/crates/examples/testfiles/macho/base-x86_64-debug.o.objdump b/crates/examples/testfiles/macho/base-x86_64-debug.o.objdump index a279b3b4..b63c90e1 100644 --- a/crates/examples/testfiles/macho/base-x86_64-debug.o.objdump +++ b/crates/examples/testfiles/macho/base-x86_64-debug.o.objdump @@ -41,3 +41,6 @@ Dynamic symbols Import { library: "", name: "_printf" } Export { name: "_main", address: 0 } + +Symbol map +0x0 "_main" diff --git a/crates/examples/testfiles/macho/base-x86_64.o.objdump b/crates/examples/testfiles/macho/base-x86_64.o.objdump index ffb8c1bc..8472f54f 100644 --- a/crates/examples/testfiles/macho/base-x86_64.o.objdump +++ b/crates/examples/testfiles/macho/base-x86_64.o.objdump @@ -26,3 +26,6 @@ Dynamic symbols Import { library: "", name: "_printf" } Export { name: "_main", address: 0 } + +Symbol map +0x0 "_main" diff --git a/crates/examples/testfiles/macho/base-x86_64.objdump b/crates/examples/testfiles/macho/base-x86_64.objdump index 78d2f25b..307eaa34 100644 --- a/crates/examples/testfiles/macho/base-x86_64.objdump +++ b/crates/examples/testfiles/macho/base-x86_64.objdump @@ -33,3 +33,8 @@ Import { library: "/usr/lib/libSystem.B.dylib", name: "dyld_stub_binder" } Export { name: "__mh_execute_header", address: 100000000 } Export { name: "_main", address: 100003f60 } + +Symbol map +0x100000000 "__mh_execute_header" +0x100003f60 "_main" +0x100008008 "__dyld_private" diff --git a/crates/examples/testfiles/macho/reloc-aarch64.o.objdump b/crates/examples/testfiles/macho/reloc-aarch64.o.objdump index 5f4071a1..c1ab05e6 100644 --- a/crates/examples/testfiles/macho/reloc-aarch64.o.objdump +++ b/crates/examples/testfiles/macho/reloc-aarch64.o.objdump @@ -40,3 +40,8 @@ Dynamic symbols Import { library: "", name: "_g0" } Import { library: "", name: "_g1" } + +Symbol map +0x0 "ltmp0" +0x28 "ltmp1" +0x28 "_data" diff --git a/crates/examples/testfiles/macho/reloc-arm.o.objdump b/crates/examples/testfiles/macho/reloc-arm.o.objdump index 994cf586..9dd6ea49 100644 --- a/crates/examples/testfiles/macho/reloc-arm.o.objdump +++ b/crates/examples/testfiles/macho/reloc-arm.o.objdump @@ -37,3 +37,8 @@ Dynamic symbols Import { library: "", name: "_g0" } Export { name: "_g2", address: 14 } + +Symbol map +0x0 "_g1" +0x14 "_g3" +0x14 "_g2" diff --git a/crates/examples/testfiles/macho/reloc-i386.o.objdump b/crates/examples/testfiles/macho/reloc-i386.o.objdump index c6a1677a..7e8a7f79 100644 --- a/crates/examples/testfiles/macho/reloc-i386.o.objdump +++ b/crates/examples/testfiles/macho/reloc-i386.o.objdump @@ -27,3 +27,8 @@ Dynamic symbols Import { library: "", name: "_g0" } Export { name: "_g2", address: 10 } + +Symbol map +0x0 "_g1" +0x10 "_g3" +0x10 "_g2" diff --git a/crates/examples/testfiles/macho/reloc-x86_64.o.objdump b/crates/examples/testfiles/macho/reloc-x86_64.o.objdump index 044bdd39..5505cff6 100644 --- a/crates/examples/testfiles/macho/reloc-x86_64.o.objdump +++ b/crates/examples/testfiles/macho/reloc-x86_64.o.objdump @@ -32,3 +32,7 @@ __data relocations (0, Relocation { kind: Absolute, encoding: Generic, size: 40, target: Symbol(SymbolIndex(0)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 "_g1" +0x5 "_g2" diff --git a/crates/examples/testfiles/pe/base-bigobj.o.objdump b/crates/examples/testfiles/pe/base-bigobj.o.objdump index fe5dc976..13aa5c2f 100644 --- a/crates/examples/testfiles/pe/base-bigobj.o.objdump +++ b/crates/examples/testfiles/pe/base-bigobj.o.objdump @@ -49,3 +49,6 @@ Symbols (14, Relocation { kind: ImageOffset, encoding: Generic, size: 20, target: Symbol(SymbolIndex(b)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x51 "main" diff --git a/crates/examples/testfiles/pe/base-bigobj.obj.objdump b/crates/examples/testfiles/pe/base-bigobj.obj.objdump index 373144dc..935e6df5 100644 --- a/crates/examples/testfiles/pe/base-bigobj.obj.objdump +++ b/crates/examples/testfiles/pe/base-bigobj.obj.objdump @@ -60,3 +60,12 @@ Symbols (22, Relocation { kind: Relative, encoding: Generic, size: 20, target: Symbol(SymbolIndex(11)), addend: fffffffffffffffc, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 "@comp.id" +0x0 "@feat.00" +0x0 "___local_stdio_printf_options" +0x0 "__vfprintf_l" +0x0 "_printf" +0x0 "_main" +0x0 "$SG9248" diff --git a/crates/examples/testfiles/pe/base-gnu.exe.objdump b/crates/examples/testfiles/pe/base-gnu.exe.objdump index 8afdce6d..be8febc0 100644 --- a/crates/examples/testfiles/pe/base-gnu.exe.objdump +++ b/crates/examples/testfiles/pe/base-gnu.exe.objdump @@ -1382,3 +1382,1222 @@ Import { library: "msvcrt.dll", name: "strlen" } Import { library: "msvcrt.dll", name: "strncmp" } Import { library: "msvcrt.dll", name: "vfprintf" } Import { library: "msvcrt.dll", name: "wcslen" } + +Symbol map +0x0 "__ImageBase" +0x0 "__dll_characteristics__" +0x0 "__size_of_stack_commit__" +0x0 "__size_of_stack_reserve__" +0x0 "__major_subsystem_version__" +0x0 "__size_of_heap_commit__" +0x0 "__dll__" +0x0 "__minor_os_version__" +0x0 "__image_base__" +0x0 "__section_alignment__" +0x0 "__rt_psrelocs_size" +0x0 "__file_alignment__" +0x0 "__major_os_version__" +0x0 "__size_of_heap_reserve__" +0x0 "__subsystem__" +0x0 "__major_image_version__" +0x0 "__loader_flags__" +0x0 "__minor_subsystem_version__" +0x0 "__minor_image_version__" +0x140001010 "pre_c_init" +0x140001130 "pre_cpp_init" +0x140001180 "__tmainCRTStartup" +0x1400014b0 "WinMainCRTStartup" +0x1400014d0 "mainCRTStartup" +0x1400014f0 "atexit" +0x140001510 "__gcc_register_frame" +0x140001510 ".text" +0x140001520 "__gcc_deregister_frame" +0x140001530 "printf" +0x140001530 ".text" +0x140001581 "main" +0x1400015b0 "__do_global_dtors" +0x1400015b0 ".text" +0x1400015f0 "__do_global_ctors" +0x140001660 "__main" +0x140001680 ".text" +0x140001680 ".text" +0x140001680 "_setargv" +0x140001680 ".text" +0x140001690 ".text" +0x140001690 "__dyn_tls_dtor" +0x140001690 ".text" +0x1400016c0 "__dyn_tls_init" +0x140001750 "__tlregdtor" +0x140001760 ".text" +0x140001760 ".text" +0x140001760 "_matherr" +0x140001760 ".text" +0x140001860 "_fpreset" +0x140001860 "fpreset" +0x140001860 ".text" +0x140001870 ".text" +0x140001870 "__report_error" +0x140001870 ".text" +0x1400018e0 "mark_section_writable" +0x140001a50 "_pei386_runtime_relocator" +0x140001cd0 "__mingw_raise_matherr" +0x140001cd0 ".text" +0x140001d20 "__mingw_setusermatherr" +0x140001d30 ".text" +0x140001d30 "_gnu_exception_handler" +0x140001d30 ".text" +0x140001ef0 "__mingwthr_run_key_dtors.part.0" +0x140001ef0 ".text" +0x140001f60 "___w64_mingwthr_add_key_dtor" +0x140001fe0 "___w64_mingwthr_remove_key_dtor" +0x140002070 "__mingw_TLScallback" +0x140002160 ".text" +0x140002160 ".text" +0x140002160 "_ValidateImageBase" +0x140002160 ".text" +0x140002190 "_FindPESection" +0x1400021e0 "_FindPESectionByName" +0x140002280 "__mingw_GetSectionForAddress" +0x140002300 "__mingw_GetSectionCount" +0x140002340 "_FindPESectionExec" +0x1400023b0 "_GetPEImageBase" +0x1400023f0 "_IsNonwritableInCurrentImage" +0x140002480 "__mingw_enum_import_library_names" +0x140002540 ".text" +0x140002540 "___chkstk_ms" +0x140002580 ".text" +0x140002580 ".text" +0x140002580 "__mingw_vfprintf" +0x140002580 ".text" +0x1400025d0 "__pformat_cvt" +0x1400025d0 ".text" +0x1400026f0 "__pformat_putc" +0x140002750 "__pformat_wputchars" +0x1400028b0 "__pformat_putchars" +0x1400029e0 "__pformat_puts" +0x140002a30 "__pformat_emit_inf_or_nan" +0x140002ae0 "__pformat_xint.isra.0" +0x140003020 "__pformat_int.isra.0" +0x1400033c0 "__pformat_emit_radix_point" +0x140003520 "__pformat_emit_float" +0x1400038d0 "__pformat_emit_efloat" +0x1400039b0 "__pformat_efloat" +0x140003a60 "__pformat_float" +0x140003b50 "__pformat_gfloat" +0x140003cc0 "__pformat_xldouble" +0x140004200 "__mingw_pformat" +0x140004bb0 "__rv_alloc_D2A" +0x140004bb0 ".text" +0x140004bf0 "__nrv_alloc_D2A" +0x140004c70 "__freedtoa" +0x140004c90 "__quorem_D2A" +0x140004e10 "__gdtoa" +0x140004e10 ".text" +0x140006520 "__rshift_D2A" +0x140006520 ".text" +0x140006620 "__trailz_D2A" +0x140006670 "dtoa_lock" +0x140006670 ".text" +0x140006750 "dtoa_lock_cleanup" +0x1400067a0 "__Balloc_D2A" +0x1400068a0 "__Bfree_D2A" +0x140006910 "__multadd_D2A" +0x1400069c0 "__i2b_D2A" +0x140006a80 "__mult_D2A" +0x140006be0 "__pow5mult_D2A" +0x140006de0 "__lshift_D2A" +0x140006ef0 "__cmp_D2A" +0x140006f40 "__diff_D2A" +0x140007110 "__b2d_D2A" +0x140007230 "__d2b_D2A" +0x140007340 "__strcp_D2A" +0x140007370 "strnlen" +0x140007370 ".text" +0x1400073a0 "wcsnlen" +0x1400073a0 ".text" +0x1400073d0 ".text" +0x1400073d0 "wcslen" +0x1400073d8 ".text" +0x1400073d8 "vfprintf" +0x1400073e0 ".text" +0x1400073e0 "strncmp" +0x1400073e8 ".text" +0x1400073e8 "strlen" +0x1400073f0 ".text" +0x1400073f0 "strerror" +0x1400073f8 ".text" +0x1400073f8 "signal" +0x140007400 ".text" +0x140007400 "memset" +0x140007408 ".text" +0x140007408 "memcpy" +0x140007410 ".text" +0x140007410 "malloc" +0x140007418 ".text" +0x140007418 "localeconv" +0x140007420 ".text" +0x140007420 "fwrite" +0x140007428 ".text" +0x140007428 "free" +0x140007430 ".text" +0x140007430 "fputc" +0x140007438 ".text" +0x140007438 "fprintf" +0x140007440 ".text" +0x140007440 "exit" +0x140007448 ".text" +0x140007448 "calloc" +0x140007450 ".text" +0x140007450 "abort" +0x140007458 ".text" +0x140007458 "_onexit" +0x140007460 ".text" +0x140007460 "_initterm" +0x140007468 ".text" +0x140007468 "_errno" +0x140007470 ".text" +0x140007470 "_cexit" +0x140007478 ".text" +0x140007478 "_amsg_exit" +0x140007480 ".text" +0x140007480 "__setusermatherr" +0x140007488 ".text" +0x140007488 "__set_app_type" +0x140007490 ".text" +0x140007490 ".text" +0x140007490 "__getmainargs" +0x140007498 ".text" +0x140007498 "__C_specific_handler" +0x1400074a0 "__mbrtowc_cp" +0x1400074a0 ".text" +0x140007620 "mbrtowc" +0x140007690 "mbsrtowcs" +0x1400077a0 "mbrlen" +0x140007800 "__wcrtomb_cp" +0x140007800 ".text" +0x140007890 "wcrtomb" +0x1400078e0 "wcsrtombs" +0x1400079e0 "__acrt_iob_func" +0x1400079e0 ".text" +0x140007a00 "mingw_get_invalid_parameter_handler" +0x140007a00 "_get_invalid_parameter_handler" +0x140007a00 ".text" +0x140007a10 "mingw_set_invalid_parameter_handler" +0x140007a10 "_set_invalid_parameter_handler" +0x140007a20 "_lock_file" +0x140007a20 ".text" +0x140007a90 "_unlock_file" +0x140007af0 "__p__acmdln" +0x140007af0 ".text" +0x140007b00 "__p__commode" +0x140007b00 ".text" +0x140007b10 "__p__fmode" +0x140007b10 ".text" +0x140007b20 ".text" +0x140007b20 ".text" +0x140007b20 "_unlock" +0x140007b28 ".text" +0x140007b28 "_lock" +0x140007b30 ".text" +0x140007b30 ".text" +0x140007b30 "__iob_func" +0x140007b38 ".text" +0x140007b38 "___mb_cur_max_func" +0x140007b40 ".text" +0x140007b40 "___lc_codepage_func" +0x140007b50 ".text" +0x140007b50 ".text" +0x140007b50 "WideCharToMultiByte" +0x140007b58 ".text" +0x140007b58 "VirtualQuery" +0x140007b60 ".text" +0x140007b60 "VirtualProtect" +0x140007b68 ".text" +0x140007b68 "TlsGetValue" +0x140007b70 ".text" +0x140007b70 "Sleep" +0x140007b78 ".text" +0x140007b78 "SetUnhandledExceptionFilter" +0x140007b80 ".text" +0x140007b80 "MultiByteToWideChar" +0x140007b88 ".text" +0x140007b88 "LeaveCriticalSection" +0x140007b90 ".text" +0x140007b90 "IsDBCSLeadByteEx" +0x140007b98 ".text" +0x140007b98 "InitializeCriticalSection" +0x140007ba0 ".text" +0x140007ba0 "GetStartupInfoA" +0x140007ba8 ".text" +0x140007ba8 "GetLastError" +0x140007bb0 ".text" +0x140007bb0 "EnterCriticalSection" +0x140007bb8 ".text" +0x140007bb8 "DeleteCriticalSection" +0x140007bc0 ".text" +0x140007bc0 ".text" +0x140007bc0 ".text" +0x140007bc0 ".text" +0x140007bc0 "register_frame_ctor" +0x140007bc0 ".text" +0x140007bc0 ".text.startup" +0x140007bd0 "__CTOR_LIST__" +0x140007bd0 "___CTOR_LIST__" +0x140007bd8 ".ctors.65535" +0x140007be8 "___DTOR_LIST__" +0x140007be8 "__DTOR_LIST__" +0x140008000 "__data_start__" +0x140008000 "__mingw_winmain_nShowCmd" +0x140008010 ".data" +0x140008010 ".data" +0x140008010 "p.0" +0x140008010 ".data" +0x140008020 ".data" +0x140008020 "__native_vcclrit_reason" +0x140008024 "__native_dllmain_reason" +0x140008030 ".data" +0x140008030 "_dowildcard" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 ".data" +0x140008040 "_CRT_MT" +0x140008050 ".data" +0x140008050 ".data" +0x140008050 ".data" +0x140008050 ".data" +0x140008050 ".data" +0x140008050 "_MINGW_INSTALL_DEBUG_MATHERR" +0x140008060 ".data" +0x140008060 "fpi.0" +0x140008060 ".data" +0x140008080 ".data" +0x140008080 ".data" +0x140008080 ".data" +0x140008080 "pmem_next" +0x140008080 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 ".data" +0x140008090 "__imp___acrt_iob_func" +0x1400080a0 ".data" +0x1400080a0 "__imp__get_invalid_parameter_handler" +0x1400080a8 "__imp__set_invalid_parameter_handler" +0x1400080b0 ".data" +0x1400080b0 "__imp__unlock_file" +0x1400080b8 "__imp__lock_file" +0x1400080c0 ".data" +0x1400080c0 "__imp___p__acmdln" +0x1400080d0 ".data" +0x1400080d0 "__imp___p__commode" +0x1400080e0 ".data" +0x1400080e0 "__imp___p__fmode" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 ".data" +0x1400080f0 "__data_end__" +0x140009020 ".rdata" +0x140009020 "__dyn_tls_init_callback" +0x140009040 "_tls_used" +0x140009080 ".rdata" +0x1400091c0 ".rdata" +0x1400092d0 ".rdata" +0x140009300 ".rdata" +0x140009490 ".rdata" +0x140009520 "p05.0" +0x140009520 ".rdata" +0x140009540 "__tens_D2A" +0x140009600 "__tinytens_D2A" +0x140009640 "__bigtens_D2A" +0x140009680 ".rdata$.refptr._CRT_MT" +0x140009680 ".refptr._CRT_MT" +0x140009690 ".rdata$.refptr._MINGW_INSTALL_DEBUG_MATHERR" +0x140009690 ".refptr._MINGW_INSTALL_DEBUG_MATHERR" +0x1400096a0 ".rdata$.refptr.__CTOR_LIST__" +0x1400096a0 ".refptr.__CTOR_LIST__" +0x1400096b0 ".rdata$.refptr.__RUNTIME_PSEUDO_RELOC_LIST_END__" +0x1400096b0 ".refptr.__RUNTIME_PSEUDO_RELOC_LIST_END__" +0x1400096c0 ".rdata$.refptr.__RUNTIME_PSEUDO_RELOC_LIST__" +0x1400096c0 ".refptr.__RUNTIME_PSEUDO_RELOC_LIST__" +0x1400096d0 ".rdata$.refptr.__dyn_tls_init_callback" +0x1400096d0 ".refptr.__dyn_tls_init_callback" +0x1400096e0 ".rdata$.refptr.__image_base__" +0x1400096e0 ".refptr.__image_base__" +0x1400096f0 ".rdata$.refptr.__imp___initenv" +0x1400096f0 ".refptr.__imp___initenv" +0x140009700 ".rdata$.refptr.__imp__acmdln" +0x140009700 ".refptr.__imp__acmdln" +0x140009710 ".rdata$.refptr.__imp__commode" +0x140009710 ".refptr.__imp__commode" +0x140009720 ".rdata$.refptr.__imp__fmode" +0x140009720 ".refptr.__imp__fmode" +0x140009730 ".rdata$.refptr.__mingw_app_type" +0x140009730 ".refptr.__mingw_app_type" +0x140009740 ".rdata$.refptr.__mingw_initltsdrot_force" +0x140009740 ".refptr.__mingw_initltsdrot_force" +0x140009750 ".rdata$.refptr.__mingw_initltsdyn_force" +0x140009750 ".refptr.__mingw_initltsdyn_force" +0x140009760 ".rdata$.refptr.__mingw_initltssuo_force" +0x140009760 ".refptr.__mingw_initltssuo_force" +0x140009770 ".rdata$.refptr.__mingw_oldexcpt_handler" +0x140009770 ".refptr.__mingw_oldexcpt_handler" +0x140009780 ".rdata$.refptr.__native_startup_lock" +0x140009780 ".refptr.__native_startup_lock" +0x140009790 ".rdata$.refptr.__native_startup_state" +0x140009790 ".refptr.__native_startup_state" +0x1400097a0 ".rdata$.refptr.__tens_D2A" +0x1400097a0 ".refptr.__tens_D2A" +0x1400097b0 ".rdata$.refptr.__xc_a" +0x1400097b0 ".refptr.__xc_a" +0x1400097c0 ".rdata$.refptr.__xc_z" +0x1400097c0 ".refptr.__xc_z" +0x1400097d0 ".rdata$.refptr.__xi_a" +0x1400097d0 ".refptr.__xi_a" +0x1400097e0 ".rdata$.refptr.__xi_z" +0x1400097e0 ".refptr.__xi_z" +0x1400097f0 ".rdata$.refptr._commode" +0x1400097f0 ".refptr._commode" +0x140009800 ".rdata$.refptr._dowildcard" +0x140009800 ".refptr._dowildcard" +0x140009810 ".rdata$.refptr._fmode" +0x140009810 ".refptr._fmode" +0x140009820 ".rdata$.refptr._gnu_exception_handler" +0x140009820 ".refptr._gnu_exception_handler" +0x140009830 ".rdata$.refptr._matherr" +0x140009830 ".refptr._matherr" +0x140009840 ".rdata$.refptr._newmode" +0x140009840 ".refptr._newmode" +0x140009850 ".rdata$zzz" +0x140009880 ".rdata$zzz" +0x1400098b0 ".rdata$zzz" +0x1400098e0 ".rdata$zzz" +0x140009910 ".rdata$zzz" +0x140009940 ".rdata$zzz" +0x140009970 ".rdata$zzz" +0x1400099a0 ".rdata$zzz" +0x1400099d0 ".rdata$zzz" +0x140009a00 ".rdata$zzz" +0x140009a30 ".rdata$zzz" +0x140009a60 ".rdata$zzz" +0x140009a90 ".rdata$zzz" +0x140009ac0 ".rdata$zzz" +0x140009af0 ".rdata$zzz" +0x140009b20 ".rdata$zzz" +0x140009b50 ".rdata$zzz" +0x140009b80 ".rdata$zzz" +0x140009bb0 ".rdata$zzz" +0x140009be0 ".rdata$zzz" +0x140009c10 ".rdata$zzz" +0x140009c40 ".rdata$zzz" +0x140009c70 ".rdata$zzz" +0x140009ca0 ".rdata$zzz" +0x140009cd0 ".rdata$zzz" +0x140009d00 ".rdata$zzz" +0x140009d30 ".rdata$zzz" +0x140009d60 ".rdata$zzz" +0x140009d90 ".rdata$zzz" +0x140009dc0 ".rdata$zzz" +0x140009df0 ".rdata$zzz" +0x140009e20 ".rdata$zzz" +0x140009e50 ".rdata$zzz" +0x140009e80 ".rdata$zzz" +0x140009eb0 ".rdata$zzz" +0x140009ee0 ".rdata$zzz" +0x140009f10 ".rdata$zzz" +0x140009f40 ".rdata$zzz" +0x140009f70 ".rdata$zzz" +0x140009fa0 ".rdata$zzz" +0x140009fd0 ".rdata$zzz" +0x14000a000 "___RUNTIME_PSEUDO_RELOC_LIST__" +0x14000a000 "__rt_psrelocs_start" +0x14000a000 "___RUNTIME_PSEUDO_RELOC_LIST_END__" +0x14000a000 "__RUNTIME_PSEUDO_RELOC_LIST__" +0x14000a000 "__rt_psrelocs_end" +0x14000a000 "__RUNTIME_PSEUDO_RELOC_LIST_END__" +0x14000a054 ".pdata" +0x14000a06c ".pdata" +0x14000a084 ".pdata" +0x14000a0a8 ".pdata" +0x14000a0b4 ".pdata" +0x14000a0d8 ".pdata" +0x14000a0e4 ".pdata" +0x14000a0f0 ".pdata" +0x14000a114 ".pdata" +0x14000a12c ".pdata" +0x14000a138 ".pdata" +0x14000a168 ".pdata" +0x14000a1d4 ".pdata" +0x14000a1e0 ".pdata" +0x14000a2a0 ".pdata" +0x14000a2d0 ".pdata" +0x14000a2dc ".pdata" +0x14000a2f4 ".pdata" +0x14000a39c ".pdata" +0x14000a3a8 ".pdata" +0x14000a3b4 ".pdata" +0x14000a3e4 ".pdata" +0x14000a408 ".pdata" +0x14000a414 ".pdata" +0x14000a42c ".pdata" +0x14000a444 ".pdata" +0x14000a450 ".pdata" +0x14000a45c ".pdata" +0x14000a468 ".pdata.startup" +0x14000b070 ".xdata" +0x14000b078 ".xdata" +0x14000b090 ".xdata" +0x14000b0a8 ".xdata" +0x14000b0ac ".xdata" +0x14000b0c4 ".xdata" +0x14000b0dc ".xdata" +0x14000b0e0 ".xdata" +0x14000b110 ".xdata" +0x14000b11c ".xdata" +0x14000b124 ".xdata" +0x14000b150 ".xdata" +0x14000b17c ".xdata" +0x14000b188 ".xdata" +0x14000b27c ".xdata" +0x14000b2ac ".xdata" +0x14000b2c8 ".xdata" +0x14000b2dc ".xdata" +0x14000b388 ".xdata" +0x14000b38c ".xdata" +0x14000b390 ".xdata" +0x14000b3d0 ".xdata" +0x14000b3f8 ".xdata" +0x14000b400 ".xdata" +0x14000b408 ".xdata" +0x14000b418 ".xdata" +0x14000b41c ".xdata" +0x14000b420 ".xdata" +0x14000b424 ".xdata.startup" +0x14000c000 "__mingw_module_is_dll" +0x14000c000 "__bss_start__" +0x14000c008 "__mingw_winmain_lpCmdLine" +0x14000c010 "__mingw_winmain_hInstance" +0x14000c018 "startinfo" +0x14000c01c "has_cctor" +0x14000c020 "managedapp" +0x14000c024 "mainret" +0x14000c028 "envp" +0x14000c030 "argv" +0x14000c038 "argc" +0x14000c040 ".bss" +0x14000c040 ".bss" +0x14000c040 "initialized" +0x14000c040 ".bss" +0x14000c050 ".bss" +0x14000c050 "__native_startup_lock" +0x14000c058 "__native_startup_state" +0x14000c060 ".bss" +0x14000c060 ".bss" +0x14000c060 ".bss" +0x14000c060 "_newmode" +0x14000c070 ".bss" +0x14000c070 "__mingw_initltssuo_force" +0x14000c074 "__mingw_initltsdyn_force" +0x14000c078 "__mingw_initltsdrot_force" +0x14000c07c "_tls_index" +0x14000c080 ".bss" +0x14000c080 "_commode" +0x14000c090 ".bss" +0x14000c090 ".bss" +0x14000c090 ".bss" +0x14000c090 ".bss" +0x14000c090 "__mingw_app_type" +0x14000c0a0 "was_init.0" +0x14000c0a0 ".bss" +0x14000c0a4 "maxSections" +0x14000c0a8 "the_secs" +0x14000c0b0 "stUserMathErr" +0x14000c0b0 ".bss" +0x14000c0c0 ".bss" +0x14000c0c0 "_fmode" +0x14000c0d0 ".bss" +0x14000c0d0 "__mingw_oldexcpt_handler" +0x14000c0e0 "key_dtor_list" +0x14000c0e0 ".bss" +0x14000c0e8 "__mingwthr_cs_init" +0x14000c100 "__mingwthr_cs" +0x14000c140 ".bss" +0x14000c140 ".bss" +0x14000c150 ".bss" +0x14000c150 ".bss" +0x14000c150 ".bss" +0x14000c170 ".bss" +0x14000c170 ".bss" +0x14000c170 ".bss" +0x14000c170 ".bss" +0x14000c170 ".bss" +0x14000c170 ".bss" +0x14000c180 "p5s" +0x14000c180 ".bss" +0x14000c1a0 "private_mem" +0x14000caa0 "freelist" +0x14000caf0 "dtoa_CS_init" +0x14000cb00 "dtoa_CritSec" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 ".bss" +0x14000cb60 "s_mbstate.0" +0x14000cb60 ".bss" +0x14000cb64 "internal_mbstate.1" +0x14000cb68 "internal_mbstate.2" +0x14000cb70 ".bss" +0x14000cb70 ".bss" +0x14000cb70 "handler" +0x14000cb70 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 ".bss" +0x14000cb80 "__bss_end__" +0x14000d000 "_head_lib64_libkernel32_a" +0x14000d014 ".idata$2" +0x14000d014 "_head_lib64_libmsvcrt_os_a" +0x14000d03c ".idata$4" +0x14000d03c "hname" +0x14000d03c ".idata$4" +0x14000d044 ".idata$4" +0x14000d04c ".idata$4" +0x14000d054 ".idata$4" +0x14000d05c ".idata$4" +0x14000d064 ".idata$4" +0x14000d06c ".idata$4" +0x14000d074 ".idata$4" +0x14000d07c ".idata$4" +0x14000d084 ".idata$4" +0x14000d08c ".idata$4" +0x14000d094 ".idata$4" +0x14000d09c ".idata$4" +0x14000d0a4 ".idata$4" +0x14000d0ac ".idata$4" +0x14000d0b4 ".idata$4" +0x14000d0b4 "hname" +0x14000d0b4 ".idata$4" +0x14000d0bc ".idata$4" +0x14000d0c4 ".idata$4" +0x14000d0cc ".idata$4" +0x14000d0d4 ".idata$4" +0x14000d0dc ".idata$4" +0x14000d0e4 ".idata$4" +0x14000d0ec ".idata$4" +0x14000d0f4 ".idata$4" +0x14000d0fc ".idata$4" +0x14000d104 ".idata$4" +0x14000d10c ".idata$4" +0x14000d114 ".idata$4" +0x14000d11c ".idata$4" +0x14000d124 ".idata$4" +0x14000d12c ".idata$4" +0x14000d134 ".idata$4" +0x14000d13c ".idata$4" +0x14000d144 ".idata$4" +0x14000d14c ".idata$4" +0x14000d154 ".idata$4" +0x14000d15c ".idata$4" +0x14000d164 ".idata$4" +0x14000d16c ".idata$4" +0x14000d174 ".idata$4" +0x14000d17c ".idata$4" +0x14000d184 ".idata$4" +0x14000d18c ".idata$4" +0x14000d194 ".idata$4" +0x14000d19c ".idata$4" +0x14000d1a4 ".idata$4" +0x14000d1ac ".idata$4" +0x14000d1b4 ".idata$4" +0x14000d1bc ".idata$4" +0x14000d1c4 ".idata$4" +0x14000d1cc ".idata$4" +0x14000d1d4 ".idata$5" +0x14000d1d4 "fthunk" +0x14000d1d4 ".idata$5" +0x14000d1d4 "__imp_DeleteCriticalSection" +0x14000d1d4 "__IAT_start__" +0x14000d1dc ".idata$5" +0x14000d1dc "__imp_EnterCriticalSection" +0x14000d1e4 ".idata$5" +0x14000d1e4 "__imp_GetLastError" +0x14000d1ec ".idata$5" +0x14000d1ec "__imp_GetStartupInfoA" +0x14000d1f4 ".idata$5" +0x14000d1f4 "__imp_InitializeCriticalSection" +0x14000d1fc ".idata$5" +0x14000d1fc "__imp_IsDBCSLeadByteEx" +0x14000d204 ".idata$5" +0x14000d204 "__imp_LeaveCriticalSection" +0x14000d20c ".idata$5" +0x14000d20c "__imp_MultiByteToWideChar" +0x14000d214 ".idata$5" +0x14000d214 "__imp_SetUnhandledExceptionFilter" +0x14000d21c ".idata$5" +0x14000d21c "__imp_Sleep" +0x14000d224 ".idata$5" +0x14000d224 "__imp_TlsGetValue" +0x14000d22c ".idata$5" +0x14000d22c "__imp_VirtualProtect" +0x14000d234 ".idata$5" +0x14000d234 "__imp_VirtualQuery" +0x14000d23c ".idata$5" +0x14000d23c "__imp_WideCharToMultiByte" +0x14000d244 ".idata$5" +0x14000d24c ".idata$5" +0x14000d24c "fthunk" +0x14000d24c ".idata$5" +0x14000d24c "__imp___C_specific_handler" +0x14000d254 ".idata$5" +0x14000d254 "__imp____lc_codepage_func" +0x14000d25c ".idata$5" +0x14000d25c "__imp____mb_cur_max_func" +0x14000d264 ".idata$5" +0x14000d264 "__imp___getmainargs" +0x14000d26c ".idata$5" +0x14000d26c "__imp___initenv" +0x14000d274 ".idata$5" +0x14000d274 "__imp___iob_func" +0x14000d27c ".idata$5" +0x14000d27c "__imp___set_app_type" +0x14000d284 ".idata$5" +0x14000d284 "__imp___setusermatherr" +0x14000d28c ".idata$5" +0x14000d28c "__imp__acmdln" +0x14000d294 ".idata$5" +0x14000d294 "__imp__amsg_exit" +0x14000d29c ".idata$5" +0x14000d29c "__imp__cexit" +0x14000d2a4 ".idata$5" +0x14000d2a4 "__imp__commode" +0x14000d2ac ".idata$5" +0x14000d2ac "__imp__errno" +0x14000d2b4 ".idata$5" +0x14000d2b4 "__imp__fmode" +0x14000d2bc ".idata$5" +0x14000d2bc "__imp__initterm" +0x14000d2c4 ".idata$5" +0x14000d2c4 "__imp__lock" +0x14000d2cc ".idata$5" +0x14000d2cc "__imp__onexit" +0x14000d2d4 ".idata$5" +0x14000d2d4 "__imp__unlock" +0x14000d2dc ".idata$5" +0x14000d2dc "__imp_abort" +0x14000d2e4 ".idata$5" +0x14000d2e4 "__imp_calloc" +0x14000d2ec ".idata$5" +0x14000d2ec "__imp_exit" +0x14000d2f4 ".idata$5" +0x14000d2f4 "__imp_fprintf" +0x14000d2fc ".idata$5" +0x14000d2fc "__imp_fputc" +0x14000d304 ".idata$5" +0x14000d304 "__imp_free" +0x14000d30c ".idata$5" +0x14000d30c "__imp_fwrite" +0x14000d314 ".idata$5" +0x14000d314 "__imp_localeconv" +0x14000d31c ".idata$5" +0x14000d31c "__imp_malloc" +0x14000d324 ".idata$5" +0x14000d324 "__imp_memcpy" +0x14000d32c ".idata$5" +0x14000d32c "__imp_memset" +0x14000d334 ".idata$5" +0x14000d334 "__imp_signal" +0x14000d33c ".idata$5" +0x14000d33c "__imp_strerror" +0x14000d344 ".idata$5" +0x14000d344 "__imp_strlen" +0x14000d34c ".idata$5" +0x14000d34c "__imp_strncmp" +0x14000d354 ".idata$5" +0x14000d354 "__imp_vfprintf" +0x14000d35c ".idata$5" +0x14000d35c "__imp_wcslen" +0x14000d364 ".idata$5" +0x14000d36c ".idata$6" +0x14000d36c "__IAT_end__" +0x14000d384 ".idata$6" +0x14000d39c ".idata$6" +0x14000d3ac ".idata$6" +0x14000d3be ".idata$6" +0x14000d3da ".idata$6" +0x14000d3ee ".idata$6" +0x14000d406 ".idata$6" +0x14000d41c ".idata$6" +0x14000d43a ".idata$6" +0x14000d442 ".idata$6" +0x14000d450 ".idata$6" +0x14000d462 ".idata$6" +0x14000d472 ".idata$6" +0x14000d488 ".idata$6" +0x14000d4a0 ".idata$6" +0x14000d4b6 ".idata$6" +0x14000d4cc ".idata$6" +0x14000d4dc ".idata$6" +0x14000d4e8 ".idata$6" +0x14000d4f6 ".idata$6" +0x14000d508 ".idata$6" +0x14000d51c ".idata$6" +0x14000d526 ".idata$6" +0x14000d534 ".idata$6" +0x14000d53e ".idata$6" +0x14000d54a ".idata$6" +0x14000d554 ".idata$6" +0x14000d55e ".idata$6" +0x14000d56a ".idata$6" +0x14000d572 ".idata$6" +0x14000d57c ".idata$6" +0x14000d586 ".idata$6" +0x14000d58e ".idata$6" +0x14000d598 ".idata$6" +0x14000d5a0 ".idata$6" +0x14000d5aa ".idata$6" +0x14000d5b2 ".idata$6" +0x14000d5ba ".idata$6" +0x14000d5c4 ".idata$6" +0x14000d5d2 ".idata$6" +0x14000d5dc ".idata$6" +0x14000d5e6 ".idata$6" +0x14000d5f0 ".idata$6" +0x14000d5fa ".idata$6" +0x14000d606 ".idata$6" +0x14000d610 ".idata$6" +0x14000d61a ".idata$6" +0x14000d626 ".idata$6" +0x14000d630 ".idata$7" +0x14000d634 ".idata$7" +0x14000d638 ".idata$7" +0x14000d63c ".idata$7" +0x14000d640 ".idata$7" +0x14000d644 ".idata$7" +0x14000d648 ".idata$7" +0x14000d64c ".idata$7" +0x14000d650 ".idata$7" +0x14000d654 ".idata$7" +0x14000d658 ".idata$7" +0x14000d65c ".idata$7" +0x14000d660 ".idata$7" +0x14000d664 ".idata$7" +0x14000d668 ".idata$7" +0x14000d668 "__lib64_libkernel32_a_iname" +0x14000d678 ".idata$7" +0x14000d67c ".idata$7" +0x14000d680 ".idata$7" +0x14000d684 ".idata$7" +0x14000d688 ".idata$7" +0x14000d68c ".idata$7" +0x14000d690 ".idata$7" +0x14000d694 ".idata$7" +0x14000d698 ".idata$7" +0x14000d69c ".idata$7" +0x14000d6a0 ".idata$7" +0x14000d6a4 ".idata$7" +0x14000d6a8 ".idata$7" +0x14000d6ac ".idata$7" +0x14000d6b0 ".idata$7" +0x14000d6b4 ".idata$7" +0x14000d6b8 ".idata$7" +0x14000d6bc ".idata$7" +0x14000d6c0 ".idata$7" +0x14000d6c4 ".idata$7" +0x14000d6c8 ".idata$7" +0x14000d6cc ".idata$7" +0x14000d6d0 ".idata$7" +0x14000d6d4 ".idata$7" +0x14000d6d8 ".idata$7" +0x14000d6dc ".idata$7" +0x14000d6e0 ".idata$7" +0x14000d6e4 ".idata$7" +0x14000d6e8 ".idata$7" +0x14000d6ec ".idata$7" +0x14000d6f0 ".idata$7" +0x14000d6f4 ".idata$7" +0x14000d6f8 ".idata$7" +0x14000d6fc ".idata$7" +0x14000d700 ".idata$7" +0x14000d704 ".idata$7" +0x14000d704 "__lib64_libmsvcrt_os_a_iname" +0x14000e000 "___crt_xc_start__" +0x14000e000 "__xc_a" +0x14000e008 ".CRT$XCAA" +0x14000e008 "__mingw_pcppinit" +0x14000e010 ".CRT$XCZ" +0x14000e010 "__xc_z" +0x14000e018 ".CRT$XIA" +0x14000e018 "___crt_xi_start__" +0x14000e018 "___crt_xc_end__" +0x14000e018 "__xi_a" +0x14000e020 ".CRT$XIAA" +0x14000e020 "__mingw_pcinit" +0x14000e028 ".CRT$XIZ" +0x14000e028 "__xi_z" +0x14000e030 ".CRT$XLA" +0x14000e030 "__xl_a" +0x14000e030 "___crt_xl_start__" +0x14000e030 "___crt_xi_end__" +0x14000e038 ".CRT$XLC" +0x14000e038 "__xl_c" +0x14000e040 ".CRT$XLD" +0x14000e040 "__xl_d" +0x14000e048 ".CRT$XLZ" +0x14000e048 "__xl_z" +0x14000e050 "__xd_a" +0x14000e050 ".CRT$XDA" +0x14000e050 "___crt_xp_start__" +0x14000e050 "___crt_xp_end__" +0x14000e050 "___crt_xt_start__" +0x14000e050 "___crt_xt_end__" +0x14000e058 "__xd_z" +0x14000e058 ".CRT$XDZ" +0x14000f000 "___tls_start__" +0x14000f000 "_tls_start" +0x14000f008 ".tls$ZZZ" +0x14000f008 "_tls_end" +0x14000f010 "___tls_end__" +0x140010000 ".rsrc" +0x140012030 ".debug_aranges" +0x140012060 ".debug_aranges" +0x140012080 ".debug_aranges" +0x1400120a0 ".debug_aranges" +0x1400120d0 ".debug_aranges" +0x1400120f0 ".debug_aranges" +0x140012120 ".debug_aranges" +0x140012140 ".debug_aranges" +0x140012160 ".debug_aranges" +0x140012190 ".debug_aranges" +0x1400121c0 ".debug_aranges" +0x1400121e0 ".debug_aranges" +0x140012210 ".debug_aranges" +0x140012240 ".debug_aranges" +0x140012260 ".debug_aranges" +0x140012290 ".debug_aranges" +0x1400122c0 ".debug_aranges" +0x1400122e0 ".debug_aranges" +0x140012300 ".debug_aranges" +0x140012330 ".debug_aranges" +0x140012360 ".debug_aranges" +0x140012380 ".debug_aranges" +0x1400123a0 ".debug_aranges" +0x1400123d0 ".debug_aranges" +0x140012400 ".debug_aranges" +0x140012430 ".debug_aranges" +0x140012460 ".debug_aranges" +0x140012490 ".debug_aranges" +0x1400124c0 ".debug_aranges" +0x1400124f0 ".debug_aranges" +0x140012520 ".debug_aranges" +0x140012550 ".debug_aranges" +0x140012580 ".debug_aranges" +0x1400125b0 ".debug_aranges" +0x1400125e0 ".debug_aranges" +0x140012610 ".debug_aranges" +0x140012640 ".debug_aranges" +0x140012670 ".debug_aranges" +0x140015840 ".debug_info" +0x140015e28 ".debug_info" +0x1400163b1 ".debug_info" +0x1400164a3 ".debug_info" +0x140016672 ".debug_info" +0x140016761 ".debug_info" +0x140016e9f ".debug_info" +0x140016f8e ".debug_info" +0x140017176 ".debug_info" +0x140017441 ".debug_info" +0x14001753d ".debug_info" +0x140017639 ".debug_info" +0x1400188e2 ".debug_info" +0x140018c41 ".debug_info" +0x140018d2e ".debug_info" +0x140019d16 ".debug_info" +0x14001a6f2 ".debug_info" +0x14001a7df ".debug_info" +0x14001a921 ".debug_info" +0x14001befa ".debug_info" +0x14001bf28 ".debug_info" +0x14001cd04 ".debug_info" +0x14001ce0d ".debug_info" +0x14001d181 ".debug_info" +0x14001fd0b ".debug_info" +0x1400202bb ".debug_info" +0x140021426 ".debug_info" +0x1400217f3 ".debug_info" +0x1400232c8 ".debug_info" +0x1400234a8 ".debug_info" +0x14002369b ".debug_info" +0x140023dbe ".debug_info" +0x140024325 ".debug_info" +0x1400245f9 ".debug_info" +0x140024cc3 ".debug_info" +0x140025714 ".debug_info" +0x14002588a ".debug_info" +0x1400259ef ".debug_info" +0x14002653d ".debug_abbrev" +0x140026670 ".debug_abbrev" +0x140026722 ".debug_abbrev" +0x140026750 ".debug_abbrev" +0x14002678b ".debug_abbrev" +0x1400267b9 ".debug_abbrev" +0x140026978 ".debug_abbrev" +0x1400269a6 ".debug_abbrev" +0x140026a05 ".debug_abbrev" +0x140026ae6 ".debug_abbrev" +0x140026b14 ".debug_abbrev" +0x140026b42 ".debug_abbrev" +0x140026eaf ".debug_abbrev" +0x140026fa9 ".debug_abbrev" +0x140026fd7 ".debug_abbrev" +0x140027252 ".debug_abbrev" +0x140027456 ".debug_abbrev" +0x140027484 ".debug_abbrev" +0x1400274b2 ".debug_abbrev" +0x140027708 ".debug_abbrev" +0x14002771c ".debug_abbrev" +0x1400277af ".debug_abbrev" +0x1400277dd ".debug_abbrev" +0x1400278d8 ".debug_abbrev" +0x140027d55 ".debug_abbrev" +0x140027ef0 ".debug_abbrev" +0x14002818d ".debug_abbrev" +0x1400282c8 ".debug_abbrev" +0x140028702 ".debug_abbrev" +0x140028783 ".debug_abbrev" +0x140028818 ".debug_abbrev" +0x140028991 ".debug_abbrev" +0x140028adb ".debug_abbrev" +0x140028ba9 ".debug_abbrev" +0x140028d08 ".debug_abbrev" +0x140028ecd ".debug_abbrev" +0x140028f4f ".debug_abbrev" +0x140028fc2 ".debug_abbrev" +0x14002a61c ".debug_line" +0x14002a7d7 ".debug_line" +0x14002a8dc ".debug_line" +0x14002a940 ".debug_line" +0x14002a9bf ".debug_line" +0x14002aa23 ".debug_line" +0x14002abca ".debug_line" +0x14002ac2e ".debug_line" +0x14002ac92 ".debug_line" +0x14002adad ".debug_line" +0x14002ae2f ".debug_line" +0x14002ae98 ".debug_line" +0x14002b3da ".debug_line" +0x14002b4f8 ".debug_line" +0x14002b55c ".debug_line" +0x14002b7b7 ".debug_line" +0x14002badc ".debug_line" +0x14002bb3f ".debug_line" +0x14002bbac ".debug_line" +0x14002c199 ".debug_line" +0x14002c20b ".debug_line" +0x14002c297 ".debug_line" +0x14002c301 ".debug_line" +0x14002c40d ".debug_line" +0x14002e61f ".debug_line" +0x14002ea0c ".debug_line" +0x14002fbe8 ".debug_line" +0x14002fe05 ".debug_line" +0x140030e41 ".debug_line" +0x140030f38 ".debug_line" +0x14003104a ".debug_line" +0x1400313a5 ".debug_line" +0x140031614 ".debug_line" +0x1400316f0 ".debug_line" +0x14003186c ".debug_line" +0x140031a91 ".debug_line" +0x140031b18 ".debug_line" +0x140031ba0 ".debug_line" +0x1400321e8 ".debug_frame" +0x140032290 ".debug_frame" +0x1400322c0 ".debug_frame" +0x1400323b0 ".debug_frame" +0x140032428 ".debug_frame" +0x140032458 ".debug_frame" +0x1400325b8 ".debug_frame" +0x140032610 ".debug_frame" +0x140032698 ".debug_frame" +0x140032858 ".debug_frame" +0x1400329b0 ".debug_frame" +0x140032a28 ".debug_frame" +0x140033200 ".debug_frame" +0x140033380 ".debug_frame" +0x1400334a8 ".debug_frame" +0x140033580 ".debug_frame" +0x140033ba0 ".debug_frame" +0x140033bd0 ".debug_frame" +0x140033c00 ".debug_frame" +0x140033e60 ".debug_frame" +0x140033fb8 ".debug_frame" +0x140034008 ".debug_frame" +0x140034050 ".debug_frame" +0x140034108 ".debug_frame" +0x140034138 ".debug_frame" +0x140034168 ".debug_frame" +0x140035303 ".debug_str" +0x14003531b ".debug_str" +0x14003534e ".debug_str" +0x14003535e ".debug_str" +0x1400353ee ".debug_str" +0x1400353ff ".debug_str" +0x140035418 ".debug_str" +0x140035494 ".debug_str" +0x1400354e8 ".debug_str" +0x140035572 ".debug_str" +0x14003559a ".debug_str" +0x14003561d ".debug_str" +0x140035649 ".debug_str" +0x14003570f ".debug_str" +0x140035718 ".debug_str" +0x140035788 ".debug_str" +0x1400357f1 ".debug_str" +0x140035838 ".debug_str" +0x140035843 ".debug_str" +0x140036563 ".debug_loc" +0x1400365ec ".debug_loc" +0x140036900 ".debug_loc" +0x140036a0d ".debug_loc" +0x1400375de ".debug_loc" +0x140037715 ".debug_loc" +0x140037a6b ".debug_loc" +0x140038193 ".debug_loc" +0x140038d74 ".debug_loc" +0x140038eb9 ".debug_loc" +0x14003dba7 ".debug_loc" +0x14003e600 ".debug_loc" +0x140043b37 ".debug_loc" +0x140044095 ".debug_loc" +0x140046dc4 ".debug_loc" +0x140046dfe ".debug_loc" +0x140046e7a ".debug_loc" +0x1400478c9 ".debug_loc" +0x140047f94 ".debug_loc" +0x140047fe3 ".debug_loc" +0x140048036 ".debug_loc" +0x140049100 ".debug_ranges" +0x140049400 ".debug_ranges" +0x140049430 ".debug_ranges" +0x140049760 ".debug_ranges" +0x140049fb0 ".debug_ranges" +0x14004a010 ".debug_ranges" +0x14004a0b0 ".debug_ranges" +0x14004a460 ".debug_ranges" +0x14004a490 ".debug_ranges" +0x14004a4c0 ".debug_ranges" diff --git a/crates/examples/testfiles/pe/base.exe.objdump b/crates/examples/testfiles/pe/base.exe.objdump index e728eaa7..8defe99f 100644 --- a/crates/examples/testfiles/pe/base.exe.objdump +++ b/crates/examples/testfiles/pe/base.exe.objdump @@ -83,3 +83,5 @@ Import { library: "KERNEL32.dll", name: "HeapReAlloc" } Import { library: "KERNEL32.dll", name: "CloseHandle" } Import { library: "KERNEL32.dll", name: "CreateFileW" } Import { library: "KERNEL32.dll", name: "DecodePointer" } + +Symbol map diff --git a/crates/examples/testfiles/pe/base.o.objdump b/crates/examples/testfiles/pe/base.o.objdump index 3326a5fd..788db093 100644 --- a/crates/examples/testfiles/pe/base.o.objdump +++ b/crates/examples/testfiles/pe/base.o.objdump @@ -49,3 +49,6 @@ Symbols (14, Relocation { kind: ImageOffset, encoding: Generic, size: 20, target: Symbol(SymbolIndex(b)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x51 "main" diff --git a/crates/examples/testfiles/pe/base.obj.objdump b/crates/examples/testfiles/pe/base.obj.objdump index 373144dc..935e6df5 100644 --- a/crates/examples/testfiles/pe/base.obj.objdump +++ b/crates/examples/testfiles/pe/base.obj.objdump @@ -60,3 +60,12 @@ Symbols (22, Relocation { kind: Relative, encoding: Generic, size: 20, target: Symbol(SymbolIndex(11)), addend: fffffffffffffffc, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 "@comp.id" +0x0 "@feat.00" +0x0 "___local_stdio_printf_options" +0x0 "__vfprintf_l" +0x0 "_printf" +0x0 "_main" +0x0 "$SG9248" diff --git a/crates/examples/testfiles/wasm/base.wasm.objdump b/crates/examples/testfiles/wasm/base.wasm.objdump index 0e88ba59..30c72278 100644 --- a/crates/examples/testfiles/wasm/base.wasm.objdump +++ b/crates/examples/testfiles/wasm/base.wasm.objdump @@ -64,3 +64,41 @@ Symbols 43: Symbol { name: "frexp", address: 3b37, size: 8f, kind: Text, section: Section(SectionIndex(a)), scope: Compilation, weak: false, flags: None } Dynamic symbols + +Symbol map +0x2 "__wasm_call_ctors" +0x5 "_start" +0x2f "__original_main" +0x8b "dummy" +0x8e "__wasm_call_dtors" +0x9d "printf" +0xd9 "__lseek" +0x13e "__stdio_seek" +0x150 "__ofl_lock" +0x15a "__stdio_exit" +0x2de "__towrite" +0x33c "__fwritex" +0x432 "fwrite" +0x554 "strerror" +0x5aa "writev" +0x61d "__stdio_write" +0x75f "fputs" +0x784 "abort" +0x78a "vfprintf" +0x91f "printf_core" +0x2e01 "pop_arg" +0x3035 "long_double_not_supported" +0x3052 "close" +0x3074 "__stdio_close" +0x3082 "__isatty" +0x30e9 "__stdout_write" +0x3125 "strnlen" +0x3141 "memcpy" +0x3696 "memset" +0x3814 "strlen" +0x38ca "memchr" +0x39d3 "dummy" +0x39d8 "__lctrans" +0x39e5 "wctomb" +0x39ff "wcrtomb" +0x3b37 "frexp" diff --git a/crates/examples/testfiles/wasm/global-wasm32.objdump b/crates/examples/testfiles/wasm/global-wasm32.objdump index 6523af27..dab9836e 100644 --- a/crates/examples/testfiles/wasm/global-wasm32.objdump +++ b/crates/examples/testfiles/wasm/global-wasm32.objdump @@ -36,3 +36,7 @@ Symbols 16: Symbol { name: "__table_base", address: 1, size: 0, kind: Data, section: Section(SectionIndex(b)), scope: Dynamic, weak: false, flags: None } Dynamic symbols + +Symbol map +0x2 "__wasm_call_ctors" +0x5 "print" diff --git a/crates/examples/testfiles/wasm/global-wasm64-import.objdump b/crates/examples/testfiles/wasm/global-wasm64-import.objdump index efbf85bd..5277c058 100644 --- a/crates/examples/testfiles/wasm/global-wasm64-import.objdump +++ b/crates/examples/testfiles/wasm/global-wasm64-import.objdump @@ -36,3 +36,7 @@ Symbols 17: Symbol { name: "__table_base32", address: 1, size: 0, kind: Data, section: Section(SectionIndex(b)), scope: Dynamic, weak: false, flags: None } Dynamic symbols + +Symbol map +0x2 "__wasm_call_ctors" +0x5 "print" diff --git a/crates/examples/testfiles/wasm/global-wasm64.objdump b/crates/examples/testfiles/wasm/global-wasm64.objdump index 067da2e4..7d99c632 100644 --- a/crates/examples/testfiles/wasm/global-wasm64.objdump +++ b/crates/examples/testfiles/wasm/global-wasm64.objdump @@ -37,3 +37,7 @@ Symbols 17: Symbol { name: "__table_base32", address: 1, size: 0, kind: Data, section: Section(SectionIndex(b)), scope: Dynamic, weak: false, flags: None } Dynamic symbols + +Symbol map +0x2 "__wasm_call_ctors" +0x5 "print" diff --git a/crates/examples/testfiles/xcoff/base.o.objdump b/crates/examples/testfiles/xcoff/base.o.objdump index 332dd81f..b05e1b70 100644 --- a/crates/examples/testfiles/xcoff/base.o.objdump +++ b/crates/examples/testfiles/xcoff/base.o.objdump @@ -28,3 +28,8 @@ Symbols (80, Relocation { kind: Absolute, encoding: Generic, size: 40, target: Symbol(SymbolIndex(b)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 ".text" +0x0 ".main" +0x58 ".rodata.str1.1L...str" diff --git a/crates/examples/testfiles/xcoff/base.xcoff.objdump b/crates/examples/testfiles/xcoff/base.xcoff.objdump index 2b01d564..94a7cb5a 100644 --- a/crates/examples/testfiles/xcoff/base.xcoff.objdump +++ b/crates/examples/testfiles/xcoff/base.xcoff.objdump @@ -163,3 +163,23 @@ Symbols (110000970, Relocation { kind: Absolute, encoding: Generic, size: 40, target: Symbol(SymbolIndex(8)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x1000001f8 ".__start" +0x1000001f8 ".__start" +0x1000002c0 "" +0x1000002c0 ".__threads_init" +0x100000300 ".__threads_init@AF2_1" +0x100000420 "" +0x100000420 ".__User_sinit_begin" +0x100000448 ".__C_runtime_termination" +0x100000498 ".__C_runtime_startup" +0x100000520 ".__dftdt__L304e50f8c42_5CatchFv" +0x100000640 ".text" +0x100000640 ".main" +0x1000006c0 ".rodata.str1.1L...str" +0x1100006d0 "crt0_data" +0x110000738 "_$STATIC" +0x110000798 "__C_runtime_pstartup" +0x1100007a0 "_$STATIC" +0x110000838 "_cdtors" diff --git a/crates/examples/testfiles/xcoff/base32.o.objdump b/crates/examples/testfiles/xcoff/base32.o.objdump index 5a209a6d..ea34c349 100644 --- a/crates/examples/testfiles/xcoff/base32.o.objdump +++ b/crates/examples/testfiles/xcoff/base32.o.objdump @@ -28,3 +28,8 @@ Symbols (78, Relocation { kind: Absolute, encoding: Generic, size: 20, target: Symbol(SymbolIndex(b)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x0 ".text" +0x0 ".main" +0x5c ".rodata.str1.1L...str" diff --git a/crates/examples/testfiles/xcoff/base32.xcoff.objdump b/crates/examples/testfiles/xcoff/base32.xcoff.objdump index aa35ddb0..b96579b3 100644 --- a/crates/examples/testfiles/xcoff/base32.xcoff.objdump +++ b/crates/examples/testfiles/xcoff/base32.xcoff.objdump @@ -157,3 +157,23 @@ Symbols (200007a4, Relocation { kind: Absolute, encoding: Generic, size: 20, target: Symbol(SymbolIndex(6)), addend: 0, implicit_addend: true }) Dynamic symbols + +Symbol map +0x10000128 ".__start" +0x10000128 ".__start" +0x100001e0 "" +0x100001e0 ".__threads_init" +0x10000220 ".__threads_init@AF2_1" +0x10000340 "" +0x10000340 ".__User_sinit_begin" +0x10000368 ".__C_runtime_termination" +0x100003b8 ".__C_runtime_startup" +0x10000440 ".__dftdt__L304e4b28c42_5CatchFv" +0x10000560 ".text" +0x10000560 ".main" +0x100005e4 ".rodata.str1.1L...str" +0x200005f4 "crt0_data" +0x20000620 "_$STATIC" +0x2000067c "__C_runtime_pstartup" +0x20000680 "_$STATIC" +0x20000708 "_cdtors" From 4dfb72a30b9b03607976314274ecb2b723e30567 Mon Sep 17 00:00:00 2001 From: Philip Craig Date: Sun, 26 Nov 2023 12:59:07 +1000 Subject: [PATCH 3/3] read/elf: exclude zero sized STT_NOTYPE symbols from is_definition These are generally markers, not definitions. In particular, this excludes ARM mapping symbols ('$*'). --- .../testfiles/elf/base-aarch64.o.objdump | 2 -- .../testfiles/elf/base-aarch64.objdump | 29 ------------------- crates/examples/testfiles/elf/base.objdump | 8 ----- src/read/elf/symbol.rs | 11 +++++-- 4 files changed, 8 insertions(+), 42 deletions(-) diff --git a/crates/examples/testfiles/elf/base-aarch64.o.objdump b/crates/examples/testfiles/elf/base-aarch64.o.objdump index 38dcc3f3..06837952 100644 --- a/crates/examples/testfiles/elf/base-aarch64.o.objdump +++ b/crates/examples/testfiles/elf/base-aarch64.o.objdump @@ -40,6 +40,4 @@ Dynamic symbols Dynamic relocations Symbol map -0x0 "$d" -0x0 "$x" 0x0 "main" diff --git a/crates/examples/testfiles/elf/base-aarch64.objdump b/crates/examples/testfiles/elf/base-aarch64.objdump index 26f6b8ba..d5735acb 100644 --- a/crates/examples/testfiles/elf/base-aarch64.objdump +++ b/crates/examples/testfiles/elf/base-aarch64.objdump @@ -163,52 +163,23 @@ Import { library: "", name: "_ITM_registerTMCloneTable" } Import { library: "", name: "printf" } Symbol map -0x21c "$d" -0x598 "$x" 0x598 "_init" -0x5a4 "$x" -0x5b0 "$x" -0x620 "$x" 0x620 "_start" -0x658 "$x" 0x658 "call_weak_fn" -0x670 "$x" 0x670 "deregister_tm_clones" 0x6a0 "register_tm_clones" 0x6d8 "__do_global_dtors_aux" 0x720 "frame_dummy" -0x724 "$x" 0x724 "main" -0x748 "$x" 0x748 "__libc_csu_init" 0x7c8 "__libc_csu_fini" -0x7cc "$x" 0x7cc "_fini" -0x7d4 "$x" -0x7e0 "$d" 0x7e0 "_IO_stdin_used" -0x7e8 "$d" -0x7f8 "$d" 0x7f8 "__FRAME_END__" -0x10d80 "$d" 0x10d80 "__frame_dummy_init_array_entry" -0x10d80 "__init_array_start" -0x10d88 "$d" 0x10d88 "__do_global_dtors_aux_fini_array_entry" -0x10d88 "__init_array_end" 0x10d90 "_DYNAMIC" 0x10fc0 "_GLOBAL_OFFSET_TABLE_" -0x11000 "data_start" -0x11000 "__data_start" -0x11008 "$d" 0x11008 "__dso_handle" 0x11010 "completed.8500" -0x11010 "$d" -0x11010 "__bss_start__" -0x11010 "_edata" -0x11010 "__bss_start" 0x11010 "__TMC_END__" -0x11018 "_bss_end__" -0x11018 "__bss_end__" -0x11018 "_end" -0x11018 "__end__" diff --git a/crates/examples/testfiles/elf/base.objdump b/crates/examples/testfiles/elf/base.objdump index 3b450171..885e1e22 100644 --- a/crates/examples/testfiles/elf/base.objdump +++ b/crates/examples/testfiles/elf/base.objdump @@ -143,19 +143,11 @@ Symbol map 0x710 "__libc_csu_fini" 0x714 "_fini" 0x720 "_IO_stdin_used" -0x734 "__GNU_EH_FRAME_HDR" 0x874 "__FRAME_END__" 0x200da8 "__frame_dummy_init_array_entry" -0x200da8 "__init_array_start" 0x200db0 "__do_global_dtors_aux_fini_array_entry" -0x200db0 "__init_array_end" 0x200db8 "_DYNAMIC" 0x200fb8 "_GLOBAL_OFFSET_TABLE_" -0x201000 "data_start" -0x201000 "__data_start" 0x201008 "__dso_handle" 0x201010 "completed.7698" -0x201010 "_edata" -0x201010 "__bss_start" 0x201010 "__TMC_END__" -0x201018 "_end" diff --git a/src/read/elf/symbol.rs b/src/read/elf/symbol.rs index ee5aa37f..0603c981 100644 --- a/src/read/elf/symbol.rs +++ b/src/read/elf/symbol.rs @@ -478,9 +478,14 @@ pub trait Sym: Debug + Pod { /// Return true if the symbol is a definition of a function or data object. fn is_definition(&self, endian: Self::Endian) -> bool { - let st_type = self.st_type(); - (st_type == elf::STT_NOTYPE || st_type == elf::STT_FUNC || st_type == elf::STT_OBJECT) - && self.st_shndx(endian) != elf::SHN_UNDEF + if self.st_shndx(endian) == elf::SHN_UNDEF { + return false; + } + match self.st_type() { + elf::STT_NOTYPE => self.st_size(endian).into() != 0, + elf::STT_FUNC | elf::STT_OBJECT => true, + _ => false, + } } }