forked from OSchip/llvm-project
[GC] Don't crash when printing the special Discarded GC section.
InputSection<ELFT>::Discarded has no name and it's not backed by a file. Trying to report it as discared will cause a nullptr dereference, therefore a crash. Skip it. Differential Revision: https://reviews.llvm.org/D24731 llvm-svn: 281946
This commit is contained in:
parent
bcdb994014
commit
1c3c3953c6
|
@ -102,7 +102,8 @@ StringRef elf::getOutputSectionName(InputSectionBase<ELFT> *S) {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class ELFT> void elf::reportDiscarded(InputSectionBase<ELFT> *IS) {
|
template <class ELFT> void elf::reportDiscarded(InputSectionBase<ELFT> *IS) {
|
||||||
if (!Config->PrintGcSections || !IS || IS->Live)
|
if (!Config->PrintGcSections || !IS || IS == &InputSection<ELFT>::Discarded ||
|
||||||
|
IS->Live)
|
||||||
return;
|
return;
|
||||||
errs() << "removing unused section from '" << IS->Name << "' in file '"
|
errs() << "removing unused section from '" << IS->Name << "' in file '"
|
||||||
<< IS->getFile()->getName() << "'\n";
|
<< IS->getFile()->getName() << "'\n";
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
; RUN: ld.lld -m elf_x86_64 %t2.o %t.so -o %t
|
; RUN: ld.lld -m elf_x86_64 %t2.o %t.so -o %t
|
||||||
; RUN: llvm-readobj -dyn-symbols %t | FileCheck %s
|
; RUN: llvm-readobj -dyn-symbols %t | FileCheck %s
|
||||||
|
|
||||||
|
; Check that we don't crash when gc'ing sections and printing the result.
|
||||||
|
; RUN: ld.lld -m elf_x86_64 %t2.o %t.so --gc-sections --print-gc-sections \
|
||||||
|
; RUN: -o %t
|
||||||
|
; RUN: llvm-readobj -dyn-symbols %t | FileCheck %s
|
||||||
|
|
||||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
target triple = "x86_64-unknown-linux-gnu"
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue