summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2016-05-23 15:12:41 +0000
committerRui Ueyama <ruiu@google.com>2016-05-23 15:12:41 +0000
commitf86cb90a2da3883446e2e0ae6179ac652a9f7392 (patch)
tree634694223116b9e44cdf01adb24a340595c02674
parent1e479c23aad0ad22dd5927d510d0749b68821307 (diff)
downloadbcm5719-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.cpp5
-rw-r--r--lld/ELF/OutputSections.h5
-rw-r--r--lld/ELF/Writer.cpp2
-rw-r--r--lld/test/ELF/eh-frame-hdr.s2
-rw-r--r--lld/test/ELF/eh-frame-merge.s2
-rw-r--r--lld/test/ELF/eh-frame-type.test2
-rw-r--r--lld/test/ELF/ehframe-relocation.s2
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: ]
OpenPOWER on IntegriCloud