summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Writer.cpp6
-rw-r--r--lld/test/elf2/string-table.s2
2 files changed, 6 insertions, 2 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index b754ba38818..79ab8807fbe 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -174,9 +174,11 @@ template <class ELFT> void Writer<ELFT>::assignAddresses() {
std::stable_sort(OutputSections.begin(), OutputSections.end(), compSec<ELFT>);
for (OutputSection<ELFT> *Sec : OutputSections) {
- Sec->setVA(VA);
+ if (Sec->getFlags() & SHF_ALLOC) {
+ Sec->setVA(VA);
+ VA += RoundUpToAlignment(Sec->getSize(), PageSize);
+ }
Sec->setFileOffset(FileOff);
- VA += RoundUpToAlignment(Sec->getSize(), PageSize);
FileOff += RoundUpToAlignment(Sec->getSize(), 8);
StrTabBuilder.add(Sec->getName());
}
diff --git a/lld/test/elf2/string-table.s b/lld/test/elf2/string-table.s
index 80bfe7b1244..81b740d31d3 100644
--- a/lld/test/elf2/string-table.s
+++ b/lld/test/elf2/string-table.s
@@ -15,11 +15,13 @@ _start:
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x1000
// CHECK: Name: foobar
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: ]
+// CHECK-NEXT: Address: 0x0
// Test that the sting "bar" is merged into "foobar"
OpenPOWER on IntegriCloud