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

Shankar Easwaran shankare at codeaurora.org
Tue Oct 29 17:45:19 PDT 2013


Hi Nick,

We were also discussing on IRC, that if this should be done by the 
reader by having each atom refer to a FDE entry that belongs to a PC range.

This way the garbage collection would also be consistent ?

What do you think ? I thought ld64 does this and the writer creates 
compact unwind information ?

Thanks

Shankar Easwaran

On 10/29/2013 7:39 PM, Nick Kledzik wrote:
> 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
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>


-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation




More information about the llvm-commits mailing list