[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