diff options
author | Rui Ueyama <ruiu@google.com> | 2016-05-23 15:12:41 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2016-05-23 15:12:41 +0000 |
commit | f86cb90a2da3883446e2e0ae6179ac652a9f7392 (patch) | |
tree | 634694223116b9e44cdf01adb24a340595c02674 | |
parent | 1e479c23aad0ad22dd5927d510d0749b68821307 (diff) | |
download | bcm5719-llvm-f86cb90a2da3883446e2e0ae6179ac652a9f7392.tar.gz bcm5719-llvm-f86cb90a2da3883446e2e0ae6179ac652a9f7392.zip |
Do not propagate section name and attributes to .eh_frame.
.eh_frame is always ".eh_frame" and its attribute is fixed.
No need to copy from inputs to outputs. GNU gold also sets
SHT_PROGBITS.
llvm-svn: 270443
-rw-r--r-- | lld/ELF/OutputSections.cpp | 5 | ||||
-rw-r--r-- | lld/ELF/OutputSections.h | 5 | ||||
-rw-r--r-- | lld/ELF/Writer.cpp | 2 | ||||
-rw-r--r-- | lld/test/ELF/eh-frame-hdr.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/eh-frame-merge.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/eh-frame-type.test | 2 | ||||
-rw-r--r-- | lld/test/ELF/ehframe-relocation.s | 2 |
7 files changed, 10 insertions, 10 deletions
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 5cbab6eb432..b57bd2c011b 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -921,9 +921,8 @@ template <class ELFT> void OutputSection<ELFT>::writeTo(uint8_t *Buf) { } template <class ELFT> -EhOutputSection<ELFT>::EhOutputSection(StringRef Name, uint32_t Type, - uintX_t Flags) - : OutputSectionBase<ELFT>(Name, Type, Flags) { +EhOutputSection<ELFT>::EhOutputSection() + : OutputSectionBase<ELFT>(".eh_frame", SHT_PROGBITS, SHF_ALLOC) { Out<ELFT>::EhFrameHdr->add(this); } diff --git a/lld/ELF/OutputSections.h b/lld/ELF/OutputSections.h index 11cb8128c62..b5929aca805 100644 --- a/lld/ELF/OutputSections.h +++ b/lld/ELF/OutputSections.h @@ -334,12 +334,13 @@ struct CieRecord { // Output section for .eh_frame. template <class ELFT> class EhOutputSection final : public OutputSectionBase<ELFT> { -public: typedef typename ELFT::uint uintX_t; typedef typename ELFT::Shdr Elf_Shdr; typedef typename ELFT::Rel Elf_Rel; typedef typename ELFT::Rela Elf_Rela; - EhOutputSection(StringRef Name, uint32_t Type, uintX_t Flags); + +public: + EhOutputSection(); void writeTo(uint8_t *Buf) override; void finalize() override; void diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index ad5a2977ff9..e985175f08b 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -1174,7 +1174,7 @@ OutputSectionFactory<ELFT>::create(InputSectionBase<ELFT> *C, Sec = new OutputSection<ELFT>(Key.Name, Key.Type, Key.Flags); break; case InputSectionBase<ELFT>::EHFrame: - Sec = new EhOutputSection<ELFT>(Key.Name, Key.Type, Key.Flags); + Sec = new EhOutputSection<ELFT>; break; case InputSectionBase<ELFT>::Merge: Sec = new MergeOutputSection<ELFT>(Key.Name, Key.Type, Key.Flags, diff --git a/lld/test/ELF/eh-frame-hdr.s b/lld/test/ELF/eh-frame-hdr.s index 04975ac20b2..ccc635dc2ea 100644 --- a/lld/test/ELF/eh-frame-hdr.s +++ b/lld/test/ELF/eh-frame-hdr.s @@ -44,7 +44,7 @@ _start: // HDR: Section { // HDR: Index: 1 // HDR-NEXT: Name: .eh_frame -// HDR-NEXT: Type: SHT_X86_64_UNWIND +// HDR-NEXT: Type: SHT_PROGBITS // HDR-NEXT: Flags [ // HDR-NEXT: SHF_ALLOC // HDR-NEXT: ] diff --git a/lld/test/ELF/eh-frame-merge.s b/lld/test/ELF/eh-frame-merge.s index 2b0e4a52822..2610d4d4d2d 100644 --- a/lld/test/ELF/eh-frame-merge.s +++ b/lld/test/ELF/eh-frame-merge.s @@ -21,7 +21,7 @@ // * There is only one copy of the second FDE // CHECK: Name: .eh_frame -// CHECK-NEXT: Type: SHT_X86_64_UNWIND +// CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] diff --git a/lld/test/ELF/eh-frame-type.test b/lld/test/ELF/eh-frame-type.test index f59ab116d7d..1f361ff7c81 100644 --- a/lld/test/ELF/eh-frame-type.test +++ b/lld/test/ELF/eh-frame-type.test @@ -3,7 +3,7 @@ # RUN: llvm-readobj -s %t | FileCheck %s # CHECK: Name: .eh_frame -# CHECK-NEXT: Type: SHT_X86_64_UNWIND +# CHECK-NEXT: Type: SHT_PROGBITS FileHeader: Class: ELFCLASS64 diff --git a/lld/test/ELF/ehframe-relocation.s b/lld/test/ELF/ehframe-relocation.s index 38ac33f7ef3..8d5e14919e9 100644 --- a/lld/test/ELF/ehframe-relocation.s +++ b/lld/test/ELF/ehframe-relocation.s @@ -6,7 +6,7 @@ // RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s // CHECK: Name: .eh_frame -// CHECK-NEXT: Type: SHT_X86_64_UNWIND +// CHECK-NEXT: Type: SHT_PROGBITS // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: ] |