diff options
36 files changed, 142 insertions, 143 deletions
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp index cd3a0faa03d..362a9432568 100644 --- a/llvm/lib/ObjectYAML/ELFEmitter.cpp +++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp @@ -116,7 +116,6 @@ template <class ELFT> class ELFState { bool buildSectionIndex(); bool buildSymbolIndexes(); - void initELFHeader(Elf_Ehdr &Header); void initProgramHeaders(std::vector<Elf_Phdr> &PHeaders); bool initImplicitHeader(ContiguousBlobAccumulator &CBA, Elf_Shdr &Header, StringRef SecName, ELFYAML::Section *YAMLSec); @@ -132,6 +131,7 @@ template <class ELFT> class ELFState { void setProgramHeaderLayout(std::vector<Elf_Phdr> &PHeaders, std::vector<Elf_Shdr> &SHeaders); void finalizeStrings(); + void writeELFHeader(ContiguousBlobAccumulator &CBA, raw_ostream &OS); bool writeSectionContent(Elf_Shdr &SHeader, const ELFYAML::RawContentSection &Section, ContiguousBlobAccumulator &CBA); @@ -205,8 +205,11 @@ template <class ELFT> ELFState<ELFT>::ELFState(ELFYAML::Object &D) : Doc(D) { } } -template <class ELFT> void ELFState<ELFT>::initELFHeader(Elf_Ehdr &Header) { +template <class ELFT> +void ELFState<ELFT>::writeELFHeader(ContiguousBlobAccumulator &CBA, raw_ostream &OS) { using namespace llvm::ELF; + + Elf_Ehdr Header; zero(Header); Header.e_ident[EI_MAG0] = 0x7f; Header.e_ident[EI_MAG1] = 'E'; @@ -230,14 +233,18 @@ template <class ELFT> void ELFState<ELFT>::initELFHeader(Elf_Ehdr &Header) { Header.e_shentsize = Doc.Header.SHEntSize ? (uint16_t)*Doc.Header.SHEntSize : sizeof(Elf_Shdr); // Immediately following the ELF header and program headers. - Header.e_shoff = - Doc.Header.SHOffset - ? (typename ELFT::uint)(*Doc.Header.SHOffset) - : sizeof(Header) + sizeof(Elf_Phdr) * Doc.ProgramHeaders.size(); + // Align the start of the section header and write the ELF header. + uint64_t ShOffset; + CBA.getOSAndAlignedOffset(ShOffset, sizeof(typename ELFT::uint)); + Header.e_shoff = Doc.Header.SHOffset + ? typename ELFT::uint(*Doc.Header.SHOffset) + : ShOffset; Header.e_shnum = Doc.Header.SHNum ? (uint16_t)*Doc.Header.SHNum : Doc.Sections.size(); Header.e_shstrndx = Doc.Header.SHStrNdx ? (uint16_t)*Doc.Header.SHStrNdx : SN2I.get(".shstrtab"); + + OS.write((const char *)&Header, sizeof(Header)); } template <class ELFT> @@ -1040,19 +1047,13 @@ int ELFState<ELFT>::writeELF(raw_ostream &OS, ELFYAML::Object &Doc) { if (!State.buildSectionIndex() || !State.buildSymbolIndexes()) return 1; - Elf_Ehdr Header; - State.initELFHeader(Header); - - // TODO: Flesh out section header support. - std::vector<Elf_Phdr> PHeaders; State.initProgramHeaders(PHeaders); // XXX: This offset is tightly coupled with the order that we write // things to `OS`. - const size_t SectionContentBeginOffset = Header.e_ehsize + - Header.e_phentsize * Header.e_phnum + - Header.e_shentsize * Header.e_shnum; + const size_t SectionContentBeginOffset = + sizeof(Elf_Ehdr) + sizeof(Elf_Phdr) * Doc.ProgramHeaders.size(); ContiguousBlobAccumulator CBA(SectionContentBeginOffset); std::vector<Elf_Shdr> SHeaders; @@ -1062,10 +1063,10 @@ int ELFState<ELFT>::writeELF(raw_ostream &OS, ELFYAML::Object &Doc) { // Now we can decide segment offsets State.setProgramHeaderLayout(PHeaders, SHeaders); - OS.write((const char *)&Header, sizeof(Header)); + State.writeELFHeader(CBA, OS); writeArrayData(OS, makeArrayRef(PHeaders)); - writeArrayData(OS, makeArrayRef(SHeaders)); CBA.writeBlobToStream(OS); + writeArrayData(OS, makeArrayRef(SHeaders)); return 0; } diff --git a/llvm/test/Object/invalid.test b/llvm/test/Object/invalid.test index 8a75ecd3b77..397c948001e 100644 --- a/llvm/test/Object/invalid.test +++ b/llvm/test/Object/invalid.test @@ -315,7 +315,7 @@ FileHeader: # RUN: yaml2obj %s --docnum=16 -o %t16 # RUN: not llvm-readobj -r %t16 2>&1 | FileCheck -DFILE=%t16 --check-prefix=INVALID-REL-SYM %s -# INVALID-REL-SYM: error: '[[FILE]]': unable to access section [index 2] data at 0x18000180: offset goes past the end of file +# INVALID-REL-SYM: error: '[[FILE]]': unable to access section [index 2] data at 0x18000040: offset goes past the end of file --- !ELF FileHeader: @@ -565,7 +565,7 @@ Sections: # RUN: yaml2obj --docnum=26 %s -o %t26 # RUN: not llvm-readobj -h %t26 2>&1 | FileCheck -DFILE=%t26 --check-prefix=INVALID-SEC-NUM1 %s -# INVALID-SEC-NUM1: error: '[[FILE]]': invalid section header table offset (e_shoff = 0x40) or invalid number of sections specified in the first section header's sh_size field (0x3ffffffffffffff) +# INVALID-SEC-NUM1: error: '[[FILE]]': invalid section header table offset (e_shoff = 0x78) or invalid number of sections specified in the first section header's sh_size field (0x3ffffffffffffff) --- !ELF FileHeader: diff --git a/llvm/test/tools/llvm-objcopy/ELF/group-reorder.test b/llvm/test/tools/llvm-objcopy/ELF/group-reorder.test index 25d0cd52131..25c57bea220 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/group-reorder.test +++ b/llvm/test/tools/llvm-objcopy/ELF/group-reorder.test @@ -8,12 +8,12 @@ # aren't purely sorting based on offsets (it gets moved to the beginning # despite having a larger offset). -# IN: There are 7 section headers, starting at offset 0x40: +# IN: There are 7 section headers, starting at offset 0x160: # IN: [Nr] Name Type Address Off Size # IN-NEXT: [ 0] NULL 0000000000000000 000000 000000 -# IN-NEXT: [ 1] .foo PROGBITS 0000000000000000 000200 000040 -# IN-NEXT: [ 2] .group GROUP 0000000000000000 000240 000008 -# IN-NEXT: [ 3] .bar PROGBITS 0000000000000000 000248 000040 +# IN-NEXT: [ 1] .foo PROGBITS 0000000000000000 000040 000040 +# IN-NEXT: [ 2] .group GROUP 0000000000000000 000080 000008 +# IN-NEXT: [ 3] .bar PROGBITS 0000000000000000 000088 000040 # IN: COMDAT group section [ 2] `.group' [bar] contains 1 sections: # IN-NEXT: [Index] Name diff --git a/llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test b/llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test index 9ebfc11e3c7..fc2e08484b2 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test +++ b/llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test @@ -7,13 +7,13 @@ ## Sanity check that the section header table is at offset 64: # RUN: llvm-readobj --file-headers %t.o | FileCheck %s --check-prefix=VALIDATE -# VALIDATE: SectionHeaderOffset: 0x40{{$}} +# VALIDATE: SectionHeaderOffset: 0x80{{$}} ## Truncate the file to end before the section header table ends. -# RUN: %python -c "with open('%/t.o', 'r+b') as input: input.truncate(65)" +# RUN: %python -c "with open('%/t.o', 'r+b') as input: input.truncate(0x7f)" # RUN: not llvm-objcopy %t.o 2>&1 | FileCheck %s -DINPUT=%t.o --check-prefix=CASE1 -# CASE1: error: '[[INPUT]]': section header table goes past the end of the file: e_shoff = 0x40 +# CASE1: error: '[[INPUT]]': section header table goes past the end of the file: e_shoff = 0x80 ## Set the e_shoff field to a value much larger than the object file size. # RUN: %python -c "with open('%/t2.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x40000000); input.seek(40); input.write(bytes)" diff --git a/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test b/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test index fdb54da5d73..b2f746e0420 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test +++ b/llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test @@ -4,7 +4,7 @@ # RUN: yaml2obj --docnum=1 %s -o %t1.o # RUN: not llvm-objcopy %t1.o 2>&1 | FileCheck %s --check-prefix=ERR1 -# ERR1: error: program header with offset 0x1b8 and file size 0x100000 goes past the end of the file +# ERR1: error: program header with offset 0x78 and file size 0x100000 goes past the end of the file --- !ELF FileHeader: diff --git a/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test b/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test index 2998d5c7833..cd92a7eb643 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test +++ b/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test @@ -4,14 +4,13 @@ ## inputs somehow. # RUN: yaml2obj %s -o %t.o -## First, check that the section header table appears immediately after the program -## header table. +## First, check the address of the section header table. # RUN: llvm-readobj --file-headers %t.o | FileCheck %s --check-prefix=SHDRS-OFFSET -# SHDRS-OFFSET: SectionHeaderOffset: 0x78{{$}} +# SHDRS-OFFSET: SectionHeaderOffset: 0x1050{{$}} ## Binary edit the section header sh_offset field of the second section to -## overlap the first one. -# RUN: %python -c "with open('%/t.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x1001); input.seek(272); input.write(bytes)" +## (e_shoff+64*2+24 = 0x10e8) overlap the first one. +# RUN: %python -c "with open('%/t.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x1001); input.seek(0x10e8); input.write(bytes)" ## Sanity check that the binary editing modified the correct field. # RUN: llvm-readobj --section-headers %t.o | FileCheck %s diff --git a/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections.test b/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections.test index 1ab0bb66c75..2c470e6adc1 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections.test +++ b/llvm/test/tools/llvm-objcopy/ELF/overlapping-sections.test @@ -3,14 +3,13 @@ ## inputs somehow. # RUN: yaml2obj %s -o %t.o -## First, check that the section header table appears immediately after the ELF -## header. +## First, check the address of the section header table. # RUN: llvm-readobj --file-headers %t.o | FileCheck %s --check-prefix=SHDRS-OFFSET -# SHDRS-OFFSET: SectionHeaderOffset: 0x40{{$}} +# SHDRS-OFFSET: SectionHeaderOffset: 0x1050{{$}} ## Binary edit the section header sh_offset field of the second section to -## overlap the first one. -# RUN: %python -c "with open('%/t.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x1001); input.seek(216); input.write(bytes)" +## (e_shoff+64*2+24 = 0x10e8) overlap the first one. +# RUN: %python -c "with open('%/t.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x1001); input.seek(0x10e8); input.write(bytes)" ## Sanity check that the binary editing modified the correct field. # RUN: llvm-readobj --section-headers %t.o | FileCheck %s --check-prefix=VALIDATE diff --git a/llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test b/llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test index 3352313c271..4afd2c9285e 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test +++ b/llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test @@ -11,7 +11,7 @@ # BEFORE: Type: PT_LOAD # BEFORE-NEXT: Offset: 0x0 # BEFORE: Type: PT_LOAD -# BEFORE-NEXT: Offset: 0x240 +# BEFORE-NEXT: Offset: 0xC0 # AFTER: SectionHeaderCount: 3 # AFTER: Type: PT_LOAD diff --git a/llvm/test/tools/llvm-readobj/elf-broken-dynsym-link.test b/llvm/test/tools/llvm-readobj/elf-broken-dynsym-link.test index bbd13b8f947..d64b1dfb11a 100644 --- a/llvm/test/tools/llvm-readobj/elf-broken-dynsym-link.test +++ b/llvm/test/tools/llvm-readobj/elf-broken-dynsym-link.test @@ -14,14 +14,14 @@ # LLVM-NEXT: SHF_ALLOC # LLVM-NEXT: ] # LLVM-NEXT: Address: 0x0 -# LLVM-NEXT: Offset: 0x180 +# LLVM-NEXT: Offset: 0x40 # LLVM-NEXT: Size: 24 # LLVM-NEXT: Link: 0 # GNU: Section Headers: # GNU-NEXT: [Nr] Name Type Address Off Size ES Flg Lk # GNU-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 -# GNU-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000180 000018 18 A 0 +# GNU-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000018 18 A 0 --- !ELF FileHeader: @@ -58,11 +58,11 @@ Sections: # LLVM2-NEXT: SHF_ALLOC # LLVM2-NEXT: ] # LLVM2-NEXT: Address: 0x0 -# LLVM2-NEXT: Offset: 0x180 +# LLVM2-NEXT: Offset: 0x40 # LLVM2-NEXT: Size: 24 # LLVM2-NEXT: Link: 255 # GNU2: Section Headers: # GNU2-NEXT: [Nr] Name Type Address Off Size ES Flg Lk # GNU2-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 -# GNU2-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000180 000018 18 A 255 +# GNU2-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000018 18 A 255 diff --git a/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test b/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test index 9a117281f26..b377eaee213 100644 --- a/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test +++ b/llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test @@ -216,7 +216,7 @@ ProgramHeaders: # BAD-RELA-NEXT: 0x0000000000000007 RELA 0x1000000 # BAD-RELA-NEXT: 0x0000000000000000 NULL 0x0 # BAD-RELA-NEXT: ] -# BAD-RELA-GNU: Dynamic section at offset 0x1f0 contains 2 entries: +# BAD-RELA-GNU: Dynamic section at offset 0xb0 contains 2 entries: # BAD-RELA-GNU-NEXT: Tag Type Name/Value # BAD-RELA-GNU-NEXT: 0x0000000000000007 (RELA) 0x1000000 # BAD-RELA-GNU-NEXT: 0x0000000000000000 (NULL) 0x0 diff --git a/llvm/test/tools/llvm-readobj/elf-dynamic-no-pt-dynamic.test b/llvm/test/tools/llvm-readobj/elf-dynamic-no-pt-dynamic.test index 89e660337b5..8fa7f655249 100644 --- a/llvm/test/tools/llvm-readobj/elf-dynamic-no-pt-dynamic.test +++ b/llvm/test/tools/llvm-readobj/elf-dynamic-no-pt-dynamic.test @@ -14,7 +14,7 @@ # LLVM-NEXT: 0x0000000000000000 NULL 0x0 # LLVM-NEXT: ] -# GNU: Dynamic section at offset 0x1b8 contains 1 entries: +# GNU: Dynamic section at offset 0x78 contains 1 entries: # GNU-NEXT: Tag Type Name/Value # GNU-NEXT: 0x0000000000000000 (NULL) 0x0 diff --git a/llvm/test/tools/llvm-readobj/elf-file-headers.test b/llvm/test/tools/llvm-readobj/elf-file-headers.test index d48f31bae30..21631ca0fc6 100644 --- a/llvm/test/tools/llvm-readobj/elf-file-headers.test +++ b/llvm/test/tools/llvm-readobj/elf-file-headers.test @@ -21,7 +21,7 @@ # I386-NEXT: Version: 1 # I386-NEXT: Entry: 0x0 # I386-NEXT: ProgramHeaderOffset: 0x34 -# I386-NEXT: SectionHeaderOffset: 0x34 +# I386-NEXT: SectionHeaderOffset: 0x64 # I386-NEXT: Flags [ (0x0) # I386-NEXT: ] # I386-NEXT: HeaderSize: 52 @@ -65,7 +65,7 @@ FileHeader: # X86-64-NEXT: Version: 1 # X86-64-NEXT: Entry: 0x0 # X86-64-NEXT: ProgramHeaderOffset: 0x40 -# X86-64-NEXT: SectionHeaderOffset: 0x40 +# X86-64-NEXT: SectionHeaderOffset: 0x78 # X86-64-NEXT: Flags [ (0x0) # X86-64-NEXT: ] # X86-64-NEXT: HeaderSize: 64 @@ -116,7 +116,7 @@ FileHeader: # LANAI-NEXT: Version: 1 # LANAI-NEXT: Entry: 0x0 # LANAI-NEXT: ProgramHeaderOffset: 0x34 -# LANAI-NEXT: SectionHeaderOffset: 0x34 +# LANAI-NEXT: SectionHeaderOffset: 0x64 # LANAI-NEXT: Flags [ (0x0) # LANAI-NEXT: ] # LANAI-NEXT: HeaderSize: 52 diff --git a/llvm/test/tools/llvm-readobj/elf-hidden-versym.test b/llvm/test/tools/llvm-readobj/elf-hidden-versym.test index 0b37b9cead8..b6cf05aad48 100644 --- a/llvm/test/tools/llvm-readobj/elf-hidden-versym.test +++ b/llvm/test/tools/llvm-readobj/elf-hidden-versym.test @@ -2,7 +2,7 @@ # RUN: llvm-readelf -V %t | FileCheck %s --check-prefix=HIDDEN # HIDDEN: Version symbols section '.gnu.version' contains 2 entries: -# HIDDEN-NEXT: Addr: 0000000000200210 Offset: 0x000240 Link: 6 (.dynsym) +# HIDDEN-NEXT: Addr: 0000000000200210 Offset: 0x000040 Link: 6 (.dynsym) # HIDDEN-NEXT: 000: 0 (*local*) 3h(hiddensym) --- !ELF diff --git a/llvm/test/tools/llvm-readobj/elf-invalid-shstrndx.test b/llvm/test/tools/llvm-readobj/elf-invalid-shstrndx.test index 6dc3b11dfd2..ba899141f23 100644 --- a/llvm/test/tools/llvm-readobj/elf-invalid-shstrndx.test +++ b/llvm/test/tools/llvm-readobj/elf-invalid-shstrndx.test @@ -4,7 +4,7 @@ # GNU: ELF Header: # GNU: Section header string table index: 255 -# GNU-NEXT: There are 4 section headers, starting at offset 0x40: +# GNU-NEXT: There are 4 section headers, starting at offset 0x78: # GNU: Section Headers: # GNU-NEXT: [Nr] Name # GNU-EMPTY: diff --git a/llvm/test/tools/llvm-readobj/elf-invalid-versioning.test b/llvm/test/tools/llvm-readobj/elf-invalid-versioning.test index a1acc9a03e3..ae1b2ad6c51 100644 --- a/llvm/test/tools/llvm-readobj/elf-invalid-versioning.test +++ b/llvm/test/tools/llvm-readobj/elf-invalid-versioning.test @@ -2,7 +2,7 @@ # RUN: llvm-readelf -V %t | FileCheck %s --check-prefix=INVALID # INVALID: Version symbols section '.gnu.version' contains 2 entries: -# INVALID-NEXT: Addr: 0000000000200210 Offset: 0x000240 Link: 6 (.dynsym) +# INVALID-NEXT: Addr: 0000000000200210 Offset: 0x000040 Link: 6 (.dynsym) # INVALID-NEXT: 000: 0 (*local*) 3 (*invalid*) --- !ELF diff --git a/llvm/test/tools/llvm-readobj/elf-loadname.test b/llvm/test/tools/llvm-readobj/elf-loadname.test index 17006a1b789..d12076fd46c 100644 --- a/llvm/test/tools/llvm-readobj/elf-loadname.test +++ b/llvm/test/tools/llvm-readobj/elf-loadname.test @@ -9,7 +9,7 @@ # LLVM-NEXT: AddressSize: 64bit # LLVM-NEXT: LoadName: test.so -# GNU: Dynamic section at offset 0x200 contains 4 entries: +# GNU: Dynamic section at offset 0x80 contains 4 entries: # GNU-NEXT: Tag Type Name/Value # GNU-NEXT: 0x0000000000000005 (STRTAB) 0x0 # GNU-NEXT: 0x000000000000000a (STRSZ) 7 (bytes) diff --git a/llvm/test/tools/llvm-readobj/elf-packed-relocs.test b/llvm/test/tools/llvm-readobj/elf-packed-relocs.test index 4de725d130a..4c1ddfcb40f 100644 --- a/llvm/test/tools/llvm-readobj/elf-packed-relocs.test +++ b/llvm/test/tools/llvm-readobj/elf-packed-relocs.test @@ -14,7 +14,7 @@ # LLVM1-NEXT: } # RUN: yaml2obj -docnum 1 %s | llvm-readelf -relocations - | FileCheck --check-prefix=GNU1 %s -# GNU1: Relocation section '.rela.dyn' at offset 0x180 contains 8 entries: +# GNU1: Relocation section '.rela.dyn' at offset 0x40 contains 8 entries: # GNU1: 0000000000001100 0000000000000008 R_X86_64_RELATIVE 0 # GNU1-NEXT: 0000000000001180 0000000000000008 R_X86_64_RELATIVE 0 # GNU1-NEXT: 0000000000001188 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 0 @@ -62,7 +62,7 @@ Symbols: # LLVM2-NEXT: } # RUN: yaml2obj -docnum 2 %s | llvm-readelf -relocations - | FileCheck --check-prefix=GNU2 %s -# GNU2: Relocation section '.rel.dyn' at offset 0xfc contains 10 entries: +# GNU2: Relocation section '.rel.dyn' at offset 0x34 contains 10 entries: # GNU2: 00001008 00000101 R_386_32 00000000 sym1 # GNU2-NEXT: 00001010 00000203 R_386_GOT32 00000000 sym2 # GNU2-NEXT: 0000100c 00000008 R_386_RELATIVE @@ -109,7 +109,7 @@ Symbols: # LLVM3-NEXT: } # RUN: yaml2obj -docnum 3 %s | llvm-readelf -relocations - | FileCheck --check-prefix=GNU3 %s -# GNU3: Relocation section '.rela.dyn' at offset 0x180 contains 6 entries: +# GNU3: Relocation section '.rela.dyn' at offset 0x40 contains 6 entries: # GNU3: 0000000000001100 0000000000000008 R_X86_64_RELATIVE 0 # GNU3-NEXT: 0000000000001180 0000000000000008 R_X86_64_RELATIVE 8 # GNU3-NEXT: 0000000000001200 0000000100000001 R_X86_64_64 0000000000000000 sym1 + 0 diff --git a/llvm/test/tools/llvm-readobj/elf-relr-relocs.test b/llvm/test/tools/llvm-readobj/elf-relr-relocs.test index da1b6abe52c..3badb736ae9 100644 --- a/llvm/test/tools/llvm-readobj/elf-relr-relocs.test +++ b/llvm/test/tools/llvm-readobj/elf-relr-relocs.test @@ -42,7 +42,7 @@ # RUN: yaml2obj -docnum 1 %s \ # RUN: | llvm-readelf -relocations -raw-relr - \ # RUN: | FileCheck --check-prefix=RAW-GNU1 %s -# RAW-GNU1: Relocation section '.relr.dyn' at offset 0x180 contains 5 entries: +# RAW-GNU1: Relocation section '.relr.dyn' at offset 0x40 contains 5 entries: # RAW-GNU1: 0000000000010d60 # RAW-GNU1-NEXT: 0000000000000103 # RAW-GNU1-NEXT: 0000000000020000 @@ -52,7 +52,7 @@ # RUN: yaml2obj -docnum 1 %s \ # RUN: | llvm-readelf -relocations - \ # RUN: | FileCheck --check-prefix=GNU1 %s -# GNU1: Relocation section '.relr.dyn' at offset 0x180 contains 21 entries: +# GNU1: Relocation section '.relr.dyn' at offset 0x40 contains 21 entries: # GNU1: 0000000000010d60 0000000000000008 R_X86_64_RELATIVE # GNU1-NEXT: 0000000000010d68 0000000000000008 R_X86_64_RELATIVE # GNU1-NEXT: 0000000000010da0 0000000000000008 R_X86_64_RELATIVE @@ -127,7 +127,7 @@ Sections: # RUN: yaml2obj -docnum 2 %s \ # RUN: | llvm-readelf -relocations -raw-relr - \ # RUN: | FileCheck --check-prefix=RAW-GNU2 %s -# RAW-GNU2: Relocation section '.relr.dyn' at offset 0xfc contains 5 entries: +# RAW-GNU2: Relocation section '.relr.dyn' at offset 0x34 contains 5 entries: # RAW-GNU2: 00010d60 # RAW-GNU2-NEXT: 00000103 # RAW-GNU2-NEXT: 00020000 @@ -137,7 +137,7 @@ Sections: # RUN: yaml2obj -docnum 2 %s \ # RUN: | llvm-readelf -relocations - \ # RUN: | FileCheck --check-prefix=GNU2 %s -# GNU2: Relocation section '.relr.dyn' at offset 0xfc contains 14 entries: +# GNU2: Relocation section '.relr.dyn' at offset 0x34 contains 14 entries: # GNU2: 00010d60 00000008 R_386_RELATIVE # GNU2-NEXT: 00010d64 00000008 R_386_RELATIVE # GNU2-NEXT: 00010d80 00000008 R_386_RELATIVE diff --git a/llvm/test/tools/llvm-readobj/elf-versioninfo.test b/llvm/test/tools/llvm-readobj/elf-versioninfo.test index ba48e91b21c..606a96a9d4f 100644 --- a/llvm/test/tools/llvm-readobj/elf-versioninfo.test +++ b/llvm/test/tools/llvm-readobj/elf-versioninfo.test @@ -80,7 +80,7 @@ DynamicSymbols: # LLVM: Version symbols { # LLVM-NEXT: Section Name: .gnu.version # LLVM-NEXT: Address: 0x0 -# LLVM-NEXT: Offset: 0x280 +# LLVM-NEXT: Offset: 0x40 # LLVM-NEXT: Link: 7 # LLVM-NEXT: Symbols [ # LLVM-NEXT: Symbol { @@ -170,12 +170,12 @@ DynamicSymbols: # LLVM-NEXT: } # GNU: Version symbols section '.gnu.version' contains 6 entries: -# GNU-NEXT: Addr: 0000000000000000 Offset: 0x000280 Link: 7 (.dynsym) +# GNU-NEXT: Addr: 0000000000000000 Offset: 0x000040 Link: 7 (.dynsym) # GNU-NEXT: 000: 0 (*local*) 2 (VERSION1) 3 (VERSION2) 4 (v1) # GNU-NEXT: 004: 5 (v2) 6 (v3) # GNU-EMPTY: # GNU-NEXT: Version definition section '.gnu.version_d' contains 3 entries: -# GNU-NEXT: Addr: 0000000000000000 Offset: 0x00028c Link: 8 (.dynstr) +# GNU-NEXT: Addr: 0000000000000000 Offset: 0x00004c Link: 8 (.dynstr) # GNU-NEXT: 0x0000: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: VERSION1 # GNU-NEXT: 0x001c: Rev: 1 Flags: none Index: 3 Cnt: 2 Name: VERSION2 # GNU-NEXT: 0x0038: Parent 1: VERSION1 @@ -183,7 +183,7 @@ DynamicSymbols: # GNU-NEXT: 0x0038: Parent 1: VERSION1 # GNU-EMPTY: # GNU-NEXT: Version needs section '.gnu.version_r' contains 2 entries: -# GNU-NEXT: Addr: 0000000000000000 Offset: 0x0002cc Link: 8 (.dynstr) +# GNU-NEXT: Addr: 0000000000000000 Offset: 0x00008c Link: 8 (.dynstr) # GNU-NEXT: 0x0000: Version: 1 File: verneed1.so.0 Cnt: 2 # GNU-NEXT: 0x0010: Name: v1 Flags: none Version: 4 # GNU-NEXT: 0x0020: Name: v2 Flags: none Version: 5 diff --git a/llvm/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test b/llvm/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test index 24e6d3c1959..6a600dc3b69 100644 --- a/llvm/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test +++ b/llvm/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test @@ -15,7 +15,7 @@ # GNU: Section Headers: # GNU: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # GNU: warning: '[[FILE]]': invalid sh_type for string table section [index 1]: expected SHT_STRTAB, but got SHT_PROGBITS -# GNU: [ 1] .shstrtab PROGBITS 0000000000000000 000140 00001b 00 0 0 0 +# GNU: [ 1] .shstrtab PROGBITS 0000000000000000 000040 00001b 00 0 0 0 ## Test we report multiple identical warnings (one for each object) when dumping an archive. diff --git a/llvm/test/tools/llvm-readobj/gnu-notes.test b/llvm/test/tools/llvm-readobj/gnu-notes.test index b72a6e3a9e6..b3801f59ebf 100644 --- a/llvm/test/tools/llvm-readobj/gnu-notes.test +++ b/llvm/test/tools/llvm-readobj/gnu-notes.test @@ -7,24 +7,24 @@ # RUN: llvm-readelf --notes %t1.stripped.so | FileCheck %s --check-prefix=GNU-STRIPPED --strict-whitespace --match-full-lines # RUN: llvm-readobj --notes %t1.stripped.so | FileCheck %s --check-prefix=LLVM-STRIPPED -# GNU:Displaying notes found at file offset 0x00000238 with length 0x00000020: +# GNU:Displaying notes found at file offset 0x00000078 with length 0x00000020: # GNU-NEXT: Owner Data size Description # GNU-NEXT: GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag) # GNU-NEXT: OS: Linux, ABI: 2.6.32 -# GNU:Displaying notes found at file offset 0x00000258 with length 0x00000020: +# GNU:Displaying notes found at file offset 0x00000098 with length 0x00000020: # GNU-NEXT: Owner Data size Description # GNU-NEXT: GNU 0x00000010 NT_GNU_BUILD_ID (unique build ID bitstring) # GNU-NEXT: Build ID: 4fcb712aa6387724a9f465a32cd8c14b -# GNU:Displaying notes found at file offset 0x00000278 with length 0x0000001c: +# GNU:Displaying notes found at file offset 0x000000b8 with length 0x0000001c: # GNU-NEXT: Owner Data size Description # GNU-NEXT: GNU 0x00000009 NT_GNU_GOLD_VERSION (gold version) # GNU-NEXT: Version: gold 1.11 # LLVM: Notes [ # LLVM-NEXT: NoteSection { -# LLVM-NEXT: Offset: 0x238 +# LLVM-NEXT: Offset: 0x78 # LLVM-NEXT: Size: 0x20 # LLVM-NEXT: Note { # LLVM-NEXT: Owner: GNU @@ -35,7 +35,7 @@ # LLVM-NEXT: } # LLVM-NEXT: } # LLVM-NEXT: NoteSection { -# LLVM-NEXT: Offset: 0x258 +# LLVM-NEXT: Offset: 0x98 # LLVM-NEXT: Size: 0x20 # LLVM-NEXT: Note { # LLVM-NEXT: Owner: GNU @@ -45,7 +45,7 @@ # LLVM-NEXT: } # LLVM-NEXT: } # LLVM-NEXT: NoteSection { -# LLVM-NEXT: Offset: 0x278 +# LLVM-NEXT: Offset: 0xB8 # LLVM-NEXT: Size: 0x1C # LLVM-NEXT: Note { # LLVM-NEXT: Owner: GNU @@ -128,7 +128,7 @@ Sections: # RUN: not llvm-readelf --notes %t3.so 2>&1 | FileCheck -DFILE=%t3.so %s --check-prefix=ERR2 # RUN: not llvm-readobj --notes %t3.so 2>&1 | FileCheck -DFILE=%t3.so %s --check-prefix=ERR2 -# ERR2: error: '[[FILE]]': SHT_NOTE section [index 1] has invalid offset (0x180) or size (0xffff0000) +# ERR2: error: '[[FILE]]': SHT_NOTE section [index 1] has invalid offset (0x40) or size (0xffff0000) --- !ELF FileHeader: @@ -172,7 +172,7 @@ ProgramHeaders: # RUN: not llvm-readelf --notes %t5.so 2>&1 | FileCheck -DFILE=%t5.so %s --check-prefix=ERR4 # RUN: not llvm-readobj --notes %t5.so 2>&1 | FileCheck -DFILE=%t5.so %s --check-prefix=ERR4 -# ERR4: error: '[[FILE]]': PT_NOTE header has invalid offset (0x1b8) or size (0xffff0000) +# ERR4: error: '[[FILE]]': PT_NOTE header has invalid offset (0x78) or size (0xffff0000) --- !ELF FileHeader: diff --git a/llvm/test/tools/llvm-readobj/gnu-sections.test b/llvm/test/tools/llvm-readobj/gnu-sections.test index 17a0c4cb8eb..c5c67330ef3 100644 --- a/llvm/test/tools/llvm-readobj/gnu-sections.test +++ b/llvm/test/tools/llvm-readobj/gnu-sections.test @@ -1,18 +1,18 @@ # RUN: yaml2obj --docnum=1 %s -o %t-i386.o # RUN: llvm-readelf -S %t-i386.o | FileCheck %s -check-prefix ELF32 -# ELF32: There are 8 section headers, starting at offset 0x34: +# ELF32: There are 8 section headers, starting at offset 0x90: # ELF32-EMPTY: # ELF32-NEXT: Section Headers: # ELF32-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # ELF32-NEXT: [ 0] NULL 00000000 000000 000000 00 0 0 0 -# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000174 000001 00 AX 0 0 4 -# ELF32-NEXT: [ 2] .rel.text REL 00000000 000178 000000 08 5 1 4 -# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000178 000000 00 WA 0 0 4 -# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000178 000000 00 WA 0 0 4 -# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000178 000020 10 6 2 8 -# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000198 000007 00 0 0 1 -# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00019f 000030 00 0 0 1 +# ELF32-NEXT: [ 1] .text PROGBITS 00000000 000034 000001 00 AX 0 0 4 +# ELF32-NEXT: [ 2] .rel.text REL 00000000 000038 000000 08 5 1 4 +# ELF32-NEXT: [ 3] .data PROGBITS 00000000 000038 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 4] .bss NOBITS 00000000 000038 000000 00 WA 0 0 4 +# ELF32-NEXT: [ 5] .symtab SYMTAB 00000000 000038 000020 10 6 2 8 +# ELF32-NEXT: [ 6] .strtab STRTAB 00000000 000058 000007 00 0 0 1 +# ELF32-NEXT: [ 7] .shstrtab STRTAB 00000000 00005f 000030 00 0 0 1 # ELF32-NEXT: Key to Flags: # ELF32-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) # ELF32-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) @@ -63,18 +63,18 @@ Symbols: # RUN: | FileCheck %s -check-prefix ELF64 # RUN: llvm-readelf -W -S %t-x64.o | FileCheck %s -check-prefix ELF64 -# ELF64: There are 8 section headers, starting at offset 0x40: +# ELF64: There are 8 section headers, starting at offset 0xb0: # ELF64-EMPTY: # ELF64-NEXT: Section Headers: # ELF64-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # ELF64-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000240 000001 00 AX 0 0 4 -# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000248 000000 18 5 1 8 -# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000248 000000 00 WA 0 0 4 -# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000248 000000 00 WA 0 0 4 -# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000248 000030 18 6 2 8 -# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000278 000007 00 0 0 1 -# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00027f 000031 00 0 0 1 +# ELF64-NEXT: [ 1] .text PROGBITS 0000000000000000 000040 000001 00 AX 0 0 4 +# ELF64-NEXT: [ 2] .rela.text RELA 0000000000000000 000048 000000 18 5 1 8 +# ELF64-NEXT: [ 3] .data PROGBITS 0000000000000000 000048 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 4] .bss NOBITS 0000000000000000 000048 000000 00 WA 0 0 4 +# ELF64-NEXT: [ 5] .symtab SYMTAB 0000000000000000 000048 000030 18 6 2 8 +# ELF64-NEXT: [ 6] .strtab STRTAB 0000000000000000 000078 000007 00 0 0 1 +# ELF64-NEXT: [ 7] .shstrtab STRTAB 0000000000000000 00007f 000031 00 0 0 1 # ELF64-NEXT: Key to Flags: # ELF64-NEXT: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) # ELF64-NEXT: I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) diff --git a/llvm/test/tools/llvm-readobj/reloc-types-elf-i386.test b/llvm/test/tools/llvm-readobj/reloc-types-elf-i386.test index 1f661e40318..8606f3fa8cb 100644 --- a/llvm/test/tools/llvm-readobj/reloc-types-elf-i386.test +++ b/llvm/test/tools/llvm-readobj/reloc-types-elf-i386.test @@ -47,7 +47,7 @@ # LLVM: Type: R_386_IRELATIVE (42) # LLVM: Type: R_386_GOT32X (43) -# GNU: Relocation section '.rel.text' at offset 0x128 contains 41 entries: +# GNU: Relocation section '.rel.text' at offset 0x38 contains 41 entries: # GNU-NEXT: Offset Info Type Sym. Value Symbol's Name # GNU-NEXT: 00000002 00000100 R_386_NONE 00000000 foo # GNU-NEXT: 00000008 00000101 R_386_32 00000000 foo diff --git a/llvm/test/tools/llvm-readobj/reloc-types-elf-x64.test b/llvm/test/tools/llvm-readobj/reloc-types-elf-x64.test index 021fbb5d3d7..ad4e06fc955 100644 --- a/llvm/test/tools/llvm-readobj/reloc-types-elf-x64.test +++ b/llvm/test/tools/llvm-readobj/reloc-types-elf-x64.test @@ -46,7 +46,7 @@ # LLVM: Type: R_X86_64_GOTPCRELX (41) # LLVM: Type: R_X86_64_REX_GOTPCRELX (42) -# GNU: Relocation section '.rela.text' at offset 0x1c8 contains 40 entries: +# GNU: Relocation section '.rela.text' at offset 0x48 contains 40 entries: # GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend # GNU-NEXT: 0000000000000003 0000000100000000 R_X86_64_NONE 0000000000000000 foo + 0 # GNU-NEXT: 000000000000000a 0000000100000001 R_X86_64_64 0000000000000000 foo + 0 diff --git a/llvm/test/tools/llvm-readobj/unwind.test b/llvm/test/tools/llvm-readobj/unwind.test index fa7aa5c4220..7463b2713e6 100644 --- a/llvm/test/tools/llvm-readobj/unwind.test +++ b/llvm/test/tools/llvm-readobj/unwind.test @@ -3,7 +3,7 @@ # CHECK: EH_FRAME Header [ # CHECK-NEXT: Address: 0x4013c0 -# CHECK-NEXT: Offset: 0x27c +# CHECK-NEXT: Offset: 0xbc # CHECK-NEXT: Size: 0x3c # CHECK-NEXT: Corresponding Section: .eh_frame_hdr # CHECK-NEXT: Header { @@ -40,7 +40,7 @@ # CHECK-NEXT: } # CHECK-NEXT:] -# CHECK: .eh_frame section at offset 0x2b8 address 0x401400: +# CHECK: .eh_frame section at offset 0xf8 address 0x401400: # CHECK-NEXT: [0x401400] CIE length=20 # CHECK-NEXT: version: 1 # CHECK-NEXT: augmentation: zR diff --git a/llvm/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml b/llvm/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml index c8e583f5033..47f138043aa 100644 --- a/llvm/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml +++ b/llvm/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml @@ -75,7 +75,7 @@ DynamicSymbols: # CASE4-NEXT: SHF_ALLOC # CASE4-NEXT: ] # CASE4-NEXT: Address: 0x0 -# CASE4-NEXT: Offset: 0x180 +# CASE4-NEXT: Offset: 0x40 # CASE4-NEXT: Size: 2 # CASE4-NEXT: Link: 0 # CASE4-NEXT: Info: 1 @@ -107,7 +107,7 @@ Sections: # CASE5-NEXT: SHF_ALLOC # CASE5-NEXT: ] # CASE5-NEXT: Address: 0x0 -# CASE5-NEXT: Offset: 0x180 +# CASE5-NEXT: Offset: 0x40 # CASE5-NEXT: Size: 5 # CASE5-NEXT: Link: 0 # CASE5-NEXT: Info: 1 @@ -141,7 +141,7 @@ Sections: # CASE6-NEXT: SHF_ALLOC # CASE6-NEXT: ] # CASE6-NEXT: Address: 0x0 -# CASE6-NEXT: Offset: 0x180 +# CASE6-NEXT: Offset: 0x40 # CASE6-NEXT: Size: 4 # CASE6-NEXT: Link: 0 # CASE6-NEXT: Info: 1 @@ -175,7 +175,7 @@ Sections: # CASE7-NEXT: SHF_ALLOC # CASE7-NEXT: ] # CASE7-NEXT: Address: 0x0 -# CASE7-NEXT: Offset: 0x180 +# CASE7-NEXT: Offset: 0x40 # CASE7-NEXT: Size: 2 # CASE7-NEXT: Link: 0 # CASE7-NEXT: Info: 1 diff --git a/llvm/test/tools/yaml2obj/elf-custom-null-section.yaml b/llvm/test/tools/yaml2obj/elf-custom-null-section.yaml index dc74a7bfa95..ea5f4560502 100644 --- a/llvm/test/tools/yaml2obj/elf-custom-null-section.yaml +++ b/llvm/test/tools/yaml2obj/elf-custom-null-section.yaml @@ -8,9 +8,9 @@ # DEFAULT: Section Headers: # DEFAULT-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # DEFAULT-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -# DEFAULT-NEXT: [ 1] .symtab SYMTAB 0000000000000000 000140 000018 18 2 1 8 -# DEFAULT-NEXT: [ 2] .strtab STRTAB 0000000000000000 000158 000001 00 0 0 1 -# DEFAULT-NEXT: [ 3] .shstrtab STRTAB 0000000000000000 000159 00001b 00 0 0 1 +# DEFAULT-NEXT: [ 1] .symtab SYMTAB 0000000000000000 000040 000018 18 2 1 8 +# DEFAULT-NEXT: [ 2] .strtab STRTAB 0000000000000000 000058 000001 00 0 0 1 +# DEFAULT-NEXT: [ 3] .shstrtab STRTAB 0000000000000000 000059 00001b 00 0 0 1 --- !ELF FileHeader: @@ -104,10 +104,10 @@ Sections: # OTHER-SECTION: Section Headers: # OTHER-SECTION-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # OTHER-SECTION-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -# OTHER-SECTION-NEXT: [ 1] foo PROGBITS 0000000000000000 000180 000000 00 0 0 0 -# OTHER-SECTION-NEXT: [ 2] .symtab SYMTAB 0000000000000000 000180 000018 18 3 1 8 -# OTHER-SECTION-NEXT: [ 3] .strtab STRTAB 0000000000000000 000198 000001 00 0 0 1 -# OTHER-SECTION-NEXT: [ 4] .shstrtab STRTAB 0000000000000000 000199 00001f 00 0 0 1 +# OTHER-SECTION-NEXT: [ 1] foo PROGBITS 0000000000000000 000040 000000 00 0 0 0 +# OTHER-SECTION-NEXT: [ 2] .symtab SYMTAB 0000000000000000 000040 000018 18 3 1 8 +# OTHER-SECTION-NEXT: [ 3] .strtab STRTAB 0000000000000000 000058 000001 00 0 0 1 +# OTHER-SECTION-NEXT: [ 4] .shstrtab STRTAB 0000000000000000 000059 00001f 00 0 0 1 --- !ELF FileHeader: @@ -164,7 +164,7 @@ Sections: # MULTIPLE: Section Headers: # MULTIPLE-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al # MULTIPLE-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0 -# MULTIPLE-NEXT: [ 1] .foo NULL 0000000000000123 000180 000020 10 A 1 2 0 +# MULTIPLE-NEXT: [ 1] .foo NULL 0000000000000123 000040 000020 10 A 1 2 0 --- !ELF FileHeader: diff --git a/llvm/test/tools/yaml2obj/elf-header-sh-fields.yaml b/llvm/test/tools/yaml2obj/elf-header-sh-fields.yaml index 9bf64cddf1a..b887c0a90ea 100644 --- a/llvm/test/tools/yaml2obj/elf-header-sh-fields.yaml +++ b/llvm/test/tools/yaml2obj/elf-header-sh-fields.yaml @@ -6,7 +6,7 @@ # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-readelf --file-headers %t1 | FileCheck %s --check-prefix=DEFAULT -# DEFAULT: Start of section headers: 64 (bytes into file) +# DEFAULT: Start of section headers: 120 (bytes into file) # DEFAULT: Size of section headers: 64 (bytes) # DEFAULT: Number of section headers: 4 # DEFAULT: Section header string table index: 3 diff --git a/llvm/test/tools/yaml2obj/elf-override-shsize.yaml b/llvm/test/tools/yaml2obj/elf-override-shsize.yaml index 987369892bb..de2bb774f7d 100644 --- a/llvm/test/tools/yaml2obj/elf-override-shsize.yaml +++ b/llvm/test/tools/yaml2obj/elf-override-shsize.yaml @@ -7,17 +7,17 @@ # CASE1: Section Headers: # CASE1-NEXT: [Nr] Name Type Address Off Size # CASE1-NEXT: [ 0] NULL 0000000000000000 000000 000000 -# CASE1-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000380 000001 -# CASE1-NEXT: [ 2] .symtab SYMTAB 0000000000000000 000398 000002 -# CASE1-NEXT: [ 3] .dynamic DYNAMIC 0000000000000000 0003b0 000003 -# CASE1-NEXT: [ 4] .rela RELA 0000000000000000 0003b0 000004 -# CASE1-NEXT: [ 5] .nobits NOBITS 0000000000000000 0003b0 000005 -# CASE1-NEXT: [ 6] .group GROUP 0000000000000000 0003b0 000006 -# CASE1-NEXT: [ 7] .gnu.version VERSYM 0000000000000000 0003b0 000007 -# CASE1-NEXT: [ 8] .gnu.version_r VERNEED 0000000000000000 0003b0 000008 -# CASE1-NEXT: [ 9] .gnu.version_d VERDEF 0000000000000000 0003b0 000009 -# CASE1-NEXT: [10] .regular PROGBITS 0000000000000000 0003b0 00000a -# CASE1-NEXT: [11] .strtab STRTAB 0000000000000000 0003b0 00000b +# CASE1-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000001 +# CASE1-NEXT: [ 2] .symtab SYMTAB 0000000000000000 000058 000002 +# CASE1-NEXT: [ 3] .dynamic DYNAMIC 0000000000000000 000070 000003 +# CASE1-NEXT: [ 4] .rela RELA 0000000000000000 000070 000004 +# CASE1-NEXT: [ 5] .nobits NOBITS 0000000000000000 000070 000005 +# CASE1-NEXT: [ 6] .group GROUP 0000000000000000 000070 000006 +# CASE1-NEXT: [ 7] .gnu.version VERSYM 0000000000000000 000070 000007 +# CASE1-NEXT: [ 8] .gnu.version_r VERNEED 0000000000000000 000070 000008 +# CASE1-NEXT: [ 9] .gnu.version_d VERDEF 0000000000000000 000070 000009 +# CASE1-NEXT: [10] .regular PROGBITS 0000000000000000 000070 00000a +# CASE1-NEXT: [11] .strtab STRTAB 0000000000000000 000070 00000b --- !ELF FileHeader: diff --git a/llvm/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml b/llvm/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml index 88b2a4da63b..9624dd7ff5b 100644 --- a/llvm/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml +++ b/llvm/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml @@ -9,7 +9,7 @@ # CHECK: Section Headers: # CHECK-NEXT: [Nr] Name Type Address Off Size ES Flg Lk # CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 -# CHECK-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000180 000018 18 A 0 +# CHECK-NEXT: [ 1] .dynsym DYNSYM 0000000000000000 000040 000018 18 A 0 --- !ELF FileHeader: diff --git a/llvm/test/tools/yaml2obj/implicit-sections.test b/llvm/test/tools/yaml2obj/implicit-sections.test index fef2f1ea424..77e9e1c2f63 100644 --- a/llvm/test/tools/yaml2obj/implicit-sections.test +++ b/llvm/test/tools/yaml2obj/implicit-sections.test @@ -11,12 +11,12 @@ # CHECK: Section Headers: # CHECK-NEXT: [Nr] Name Type Address Off Size # CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 -# CHECK-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000200 000009 -# CHECK-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000209 000030 -# CHECK-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000239 000018 -# CHECK-NEXT: [ 4] .strtab STRTAB 0000000000000000 000251 000001 -# CHECK-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000252 000035 -# CHECK-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 000287 000000 +# CHECK-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000009 +# CHECK-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000049 000030 +# CHECK-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000079 000018 +# CHECK-NEXT: [ 4] .strtab STRTAB 0000000000000000 000091 000001 +# CHECK-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000092 000035 +# CHECK-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000c7 000000 --- !ELF FileHeader: @@ -55,12 +55,12 @@ DynamicSymbols: # NODYNSYM: Section Headers: # NODYNSYM-NEXT: [Nr] Name Type Address Off Size # NODYNSYM-NEXT: [ 0] NULL 0000000000000000 000000 000000 -# NODYNSYM-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000200 000001 -# NODYNSYM-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000201 000018 -# NODYNSYM-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000219 000018 -# NODYNSYM-NEXT: [ 4] .strtab STRTAB 0000000000000000 000231 000001 -# NODYNSYM-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000232 000035 -# NODYNSYM-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 000267 000000 +# NODYNSYM-NEXT: [ 1] .dynstr STRTAB 0000000000000100 000040 000001 +# NODYNSYM-NEXT: [ 2] .dynsym DYNSYM 0000000000000150 000041 000018 +# NODYNSYM-NEXT: [ 3] .symtab SYMTAB 0000000000000000 000059 000018 +# NODYNSYM-NEXT: [ 4] .strtab STRTAB 0000000000000000 000071 000001 +# NODYNSYM-NEXT: [ 5] .shstrtab STRTAB 0000000000000000 000072 000035 +# NODYNSYM-NEXT: [ 6] .text.foo PROGBITS 0000000000000200 0000a7 000000 --- !ELF FileHeader: diff --git a/llvm/test/tools/yaml2obj/program-header-align.yaml b/llvm/test/tools/yaml2obj/program-header-align.yaml index 88b5d2722e0..7c307712e4c 100644 --- a/llvm/test/tools/yaml2obj/program-header-align.yaml +++ b/llvm/test/tools/yaml2obj/program-header-align.yaml @@ -37,7 +37,7 @@ ProgramHeaders: #CHECK: ProgramHeaders [ #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD -#CHECK-NEXT: Offset: 0x230 +#CHECK-NEXT: Offset: 0xB0 #CHECK-NEXT: VirtualAddress: 0xAAAA1030 #CHECK-NEXT: PhysicalAddress: 0xFFFF1030 #CHECK-NEXT: FileSize: 4 @@ -50,7 +50,7 @@ ProgramHeaders: #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD -#CHECK-NEXT: Offset: 0x240 +#CHECK-NEXT: Offset: 0xC0 #CHECK-NEXT: VirtualAddress: 0xAAAA2040 #CHECK-NEXT: PhysicalAddress: 0xFFFF2040 #CHECK-NEXT: FileSize: 4 diff --git a/llvm/test/tools/yaml2obj/section-size-content.yaml b/llvm/test/tools/yaml2obj/section-size-content.yaml index 5b231a8362a..bc7a1a05c59 100644 --- a/llvm/test/tools/yaml2obj/section-size-content.yaml +++ b/llvm/test/tools/yaml2obj/section-size-content.yaml @@ -31,7 +31,7 @@ Sections: # CASE2-NEXT: Flags [ # CASE2-NEXT: ] # CASE2-NEXT: Address: 0x0 -# CASE2-NEXT: Offset: 0x180 +# CASE2-NEXT: Offset: 0x40 # CASE2-NEXT: Size: 1 # CASE2-NEXT: Link: 0 # CASE2-NEXT: Info: 0 @@ -79,7 +79,7 @@ Sections: # CASE3-NEXT: Flags [ # CASE3-NEXT: ] # CASE3-NEXT: Address: 0x0 -# CASE3-NEXT: Offset: 0x180 +# CASE3-NEXT: Offset: 0x40 # CASE3-NEXT: Size: 1 # CASE3-NEXT: Link: 0 # CASE3-NEXT: Info: 0 @@ -112,7 +112,7 @@ Sections: # CASE4-NEXT: Flags [ # CASE4-NEXT: ] # CASE4-NEXT: Address: 0x0 -# CASE4-NEXT: Offset: 0x180 +# CASE4-NEXT: Offset: 0x40 # CASE4-NEXT: Size: 3 # CASE4-NEXT: Link: 0 # CASE4-NEXT: Info: 0 @@ -144,7 +144,7 @@ Sections: # CASE5-NEXT: Flags [ # CASE5-NEXT: ] # CASE5-NEXT: Address: 0x0 -# CASE5-NEXT: Offset: 0x180 +# CASE5-NEXT: Offset: 0x40 # CASE5-NEXT: Size: 0 --- !ELF diff --git a/llvm/test/tools/yaml2obj/strtab-implicit-sections-size-content.yaml b/llvm/test/tools/yaml2obj/strtab-implicit-sections-size-content.yaml index a634997b42d..a2be271d728 100644 --- a/llvm/test/tools/yaml2obj/strtab-implicit-sections-size-content.yaml +++ b/llvm/test/tools/yaml2obj/strtab-implicit-sections-size-content.yaml @@ -34,7 +34,7 @@ Symbols: # CASE2-NEXT: Flags [ # CASE2-NEXT: ] # CASE2-NEXT: Address: 0x0 -# CASE2-NEXT: Offset: 0x140 +# CASE2-NEXT: Offset: 0x40 # CASE2-NEXT: Size: 2 # CASE2-NEXT: Link: 0 # CASE2-NEXT: Info: 0 @@ -69,7 +69,7 @@ Symbols: # CASE3-NEXT: Flags [ # CASE3-NEXT: ] # CASE3-NEXT: Address: 0x0 -# CASE3-NEXT: Offset: 0x140 +# CASE3-NEXT: Offset: 0x40 # CASE3-NEXT: Size: 2 # CASE3-NEXT: Link: 0 # CASE3-NEXT: Info: 0 @@ -105,7 +105,7 @@ Symbols: # CASE4-NEXT: Flags [ # CASE4-NEXT: ] # CASE4-NEXT: Address: 0x0 -# CASE4-NEXT: Offset: 0x140 +# CASE4-NEXT: Offset: 0x40 # CASE4-NEXT: Size: 3 # CASE4-NEXT: Link: 0 # CASE4-NEXT: Info: 0 @@ -141,7 +141,7 @@ Symbols: # CASE5-NEXT: Flags [ (0x0) # CASE5-NEXT: ] # CASE5-NEXT: Address: 0x0 -# CASE5-NEXT: Offset: 0x140 +# CASE5-NEXT: Offset: 0x40 # CASE5-NEXT: Size: 2 # CASE5-NEXT: Link: 0 # CASE5-NEXT: Info: 0 diff --git a/llvm/test/tools/yaml2obj/symtab-implicit-sections-size-content.yaml b/llvm/test/tools/yaml2obj/symtab-implicit-sections-size-content.yaml index 4981dbd61ef..c0c9b4ae812 100644 --- a/llvm/test/tools/yaml2obj/symtab-implicit-sections-size-content.yaml +++ b/llvm/test/tools/yaml2obj/symtab-implicit-sections-size-content.yaml @@ -70,7 +70,7 @@ Symbols: # CASE4-NEXT: Flags [ (0x0) # CASE4-NEXT: ] # CASE4-NEXT: Address: 0x0 -# CASE4-NEXT: Offset: 0x140 +# CASE4-NEXT: Offset: 0x40 # CASE4-NEXT: Size: 2 # CASE4-NEXT: Link: 2 # CASE4-NEXT: Info: 1 @@ -101,7 +101,7 @@ Sections: # CASE5-NEXT: Flags [ (0x0) # CASE5-NEXT: ] # CASE5-NEXT: Address: 0x0 -# CASE5-NEXT: Offset: 0x140 +# CASE5-NEXT: Offset: 0x40 # CASE5-NEXT: Size: 5 # CASE5-NEXT: Link: 2 # CASE5-NEXT: Info: 1 @@ -134,7 +134,7 @@ Sections: # CASE6-NEXT: Flags [ # CASE6-NEXT: ] # CASE6-NEXT: Address: 0x0 -# CASE6-NEXT: Offset: 0x140 +# CASE6-NEXT: Offset: 0x40 # CASE6-NEXT: Size: 4 # CASE6-NEXT: Link: 2 # CASE6-NEXT: Info: 1 @@ -167,7 +167,7 @@ Sections: # CASE7-NEXT: Flags [ # CASE7-NEXT: ] # CASE7-NEXT: Address: 0x0 -# CASE7-NEXT: Offset: 0x140 +# CASE7-NEXT: Offset: 0x40 # CASE7-NEXT: Size: 2 # CASE7-NEXT: Link: 2 # CASE7-NEXT: Info: 1 diff --git a/llvm/test/tools/yaml2obj/versym-section.yaml b/llvm/test/tools/yaml2obj/versym-section.yaml index 6e0cecba19e..bd4f61093e9 100644 --- a/llvm/test/tools/yaml2obj/versym-section.yaml +++ b/llvm/test/tools/yaml2obj/versym-section.yaml @@ -7,7 +7,7 @@ # CHECK: Version symbols { # CHECK-NEXT: Section Name: .gnu.version # CHECK-NEXT: Address: 0x200210 -# CHECK-NEXT: Offset: 0x240 +# CHECK-NEXT: Offset: 0x40 # CHECK-NEXT: Link: 6 # CHECK-NEXT: Symbols [ # CHECK-NEXT: Symbol { @@ -97,7 +97,7 @@ DynamicSymbols: # ENTSIZE: Section Headers: # ENTSIZE: [Nr] Name Type Address Off Size ES -# ENTSIZE: [ 1] .gnu.version VERSYM 0000000000000000 000180 000000 03 +# ENTSIZE: [ 1] .gnu.version VERSYM 0000000000000000 000040 000000 03 --- !ELF FileHeader: |