[yaml2obj] Write the section header table after section contents
authorFangrui Song <maskray@google.com>
Thu, 5 Sep 2019 14:25:57 +0000 (14:25 +0000)
committerFangrui Song <maskray@google.com>
Thu, 5 Sep 2019 14:25:57 +0000 (14:25 +0000)
Linkers (ld.bfd/gold/lld) place the section header table at the very
end. This allows tools to strip it, which is optional in executable/shared objects.
In addition, if we add or section, the size of the section header table
will change. Placing the section header table in the end keeps section
offsets unchanged.

yaml2obj currently places the section header table immediately after the
program header. Follow what linkers do to make offset updating easier.

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D67221

llvm-svn: 371074

36 files changed:
llvm/lib/ObjectYAML/ELFEmitter.cpp
llvm/test/Object/invalid.test
llvm/test/tools/llvm-objcopy/ELF/group-reorder.test
llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test
llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test
llvm/test/tools/llvm-objcopy/ELF/overlapping-sections-in-segments.test
llvm/test/tools/llvm-objcopy/ELF/overlapping-sections.test
llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test
llvm/test/tools/llvm-readobj/elf-broken-dynsym-link.test
llvm/test/tools/llvm-readobj/elf-dynamic-malformed.test
llvm/test/tools/llvm-readobj/elf-dynamic-no-pt-dynamic.test
llvm/test/tools/llvm-readobj/elf-file-headers.test
llvm/test/tools/llvm-readobj/elf-hidden-versym.test
llvm/test/tools/llvm-readobj/elf-invalid-shstrndx.test
llvm/test/tools/llvm-readobj/elf-invalid-versioning.test
llvm/test/tools/llvm-readobj/elf-loadname.test
llvm/test/tools/llvm-readobj/elf-packed-relocs.test
llvm/test/tools/llvm-readobj/elf-relr-relocs.test
llvm/test/tools/llvm-readobj/elf-versioninfo.test
llvm/test/tools/llvm-readobj/elf-wrong-shstrtab-type.test
llvm/test/tools/llvm-readobj/gnu-notes.test
llvm/test/tools/llvm-readobj/gnu-sections.test
llvm/test/tools/llvm-readobj/reloc-types-elf-i386.test
llvm/test/tools/llvm-readobj/reloc-types-elf-x64.test
llvm/test/tools/llvm-readobj/unwind.test
llvm/test/tools/yaml2obj/dynsymtab-implicit-sections-size-content.yaml
llvm/test/tools/yaml2obj/elf-custom-null-section.yaml
llvm/test/tools/yaml2obj/elf-header-sh-fields.yaml
llvm/test/tools/yaml2obj/elf-override-shsize.yaml
llvm/test/tools/yaml2obj/explicit-dynsym-no-dynstr.yaml
llvm/test/tools/yaml2obj/implicit-sections.test
llvm/test/tools/yaml2obj/program-header-align.yaml
llvm/test/tools/yaml2obj/section-size-content.yaml
llvm/test/tools/yaml2obj/strtab-implicit-sections-size-content.yaml
llvm/test/tools/yaml2obj/symtab-implicit-sections-size-content.yaml
llvm/test/tools/yaml2obj/versym-section.yaml

index cd3a0faa03df60af39d47e3b34cf8733ed41a845..362a9432568f365a2cc945c884630d694094a682 100644 (file)
@@ -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;
 }
 
index 8a75ecd3b779e96fe23d9f127bd66e86ac486253..397c948001e3f08160bc98790d3d289751e5d5fb 100644 (file)
@@ -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:
index 25d0cd52131339b329a1661e77ae30be7e07f8f9..25c57bea220f129edd9a26ad53262ea4ea555333 100644 (file)
@@ -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
index 9ebfc11e3c73aa1da924af6b5ab925d0ea2b9fc6..fc2e08484b291ff998715ad5786501ed3e288462 100644 (file)
@@ -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)"
index fdb54da5d73af759eafae3ec49f0c0107011ef98..b2f746e04200342430746665acfe278e71278dc0 100644 (file)
@@ -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:
index 2998d5c78333fbd12969de1ac812e324ca369ec5..cd92a7eb643e2f54a00c412a51b64a216e82412c 100644 (file)
@@ -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
index 1ab0bb66c750c33d7c89e6bccadcdfc60e165c52..2c470e6adc16a22d7ae95af09668d537a9431bce 100644 (file)
@@ -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
index 3352313c2714b0faa56f5a80102b5a16b2f5604a..4afd2c9285e1e0e46265354a9fb32e0098a96267 100644 (file)
@@ -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
index bbd13b8f94748a221716d93c4bfc09f1f7a86f72..d64b1dfb11a87b90ee8f8d3aac21cd378157c899 100644 (file)
 # 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
