summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2015-08-07 14:36:04 +0000
committerTom Stellard <thomas.stellard@amd.com>2015-08-07 14:36:04 +0000
commit01da42d8db3263ede2c10b466daed51f4b1d43e5 (patch)
treef39be773bdc0ce6a37357e261ecebe0d57e91830
parent2ab51bf13a1f6ca96823b755c036227dfd0892f9 (diff)
downloadbcm5719-llvm-01da42d8db3263ede2c10b466daed51f4b1d43e5.tar.gz
bcm5719-llvm-01da42d8db3263ede2c10b466daed51f4b1d43e5.zip
ELF: Correctly identify SHT_NOTE sections with !SHF_ALLOC as type*Note
Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D11266 llvm-svn: 244317
-rw-r--r--lld/lib/ReaderWriter/ELF/Atoms.cpp7
-rw-r--r--lld/test/elf/note.test6
2 files changed, 10 insertions, 3 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Atoms.cpp b/lld/lib/ReaderWriter/ELF/Atoms.cpp
index 45a82d1392c..63963339316 100644
--- a/lld/lib/ReaderWriter/ELF/Atoms.cpp
+++ b/lld/lib/ReaderWriter/ELF/Atoms.cpp
@@ -71,8 +71,13 @@ DefinedAtom::ContentType ELFDefinedAtom<ELFT>::doContentType() const {
return typeGnuLinkOnce;
uint64_t flags = _section->sh_flags;
- if (!(flags & SHF_ALLOC))
+
+ if (!(flags & SHF_ALLOC)) {
+ if (_section->sh_type == SHT_NOTE)
+ return (flags == SHF_WRITE) ? typeRWNote : typeRONote;
return _contentType = typeNoAlloc;
+ }
+
if (_section->sh_flags == (SHF_ALLOC | SHF_WRITE | SHF_TLS))
return _section->sh_type == SHT_NOBITS ? typeThreadZeroFill
: typeThreadData;
diff --git a/lld/test/elf/note.test b/lld/test/elf/note.test
index 01329e9c8f6..e7544c1f126 100644
--- a/lld/test/elf/note.test
+++ b/lld/test/elf/note.test
@@ -1,9 +1,11 @@
# Check that the linker is not ignoring input sections.
# RUN: yaml2obj -format=elf %s > %t.obj
# RUN: lld -flavor gnu -target x86_64 %t.obj -o %t.exe --noinhibit-exec
-# RUN: llvm-objdump -h %t.exe | FileCheck %s
+# RUN: llvm-readobj -s %t.exe | FileCheck %s
-# CHECK: {{[0-9]+}} .note
+# CHECK: Section {
+# CHECK: Name: .note
+# CHECK-NEXT: Type: SHT_NOTE
---
FileHeader:
OpenPOWER on IntegriCloud