summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/LinkerScript.cpp2
-rw-r--r--lld/ELF/OutputSections.cpp2
-rw-r--r--lld/test/ELF/linkerscript/arm-exidx-order.s2
-rw-r--r--lld/test/ELF/linkerscript/extend-pt-load.s7
-rw-r--r--lld/test/ELF/linkerscript/merge-sections.s2
-rw-r--r--lld/test/ELF/linkerscript/symbol-only-flags.s2
-rw-r--r--lld/test/ELF/linkerscript/symbol-only.s2
7 files changed, 10 insertions, 9 deletions
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp
index f301afc4031..77bdb4d3f48 100644
--- a/lld/ELF/LinkerScript.cpp
+++ b/lld/ELF/LinkerScript.cpp
@@ -87,7 +87,7 @@ OutputSection *LinkerScript::createOutputSection(StringRef Name,
// There was a forward reference.
Sec = SecRef;
} else {
- Sec = make<OutputSection>(Name, SHT_PROGBITS, 0);
+ Sec = make<OutputSection>(Name, SHT_NOBITS, 0);
if (!SecRef)
SecRef = Sec;
}
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp
index f87b52441bd..b6dee4303a6 100644
--- a/lld/ELF/OutputSections.cpp
+++ b/lld/ELF/OutputSections.cpp
@@ -312,6 +312,8 @@ template <class ELFT> void OutputSection::finalize() {
Sections.push_back(IS);
}
}
+ if (isa<ByteCommand>(Base) && Type == SHT_NOBITS)
+ Type = SHT_PROGBITS;
}
if (Flags & SHF_LINK_ORDER) {
diff --git a/lld/test/ELF/linkerscript/arm-exidx-order.s b/lld/test/ELF/linkerscript/arm-exidx-order.s
index 3c6791f7745..35cfada7f4a 100644
--- a/lld/test/ELF/linkerscript/arm-exidx-order.s
+++ b/lld/test/ELF/linkerscript/arm-exidx-order.s
@@ -9,7 +9,7 @@
# CHECK: Section {
# CHECK: Index:
# CHECK: Name: .foo
-# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Type: SHT_NOBITS
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: ]
diff --git a/lld/test/ELF/linkerscript/extend-pt-load.s b/lld/test/ELF/linkerscript/extend-pt-load.s
index fb9ea6fc09f..72740f1092e 100644
--- a/lld/test/ELF/linkerscript/extend-pt-load.s
+++ b/lld/test/ELF/linkerscript/extend-pt-load.s
@@ -33,18 +33,17 @@
# RUN: .hash : { } \
# RUN: .dynstr : { } \
# RUN: .text : { *(.text) } \
-# RUN: . = ALIGN(0x1000); \
-# RUN: bar : { HIDDEN(bar_sym = .); } \
+# RUN: bar : { . = ALIGN(0x1000); } \
# RUN: .data.rel.ro : { *(.data.rel.ro) } \
# RUN: }" > %t.script
# RUN: ld.lld --hash-style=sysv -o %t2 --script %t.script %t.o -shared
# RUN: llvm-readobj --elf-output-style=GNU -l -s %t2 | FileCheck --check-prefix=CHECK2 %s
# CHECK2: .text PROGBITS 00000000000001bc 0001bc 000001 00 AX
-# CHECK2-NEXT: bar PROGBITS 0000000000001000 001000 000000 00 AX
+# CHECK2-NEXT: bar NOBITS 00000000000001bd 0001bd 000e43 00 AX
# CHECK2-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
-# CHECK2: LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x001000 0x001000 R E
+# CHECK2: LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x001000 R E
# CHECK2-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW
# If the current behavior becomes a problem we should consider just moving the commands out
diff --git a/lld/test/ELF/linkerscript/merge-sections.s b/lld/test/ELF/linkerscript/merge-sections.s
index 950d822ec40..2709bdaee44 100644
--- a/lld/test/ELF/linkerscript/merge-sections.s
+++ b/lld/test/ELF/linkerscript/merge-sections.s
@@ -36,7 +36,7 @@
# RUN: llvm-readobj -s -t %t2 | FileCheck %s --check-prefix=GC
# GC: Name: .foo
-# GC-NEXT: Type: SHT_PROGBITS
+# GC-NEXT: Type: SHT_NOBITS
# GC-NEXT: Flags [
# GC-NEXT: SHF_ALLOC
# GC-NEXT: ]
diff --git a/lld/test/ELF/linkerscript/symbol-only-flags.s b/lld/test/ELF/linkerscript/symbol-only-flags.s
index 5ad7befee93..300d8d88da9 100644
--- a/lld/test/ELF/linkerscript/symbol-only-flags.s
+++ b/lld/test/ELF/linkerscript/symbol-only-flags.s
@@ -10,7 +10,7 @@
# CHECK: Section {
# CHECK: Index:
# CHECK: Name: .foo
-# CHECK-NEXT: Type: SHT_PROGBITS
+# CHECK-NEXT: Type: SHT_NOBITS
# CHECK-NEXT: Flags [
# CHECK-NEXT: SHF_ALLOC
# CHECK-NEXT: SHF_WRITE
diff --git a/lld/test/ELF/linkerscript/symbol-only.s b/lld/test/ELF/linkerscript/symbol-only.s
index 2fb57260b33..76d54f01cdc 100644
--- a/lld/test/ELF/linkerscript/symbol-only.s
+++ b/lld/test/ELF/linkerscript/symbol-only.s
@@ -12,7 +12,7 @@
# CHECK: Sections:
# CHECK-NEXT: Idx Name Size Address
# CHECK-NEXT: 0 00000000 0000000000000000
-# CHECK: abc 00000000 [[ADDR:[0-9a-f]*]] DATA
+# CHECK: abc 00000000 [[ADDR:[0-9a-f]*]] BSS
# CHECK-NEXT: bar 00000000 0000000000001000 DATA
# CHECK: SYMBOL TABLE:
OpenPOWER on IntegriCloud