index 9a117281f26981a1480e92e245c13c34aab8965a..b377eaee21341ba6594b1b049da47b348a3a7f0c 100644 (file)
@@ -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
index 89e660337b5f59d4ca405f14bef7badf6ff101b4..8fa7f655249f6f98639d28c94fbf2ab4bfefabd5 100644 (file)
@@ -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
 
index d48f31bae3083e43c3c12f129fa56180e74cbbfc..21631ca0fc63b17ba97565ffa631a66e0bba432e 100644 (file)
@@ -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
index 0b37b9cead8e485190e034d2919fff5013db4dd5..b6cf05aad48c62077b0156aabe0057383eef0f70 100644 (file)
@@ -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
index 6dc3b11dfd2839b3f9219e4a095e3b3ea92d3b7b..ba899141f23333bdb881fb298ad3806baeedb6db 100644 (file)
@@ -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:
index a1acc9a03e3e8cbf283195fa3a6accd283b41202..ae1b2ad6c517337d6acba4ba6bb5136779f00c30 100644 (file)
@@ -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
index 17006a1b78958bdea0fad3d946958aec530a3571..d12076fd46c67e912d55e7bbeff1da67a1795c8c 100644 (file)
@@ -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)
index 4de725d130a7d6a6e9b3d654dbdbe950032d45a5..4c1ddfcb40f6da9a7fe295414a3ae038588a7335 100644 (file)
@@ -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
index da1b6abe52c39281fae2b96dee5805a229c10a41..3badb736ae90ee4c90d2df99de2acbfc41d990f5 100644 (file)
@@ -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
index ba48e91b21c9b8fc89f49570187a9f8840b87c4b..606a96a9d4fd090184fa23915a457caf78b3ac4d 100644 (file)
@@ -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
index 24e6d3c195962a340c8f3784b9062045215cd654..6a600dc3b69af56108ef98a7fd55e33963db3906 100644 (file)
@@ -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.
 
index b72a6e3a9e652d0039ef7962dc09d2ca431e0bce..b3801f59ebff3cd200d40e2cac930006909df81e 100644 (file)
@@ -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:
index 17a0c4cb8eb269ad635f13cc9732ca8785d401e0..c5c67330ef3cfaf3a9aa97bfa4a903324763ea21 100644 (file)
@@ -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)
index 1f661e40318a82bba72ce820704e1925c282b7f1..8606f3fa8cba5fb21c4acb373b123b3245bb7163 100644 (file)
@@ -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
index 021fbb5d3d78c5deac78a687a66998a50ac430ca..ad4e06fc955a3666763173fa71ee882909835a05 100644 (file)
@@ -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
index fa7aa5c4220a9d499ceae093ba95fbf5cafe132e..7463b2713e682d481e0a109c5666aba9616a6181 100644 (file)
@@ -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
index c8e583f5033cd210c1f2aa09ed84685b16160458..47f138043aa4900ae6813ac8c19264f6d7ca1b00 100644 (file)
@@ -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
index dc74a7bfa95e4873c09299a352990d5fb646a58a..ea5f45605028f0ede3c92a615d6b57177ec1b72f 100644 (file)
@@ -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:
index 9bf64cddf1a1ee1b05d659d9f514e2d37f47a485..b887c0a90ea3b72a729f6ea9652578d6059f2b5d 100644 (file)
@@ -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
index 987369892bb984d085bc50bde9d6c63349df07ed..de2bb774f7d1b018163438776111ac4c13941b03 100644 (file)
@@ -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:
index 88b2a4da63b4dfe77f8f3e71dbb15552df22d2e9..9624dd7ff5b00e5c127185d8731af5ef7961cd69 100644 (file)
@@ -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:
index fef2f1ea4243c7dc1d500e9d4493ee365b05aaef..77e9e1c2f630851aa10b7d2352e82c4992cab1f8 100644 (file)
 # 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:
index 88b5d2722e0fee0be8767dfdbde459d42d350c49..7c307712e4c260a82e71f8a06811f1d7fdfaf653 100644 (file)
@@ -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
index 5b231a8362ab1c08757565e54754c56067497c04..bc7a1a05c59be502bdf882bbf7e19a55fb9c7f79 100644 (file)
@@ -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
index a634997b42d8079d0e3feecc298fca92f6f16177..a2be271d728e872f08db72385197099b932ab1ce 100644 (file)
@@ -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
index 4981dbd61eff40072187c288a33c43e4ebcf9ba7..c0c9b4ae8129bcd897a8ca2b82aebb0905701fae 100644 (file)
@@ -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
index 6e0cecba19e224bf238f2e1ffd1ef341b2866516..bd4f61093e9188fd0c77751a99f26824096b189d 100644 (file)
@@ -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: