[lld] r193662 - [ELF] Implement minimal support for .eh_frame_hdr.

Nick Kledzik kledzik at apple.com
Tue Oct 29 17:39:32 PDT 2013


This could also be modeled as a Pass which looks for FDE atoms and creates a big index atom which has a custom section named .eh_frame_hdr.  The big atom has references to each FDE atom, which are fixed up by normal processing.

-Nick

On Oct 29, 2013, at 5:02 PM, Michael J. Spencer <bigcheesegs at gmail.com> wrote:
> Author: mspencer
> Date: Tue Oct 29 19:02:04 2013
> New Revision: 193662
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=193662&view=rev
> Log:
> [ELF] Implement minimal support for .eh_frame_hdr.
> 
> Added:
>    lld/trunk/test/elf/eh_frame_hdr.test
> Modified:
>    lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
>    lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h
>    lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
>    lld/trunk/test/elf/X86_64/debug.test
>    lld/trunk/test/elf/X86_64/layoutpass-order.test
>    lld/trunk/test/elf/X86_64/omagic.test
>    lld/trunk/test/elf/X86_64/underscore-end.test
>    lld/trunk/test/elf/X86_64/yamlinput.test
>    lld/trunk/test/elf/entry.objtxt
>    lld/trunk/test/elf/ifunc.test
>    lld/trunk/test/elf/phdr.test
>    lld/trunk/test/elf/symbols.test
> 
> Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)
> +++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Tue Oct 29 19:02:04 2013
> @@ -439,7 +439,6 @@ Layout::SegmentType DefaultLayout<ELFT>:
>   case ORDER_FINI:
>   case ORDER_RODATA:
>   case ORDER_EH_FRAME:
> -  case ORDER_EH_FRAMEHDR:
>     return llvm::ELF::PT_LOAD;
> 
>   case ORDER_RO_NOTE:
> @@ -453,6 +452,9 @@ Layout::SegmentType DefaultLayout<ELFT>:
>   case ORDER_DTORS:
>     return llvm::ELF::PT_GNU_RELRO;
> 
> +  case ORDER_EH_FRAMEHDR:
> +    return llvm::ELF::PT_GNU_EH_FRAME;
> +
>   case ORDER_GOT:
>   case ORDER_GOT_PLT:
>   case ORDER_DATA:
> 
> Modified: lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h (original)
> +++ lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h Tue Oct 29 19:02:04 2013
> @@ -105,6 +105,7 @@ protected:
>   LLD_UNIQUE_BUMP_PTR(StringTable<ELFT>) _strtab;
>   LLD_UNIQUE_BUMP_PTR(StringTable<ELFT>) _shstrtab;
>   LLD_UNIQUE_BUMP_PTR(SectionHeader<ELFT>) _shdrtab;
> +  LLD_UNIQUE_BUMP_PTR(EHFrameHeader<ELFT>) _ehFrameHeader;
>   /// \name Dynamic sections.
>   /// @{
>   LLD_UNIQUE_BUMP_PTR(DynamicTable<ELFT>) _dynamicTable;
> @@ -267,6 +268,15 @@ template <class ELFT> void OutputELFWrit
>   _symtab->setStringSection(_strtab.get());
>   _layout->addSection(_shdrtab.get());
> 
> +  for (auto sec : _layout->sections()) {
> +    if (sec->name() != ".eh_frame")
> +      continue;
> +    _ehFrameHeader.reset(new (_alloc) EHFrameHeader<ELFT>(
> +        _context, ".eh_frame_hdr", DefaultLayout<ELFT>::ORDER_EH_FRAMEHDR));
> +    _layout->addSection(_ehFrameHeader.get());
> +    break;
> +  }
> +
>   if (_context.isDynamic()) {
>     _dynamicTable.reset(new (_alloc) DynamicTable<ELFT>(
>         _context, ".dynamic", DefaultLayout<ELFT>::ORDER_DYNAMIC));
> 
> Modified: lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h (original)
> +++ lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h Tue Oct 29 19:02:04 2013
> @@ -26,6 +26,7 @@
> #include "llvm/Object/ELF.h"
> #include "llvm/Support/Allocator.h"
> #include "llvm/Support/Debug.h"
> +#include "llvm/Support/Dwarf.h"
> #include "llvm/Support/ELF.h"
> #include "llvm/Support/ErrorHandling.h"
> #include "llvm/Support/FileOutputBuffer.h"
> @@ -1284,6 +1285,52 @@ private:
>   std::vector<uint32_t> _chains;
>   const DynamicSymbolTable<ELFT> *_symbolTable;
> };
> +
> +template <class ELFT> class EHFrameHeader : public Section<ELFT> {
> +public:
> +  EHFrameHeader(const ELFLinkingContext &context, StringRef name, int32_t order)
> +      : Section<ELFT>(context, name) {
> +    this->setOrder(order);
> +    this->_entSize = 0;
> +    this->_type = SHT_PROGBITS;
> +    this->_flags = SHF_ALLOC;
> +    // Set the alignment properly depending on the target architecture
> +    if (context.is64Bits())
> +      this->_align2 = 8;
> +    else
> +      this->_align2 = 4;
> +    // Minimum size for empty .eh_frame_hdr.
> +    this->_fsize = 1 + 1 + 1 + 1 + 4;
> +    this->_msize = this->_fsize;
> +  }
> +
> +  virtual void doPreFlight() LLVM_OVERRIDE {
> +    // TODO: Generate a proper binary search table.
> +  }
> +
> +  virtual void finalize() LLVM_OVERRIDE {
> +    MergedSections<ELFT> *s = this->_context.template getTargetHandler<ELFT>()
> +                                  .targetLayout()
> +                                  .findOutputSection(".eh_frame");
> +    _ehFrameAddr = s ? s->virtualAddr() : 0;
> +  }
> +
> +  virtual void write(ELFWriter *writer,
> +                     llvm::FileOutputBuffer &buffer) LLVM_OVERRIDE {
> +    uint8_t *chunkBuffer = buffer.getBufferStart();
> +    uint8_t *dest = chunkBuffer + this->fileOffset();
> +    int pos = 0;
> +    dest[pos++] = 1; // version
> +    dest[pos++] = llvm::dwarf::DW_EH_PE_udata4; // eh_frame_ptr_enc
> +    dest[pos++] = llvm::dwarf::DW_EH_PE_omit; // fde_count_enc
> +    dest[pos++] = llvm::dwarf::DW_EH_PE_omit; // table_enc
> +    *reinterpret_cast<typename llvm::object::ELFFile<ELFT>::Elf_Word *>(
> +         dest + pos) = (uint32_t)_ehFrameAddr;
> +  }
> +
> +private:
> +  uint64_t _ehFrameAddr;
> +};
> } // end namespace elf
> } // end namespace lld
> 
> 
> Modified: lld/trunk/test/elf/X86_64/debug.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/debug.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/debug.test (original)
> +++ lld/trunk/test/elf/X86_64/debug.test Tue Oct 29 19:02:04 2013
> @@ -51,7 +51,7 @@ ELF: }
> RELOC: Contents of section .debug_info:
> RELOC:  0000 4e000000 04000000 00000801 3a000000  N...........:...
> #                                       ^^ Relocation: ._debug_str + 0x3a
> -RELOC:  0010 01780000 00000000 00a40140 00000000  .x......... at ....
> +RELOC:  0010 01780000 00000000 00dc0140 00000000  .x......... at ....
> #              ^^ Relocation: .debug_str + 0x78
> RELOC:  0020 00100000 00000000 00000000 00028100  ................
> #                                           ^^ Relocation: .debug_str + 0x81
> 
> Modified: lld/trunk/test/elf/X86_64/layoutpass-order.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/layoutpass-order.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/layoutpass-order.test (original)
> +++ lld/trunk/test/elf/X86_64/layoutpass-order.test Tue Oct 29 19:02:04 2013
> @@ -7,8 +7,8 @@ RUN: --noinhibit-exec -static
> 
> RUN: llvm-nm -n %t | FileCheck -check-prefix=SYMBOLSORDER %s
> 
> -SYMBOLSORDER: 004000b0 T main
> -SYMBOLSORDER: 004000c5 T b
> -SYMBOLSORDER: 004000d0 T a
> -SYMBOLSORDER: 004000db T c
> -SYMBOLSORDER: 004000e8 T d
> +SYMBOLSORDER: {{[A-Fa-f0-9]+}} T main
> +SYMBOLSORDER: {{[A-Fa-f0-9]+}} T b
> +SYMBOLSORDER: {{[A-Fa-f0-9]+}} T a
> +SYMBOLSORDER: {{[A-Fa-f0-9]+}} T c
> +SYMBOLSORDER: {{[A-Fa-f0-9]+}} T d
> 
> Modified: lld/trunk/test/elf/X86_64/omagic.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/omagic.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/omagic.test (original)
> +++ lld/trunk/test/elf/X86_64/omagic.test Tue Oct 29 19:02:04 2013
> @@ -26,8 +26,8 @@ OMAGICSECTIONS:    Flags [ (0x6)
> OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_EXECINSTR (0x4)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x4000B0
> -OMAGICSECTIONS:    Offset: 0xB0
> +OMAGICSECTIONS:    Address: 0x4000E8
> +OMAGICSECTIONS:    Offset: 0xE8
> OMAGICSECTIONS:    Size: 11
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -40,8 +40,8 @@ OMAGICSECTIONS:    Type: SHT_PROGBITS (0
> OMAGICSECTIONS:    Flags [ (0x2)
> OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x4000C0
> -OMAGICSECTIONS:    Offset: 0xC0
> +OMAGICSECTIONS:    Address: 0x4000F8
> +OMAGICSECTIONS:    Offset: 0xF8
> OMAGICSECTIONS:    Size: 56
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -49,6 +49,20 @@ OMAGICSECTIONS:    AddressAlignment: 8
> OMAGICSECTIONS:    EntrySize: 0
> OMAGICSECTIONS:  }
> OMAGICSECTIONS:  Section {
> +OMAGICSECTIONS:    Name: .eh_frame_hdr
> +OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> +OMAGICSECTIONS:    Flags [ (0x2)
> +OMAGICSECTIONS:      SHF_ALLOC (0x2)
> +OMAGICSECTIONS:    ]
> +OMAGICSECTIONS:    Address: 0x400130
> +OMAGICSECTIONS:    Offset: 0x130
> +OMAGICSECTIONS:    Size: 8
> +OMAGICSECTIONS:    Link: 0
> +OMAGICSECTIONS:    Info: 0
> +OMAGICSECTIONS:    AddressAlignment: 8
> +OMAGICSECTIONS:    EntrySize: 0
> +OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  Section {
> OMAGICSECTIONS:    Name: .tdata
> OMAGICSECTIONS:    Type: SHT_PROGBITS (0x1)
> OMAGICSECTIONS:    Flags [ (0x403)
> @@ -56,8 +70,8 @@ OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_TLS (0x400)
> OMAGICSECTIONS:      SHF_WRITE (0x1)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x4000F8
> -OMAGICSECTIONS:    Offset: 0xF8
> +OMAGICSECTIONS:    Address: 0x400138
> +OMAGICSECTIONS:    Offset: 0x138
> OMAGICSECTIONS:    Size: 4
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -72,8 +86,8 @@ OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_TLS (0x400)
> OMAGICSECTIONS:      SHF_WRITE (0x1)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x4000FC
> -OMAGICSECTIONS:    Offset: 0xFC
> +OMAGICSECTIONS:    Address: 0x40013C
> +OMAGICSECTIONS:    Offset: 0x13C
> OMAGICSECTIONS:    Size: 8
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -87,8 +101,8 @@ OMAGICSECTIONS:    Flags [ (0x3)
> OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_WRITE (0x1)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x400100
> -OMAGICSECTIONS:    Offset: 0x100
> +OMAGICSECTIONS:    Address: 0x400140
> +OMAGICSECTIONS:    Offset: 0x140
> OMAGICSECTIONS:    Size: 0
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -102,8 +116,8 @@ OMAGICSECTIONS:    Flags [ (0x3)
> OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_WRITE (0x1)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x400100
> -OMAGICSECTIONS:    Offset: 0x100
> +OMAGICSECTIONS:    Address: 0x400140
> +OMAGICSECTIONS:    Offset: 0x140
> OMAGICSECTIONS:    Size: 4
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -117,8 +131,8 @@ OMAGICSECTIONS:    Flags [ (0x3)
> OMAGICSECTIONS:      SHF_ALLOC (0x2)
> OMAGICSECTIONS:      SHF_WRITE (0x1)
> OMAGICSECTIONS:    ]
> -OMAGICSECTIONS:    Address: 0x400104
> -OMAGICSECTIONS:    Offset: 0x104
> +OMAGICSECTIONS:    Address: 0x400144
> +OMAGICSECTIONS:    Offset: 0x144
> OMAGICSECTIONS:    Size: 0
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -131,7 +145,7 @@ OMAGICSECTIONS:    Type: SHT_PROGBITS (0
> OMAGICSECTIONS:    Flags [ (0x0)
> OMAGICSECTIONS:    ]
> OMAGICSECTIONS:    Address: 0x0
> -OMAGICSECTIONS:    Offset: 0x104
> +OMAGICSECTIONS:    Offset: 0x144
> OMAGICSECTIONS:    Size: 43
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -144,7 +158,7 @@ OMAGICSECTIONS:    Type: SHT_PROGBITS (0
> OMAGICSECTIONS:    Flags [ (0x0)
> OMAGICSECTIONS:    ]
> OMAGICSECTIONS:    Address: 0x0
> -OMAGICSECTIONS:    Offset: 0x12F
> +OMAGICSECTIONS:    Offset: 0x16F
> OMAGICSECTIONS:    Size: 0
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> @@ -157,8 +171,8 @@ OMAGICSECTIONS:    Type: SHT_STRTAB (0x3
> OMAGICSECTIONS:    Flags [ (0x0)
> OMAGICSECTIONS:    ]
> OMAGICSECTIONS:    Address: 0x0
> -OMAGICSECTIONS:    Offset: 0x12F
> -OMAGICSECTIONS:    Size: 101
> +OMAGICSECTIONS:    Offset: 0x16F
> +OMAGICSECTIONS:    Size: 115
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> OMAGICSECTIONS:    AddressAlignment: 1
> @@ -170,9 +184,9 @@ OMAGICSECTIONS:    Type: SHT_SYMTAB (0x2
> OMAGICSECTIONS:    Flags [ (0x0)
> OMAGICSECTIONS:    ]
> OMAGICSECTIONS:    Address: 0x0
> -OMAGICSECTIONS:    Offset: 0x198
> +OMAGICSECTIONS:    Offset: 0x1E8
> OMAGICSECTIONS:    Size: 528
> -OMAGICSECTIONS:    Link: 12
> +OMAGICSECTIONS:    Link: 13
> OMAGICSECTIONS:    Info: 2
> OMAGICSECTIONS:    AddressAlignment: 8
> OMAGICSECTIONS:    EntrySize: 24
> @@ -183,13 +197,14 @@ OMAGICSECTIONS:    Type: SHT_STRTAB (0x3
> OMAGICSECTIONS:    Flags [ (0x0)
> OMAGICSECTIONS:    ]
> OMAGICSECTIONS:    Address: 0x0
> -OMAGICSECTIONS:    Offset: 0x3A8
> +OMAGICSECTIONS:    Offset: 0x3F8
> OMAGICSECTIONS:    Size: 246
> OMAGICSECTIONS:    Link: 0
> OMAGICSECTIONS:    Info: 0
> OMAGICSECTIONS:    AddressAlignment: 1
> OMAGICSECTIONS:    EntrySize: 0
> OMAGICSECTIONS:  }
> +OMAGICSECTIONS:  ]
> 
> OMAGICPROGRAMHEADERS: ProgramHeaders [
> OMAGICPROGRAMHEADERS:   ProgramHeader {
> @@ -197,8 +212,8 @@ OMAGICPROGRAMHEADERS:     Type: PT_LOAD
> OMAGICPROGRAMHEADERS:     Offset: 0x0
> OMAGICPROGRAMHEADERS:     VirtualAddress: 0x400000
> OMAGICPROGRAMHEADERS:     PhysicalAddress: 0x400000
> -OMAGICPROGRAMHEADERS:     FileSize: 260
> -OMAGICPROGRAMHEADERS:     MemSize: 260
> +OMAGICPROGRAMHEADERS:     FileSize: 324
> +OMAGICPROGRAMHEADERS:     MemSize: 324
> OMAGICPROGRAMHEADERS:     Flags [ (0x7)
> OMAGICPROGRAMHEADERS:       PF_R (0x4)
> OMAGICPROGRAMHEADERS:       PF_W (0x2)
> @@ -208,9 +223,9 @@ OMAGICPROGRAMHEADERS:     Alignment: 8
> OMAGICPROGRAMHEADERS:   }
> OMAGICPROGRAMHEADERS:   ProgramHeader {
> OMAGICPROGRAMHEADERS:     Type: PT_TLS (0x7)
> -OMAGICPROGRAMHEADERS:     Offset: 0xF8
> -OMAGICPROGRAMHEADERS:     VirtualAddress: 0x4000F8
> -OMAGICPROGRAMHEADERS:     PhysicalAddress: 0x4000F8
> +OMAGICPROGRAMHEADERS:     Offset: 0x138
> +OMAGICPROGRAMHEADERS:     VirtualAddress: 0x400138
> +OMAGICPROGRAMHEADERS:     PhysicalAddress: 0x400138
> OMAGICPROGRAMHEADERS:     FileSize: 4
> OMAGICPROGRAMHEADERS:     MemSize: 12
> OMAGICPROGRAMHEADERS:     Flags [ (0x6)
> 
> Modified: lld/trunk/test/elf/X86_64/underscore-end.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/underscore-end.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/underscore-end.test (original)
> +++ lld/trunk/test/elf/X86_64/underscore-end.test Tue Oct 29 19:02:04 2013
> @@ -45,7 +45,7 @@ NMAGICABSSYMBOLS:  }
> 
> OMAGICABSSYMBOLS:  Symbol {
> OMAGICABSSYMBOLS:    Name: __bss_start (51)
> -OMAGICABSSYMBOLS:    Value: 0x400104
> +OMAGICABSSYMBOLS:    Value: 0x400144
> OMAGICABSSYMBOLS:    Size: 0
> OMAGICABSSYMBOLS:    Binding: Global (0x1)
> OMAGICABSSYMBOLS:    Type: Object (0x1)
> @@ -54,7 +54,7 @@ OMAGICABSSYMBOLS:    Section:  (0xFFF1)
> OMAGICABSSYMBOLS:  }
> OMAGICABSSYMBOLS:  Symbol {
> OMAGICABSSYMBOLS:    Name: __bss_end (63)
> -OMAGICABSSYMBOLS:    Value: 0x400104
> +OMAGICABSSYMBOLS:    Value: 0x400144
> OMAGICABSSYMBOLS:    Size: 0
> OMAGICABSSYMBOLS:    Binding: Global (0x1)
> OMAGICABSSYMBOLS:    Type: Object (0x1)
> @@ -63,7 +63,7 @@ OMAGICABSSYMBOLS:    Section:  (0xFFF1)
> OMAGICABSSYMBOLS:  }
> OMAGICABSSYMBOLS:  Symbol {
> OMAGICABSSYMBOLS:    Name: _end (73)
> -OMAGICABSSYMBOLS:    Value: 0x400104
> +OMAGICABSSYMBOLS:    Value: 0x400144
> OMAGICABSSYMBOLS:    Size: 0
> OMAGICABSSYMBOLS:    Binding: Global (0x1)
> OMAGICABSSYMBOLS:    Type: Object (0x1)
> @@ -72,7 +72,7 @@ OMAGICABSSYMBOLS:    Section:  (0xFFF1)
> OMAGICABSSYMBOLS:  }
> OMAGICABSSYMBOLS:  Symbol {
> OMAGICABSSYMBOLS:    Name: end (78)
> -OMAGICABSSYMBOLS:    Value: 0x400104
> +OMAGICABSSYMBOLS:    Value: 0x400144
> OMAGICABSSYMBOLS:    Size: 0
> OMAGICABSSYMBOLS:    Binding: Global (0x1)
> OMAGICABSSYMBOLS:    Type: Object (0x1)
> 
> Modified: lld/trunk/test/elf/X86_64/yamlinput.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/yamlinput.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/X86_64/yamlinput.test (original)
> +++ lld/trunk/test/elf/X86_64/yamlinput.test Tue Oct 29 19:02:04 2013
> @@ -16,7 +16,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 1
> -SECTIONS:     Name: .interp (1)
> +SECTIONS:     Name: .interp
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -24,7 +24,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 2
> -SECTIONS:     Name: .hash (9)
> +SECTIONS:     Name: .hash
> SECTIONS:     Type: SHT_HASH (0x5)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -32,7 +32,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 3
> -SECTIONS:     Name: .dynsym (15)
> +SECTIONS:     Name: .dynsym
> SECTIONS:     Type: SHT_DYNSYM (0xB)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -40,7 +40,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 4
> -SECTIONS:     Name: .dynstr (23)
> +SECTIONS:     Name: .dynstr
> SECTIONS:     Type: SHT_STRTAB (0x3)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -48,7 +48,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 5
> -SECTIONS:     Name: .text (31)
> +SECTIONS:     Name: .text
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x6)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -57,7 +57,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 6
> -SECTIONS:     Name: .rodata (37)
> +SECTIONS:     Name: .rodata
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -65,7 +65,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 7
> -SECTIONS:     Name: .eh_frame (45)
> +SECTIONS:     Name: .eh_frame
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x2)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -73,16 +73,11 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 8
> -SECTIONS:     Name: .init_array (55)
> -SECTIONS:     Type: SHT_PROGBITS (0x1)
> -SECTIONS:     Flags [ (0x3)
> -SECTIONS:       SHF_ALLOC (0x2)
> -SECTIONS:       SHF_WRITE (0x1)
> -SECTIONS:     ]
> +SECTIONS:     Name: .eh_frame_hdr
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 9
> -SECTIONS:     Name: .fini_array (67)
> +SECTIONS:     Name: .init_array
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x3)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -91,7 +86,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 10
> -SECTIONS:     Name: .dynamic (79)
> +SECTIONS:     Name: .fini_array
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x3)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -100,7 +95,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 11
> -SECTIONS:     Name: .got.plt (88)
> +SECTIONS:     Name: .dynamic
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x3)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -109,7 +104,7 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 12
> -SECTIONS:     Name: .data (97)
> +SECTIONS:     Name: .got.plt
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x3)
> SECTIONS:       SHF_ALLOC (0x2)
> @@ -118,8 +113,8 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 13
> -SECTIONS:     Name: .bss (103)
> -SECTIONS:     Type: SHT_NOBITS (0x8)
> +SECTIONS:     Name: .data
> +SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x3)
> SECTIONS:       SHF_ALLOC (0x2)
> SECTIONS:       SHF_WRITE (0x1)
> @@ -127,35 +122,44 @@ SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 14
> -SECTIONS:     Name: .comment (108)
> -SECTIONS:     Type: SHT_PROGBITS (0x1)
> -SECTIONS:     Flags [ (0x0)
> +SECTIONS:     Name: .bss
> +SECTIONS:     Type: SHT_NOBITS (0x8)
> +SECTIONS:     Flags [ (0x3)
> +SECTIONS:       SHF_ALLOC (0x2)
> +SECTIONS:       SHF_WRITE (0x1)
> SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 15
> -SECTIONS:     Name: .note.GNU-stack (117)
> +SECTIONS:     Name: .comment
> SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x0)
> SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 16
> -SECTIONS:     Name: .shstrtab (133)
> -SECTIONS:     Type: SHT_STRTAB (0x3)
> +SECTIONS:     Name: .note.GNU-stack
> +SECTIONS:     Type: SHT_PROGBITS (0x1)
> SECTIONS:     Flags [ (0x0)
> SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 17
> -SECTIONS:     Name: .symtab (143)
> -SECTIONS:     Type: SHT_SYMTAB (0x2)
> +SECTIONS:     Name: .shstrtab
> +SECTIONS:     Type: SHT_STRTAB (0x3)
> SECTIONS:     Flags [ (0x0)
> SECTIONS:     ]
> SECTIONS:   }
> SECTIONS:   Section {
> SECTIONS:     Index: 18
> -SECTIONS:     Name: .strtab (151)
> +SECTIONS:     Name: .symtab
> +SECTIONS:     Type: SHT_SYMTAB (0x2)
> +SECTIONS:     Flags [ (0x0)
> +SECTIONS:     ]
> +SECTIONS:   }
> +SECTIONS:   Section {
> +SECTIONS:     Index: 19
> +SECTIONS:     Name: .strtab
> SECTIONS:     Type: SHT_STRTAB (0x3)
> SECTIONS:     Flags [ (0x0)
> SECTIONS:     ]
> 
> Added: lld/trunk/test/elf/eh_frame_hdr.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/eh_frame_hdr.test?rev=193662&view=auto
> ==============================================================================
> --- lld/trunk/test/elf/eh_frame_hdr.test (added)
> +++ lld/trunk/test/elf/eh_frame_hdr.test Tue Oct 29 19:02:04 2013
> @@ -0,0 +1,26 @@
> +#RUN: yaml2obj -format=elf %s > %t
> +#RUN: lld -flavor gnu -target x86_64-linux %t --noinhibit-exec \
> +#RUN:   -o %t1
> +#RUN: llvm-readobj -s %t1 | FileCheck %s
> +
> +!ELF
> +FileHeader:
> +  Class: ELFCLASS64
> +  Data: ELFDATA2LSB
> +  Type: ET_REL
> +  Machine: EM_X86_64
> +
> +Sections:
> +- Name: .eh_frame
> +  Type: SHT_PROGBITS
> +  Content: "00"
> +  AddressAlign: 8
> +  Flags: [SHF_ALLOC]
> +
> +Symbols:
> +  Local:
> +  - Name: .eh_frame
> +    Type: STT_SECTION
> +    Section: .eh_frame
> +
> +#CHECK: .eh_frame_hdr
> 
> Modified: lld/trunk/test/elf/entry.objtxt
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/entry.objtxt?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/entry.objtxt (original)
> +++ lld/trunk/test/elf/entry.objtxt Tue Oct 29 19:02:04 2013
> @@ -11,7 +11,7 @@
> # RUN: lld -flavor gnu %s -e _entrypoint --noinhibit-exec -o %t1 
> # RUN: llvm-nm -n %t1 | FileCheck %s
> # 
> -# CHECK:  004001b0 T main
> +# CHECK:  004001e0 T main
> # CHECK:  00401080 D _DYNAMIC
> # CHECK:  00401080 A _end
> # CHECK:  00401080 A end
> 
> Modified: lld/trunk/test/elf/ifunc.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/ifunc.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/ifunc.test (original)
> +++ lld/trunk/test/elf/ifunc.test Tue Oct 29 19:02:04 2013
> @@ -60,7 +60,7 @@ BIN-NEXT: {{[0-9a-f]+}} 00000000 0000000
> 
> RELATIVEADDEND:      Relocations [
> RELATIVEADDEND-NEXT:   Section (1) .rela.plt {
> -RELATIVEADDEND-NEXT:     0x401000 R_X86_64_IRELATIVE - 0x4000E0
> +RELATIVEADDEND-NEXT:     0x401000 R_X86_64_IRELATIVE - 0x400120
> RELATIVEADDEND-NEXT:   }
> RELATIVEADDEND-NEXT: ]
> 
> 
> Modified: lld/trunk/test/elf/phdr.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/phdr.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/phdr.test (original)
> +++ lld/trunk/test/elf/phdr.test Tue Oct 29 19:02:04 2013
> @@ -11,8 +11,8 @@ I386-NEXT:     Type: PT_PHDR (0x6)
> I386-NEXT:     Offset: 0x34
> I386-NEXT:     VirtualAddress: 0x34
> I386-NEXT:     PhysicalAddress: 0x34
> -I386-NEXT:     FileSize: 192
> -I386-NEXT:     MemSize: 192
> +I386-NEXT:     FileSize: 224
> +I386-NEXT:     MemSize: 224
> I386-NEXT:     Flags [ (0x5)
> I386-NEXT:       PF_R (0x4)
> I386-NEXT:       PF_X (0x1)
> @@ -21,9 +21,9 @@ I386-NEXT:     Alignment: 8
> I386-NEXT:   }
> I386-NEXT:   ProgramHeader {
> I386-NEXT:     Type: PT_INTERP (0x3)
> -I386-NEXT:     Offset: 0xF4
> -I386-NEXT:     VirtualAddress: 0xF4
> -I386-NEXT:     PhysicalAddress: 0xF4
> +I386-NEXT:     Offset: 0x114
> +I386-NEXT:     VirtualAddress: 0x114
> +I386-NEXT:     PhysicalAddress: 0x114
> I386-NEXT:     FileSize: 28
> I386-NEXT:     MemSize: 28
> I386-NEXT:     Flags [ (0x4)
> @@ -36,8 +36,8 @@ I386-NEXT:     Type: PT_LOAD (0x1)
> I386-NEXT:     Offset: 0x0
> I386-NEXT:     VirtualAddress: 0x0
> I386-NEXT:     PhysicalAddress: 0x0
> -I386-NEXT:     FileSize: 532
> -I386-NEXT:     MemSize: 532
> +I386-NEXT:     FileSize: 572
> +I386-NEXT:     MemSize: 572
> I386-NEXT:     Flags [ (0x5)
> I386-NEXT:       PF_R (0x4)
> I386-NEXT:       PF_X (0x1)
> @@ -71,10 +71,22 @@ I386-NEXT:     ]
> I386-NEXT:     Alignment: 4096
> I386-NEXT:   }
> I386-NEXT:   ProgramHeader {
> +I386-NEXT:     Type: PT_GNU_EH_FRAME (0x6474E550)
> +I386-NEXT:     Offset: 0x1F4
> +I386-NEXT:     VirtualAddress: 0x1F4
> +I386-NEXT:     PhysicalAddress: 0x1F4
> +I386-NEXT:     FileSize: 8
> +I386-NEXT:     MemSize: 8
> +I386-NEXT:     Flags [ (0x4)
> +I386-NEXT:       PF_R (0x4)
> +I386-NEXT:     ]
> +I386-NEXT:     Alignment: 4
> +I386-NEXT:   }
> +I386-NEXT:   ProgramHeader {
> I386-NEXT:     Type: PT_DYNAMIC (0x2)
> -I386-NEXT:     Offset: 0x1D4
> -I386-NEXT:     VirtualAddress: 0x1D4
> -I386-NEXT:     PhysicalAddress: 0x1D4
> +I386-NEXT:     Offset: 0x1FC
> +I386-NEXT:     VirtualAddress: 0x1FC
> +I386-NEXT:     PhysicalAddress: 0x1FC
> I386-NEXT:     FileSize: 64
> I386-NEXT:     MemSize: 64
> I386-NEXT:     Flags [ (0x4)
> 
> Modified: lld/trunk/test/elf/symbols.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=193662&r1=193661&r2=193662&view=diff
> ==============================================================================
> --- lld/trunk/test/elf/symbols.test (original)
> +++ lld/trunk/test/elf/symbols.test Tue Oct 29 19:02:04 2013
> @@ -20,7 +20,7 @@ RUN: lld -flavor gnu -shared -target i38
> RUN: llvm-nm -n %t1 | FileCheck -check-prefix CHECKSHAREDSYMS %s
> 
> CHECKSYMS:  00000000 a 1.c
> -CHECKSYMS:  00000114 T main
> +CHECKSYMS:  00000134 T main
> CHECKSYMS:  00001000 A __bss_start
> CHECKSYMS:  00001000 B a
> CHECKSYMS:  00001004 A __bss_end
> @@ -28,6 +28,6 @@ CHECKSYMS:  00001004 A _end
> CHECKSYMS:  00001004 A end
> 
> CHECKSHAREDSYMS:  00000000 a 1.c
> -CHECKSHAREDSYMS:  0000010c T main
> +CHECKSHAREDSYMS:  0000012c T main
> CHECKSHAREDSYMS:  00001000 B a
> CHECKSHAREDSYMS:  00001004 A _end
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list