[PATCH] D50742: [ELF] mergeSections: remove non-alive MergeInputSection
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 16 10:22:49 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL339904: [ELF] mergeSections: remove non-alive MergeInputSection (authored by MaskRay, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D50742?vs=160859&id=161056#toc
Repository:
rL LLVM
https://reviews.llvm.org/D50742
Files:
lld/trunk/ELF/SyntheticSections.cpp
lld/trunk/test/ELF/x86-64-reloc-error2.s
Index: lld/trunk/test/ELF/x86-64-reloc-error2.s
===================================================================
--- lld/trunk/test/ELF/x86-64-reloc-error2.s
+++ lld/trunk/test/ELF/x86-64-reloc-error2.s
@@ -1,14 +1,18 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-# RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s
+# RUN: not ld.lld --entry=func --gc-sections %t.o -o /dev/null 2>&1 | FileCheck %s
## Check we are able to find a function symbol that encloses
## a given location when reporting error messages.
# CHECK: {{.*}}.o:(function func): relocation R_X86_64_32S out of range: -281474974609408 is not in [-2147483648, 2147483647]
+# This mergeable section will be garbage collected. We had a crash issue in that case. Test it.
+.section .rodata.str1,"aMS", at progbits,1
+.asciz "a"
+
.section .text.func, "ax", %progbits
.globl func
.type func, at function
-.size func, 0x10
func:
- movq func - 0x1000000000000, %rdx
+ movq $func - 0x1000000000000, %rdx
+.size func, .-func
Index: lld/trunk/ELF/SyntheticSections.cpp
===================================================================
--- lld/trunk/ELF/SyntheticSections.cpp
+++ lld/trunk/ELF/SyntheticSections.cpp
@@ -2929,8 +2929,10 @@
// We do not want to handle sections that are not alive, so just remove
// them instead of trying to merge.
- if (!MS->Live)
+ if (!MS->Live) {
+ S = nullptr;
continue;
+ }
StringRef OutsecName = getOutputSectionName(MS);
uint32_t Alignment = std::max<uint32_t>(MS->Alignment, MS->Entsize);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50742.161056.patch
Type: text/x-patch
Size: 1586 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180816/68db1a83/attachment.bin>
More information about the llvm-commits
mailing list