summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/InputSection.cpp3
-rw-r--r--lld/test/ELF/gc-sections-non-alloc-to-merge.s6
2 files changed, 9 insertions, 0 deletions
diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp
index 1c01972fc8a..6e73f6ff1d0 100644
--- a/lld/ELF/InputSection.cpp
+++ b/lld/ELF/InputSection.cpp
@@ -620,6 +620,9 @@ typename ELFT::uint MergeInputSection<ELFT>::getOffset(uintX_t Offset) const {
if (It != OffsetMap.end())
return It->second;
+ if (!this->Live)
+ return 0;
+
// If Offset is not at beginning of a section piece, it is not in the map.
// In that case we need to search from the original section piece vector.
const SectionPiece &Piece = *this->getSectionPiece(Offset);
diff --git a/lld/test/ELF/gc-sections-non-alloc-to-merge.s b/lld/test/ELF/gc-sections-non-alloc-to-merge.s
index cdc11de8889..37b0328d845 100644
--- a/lld/test/ELF/gc-sections-non-alloc-to-merge.s
+++ b/lld/test/ELF/gc-sections-non-alloc-to-merge.s
@@ -17,5 +17,11 @@ _start:
.Lbar:
.long 2
+ .section .merge2,"aM",@progbits,4
+ .p2align 2
+.Lzed:
+ .long 1
+
.section bar
.quad .Lbar
+ .quad .Lzed
OpenPOWER on IntegriCloud