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) {
|
||||
if (!Config->PrintGcSections || !IS || IS->Live)
|
||||
if (!Config->PrintGcSections || !IS || IS == &InputSection<ELFT>::Discarded ||
|
||||
IS->Live)
|
||||
return;
|
||||
errs() << "removing unused section from '" << IS->Name << "' in file '"
|
||||
<< IS->getFile()->getName() << "'\n";
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
; RUN: ld.lld -m elf_x86_64 %t2.o %t.so -o %t
|
||||
; 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 triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
|
Loading…
Reference in New Issue