Don't gc protected symbols.

llvm-svn: 267081
This commit is contained in:
Rafael Espindola 2016-04-21 23:59:19 +00:00
parent a028853540
commit 5be6064974
2 changed files with 19 additions and 1 deletions

View File

@ -116,7 +116,7 @@ template <class ELFT> void elf::markLive(SymbolTable<ELFT> *Symtab) {
if (Config->Shared || Config->ExportDynamic) {
for (const Symbol *S : Symtab->getSymbols()) {
SymbolBody *B = S->Body;
if (B->getVisibility() == STV_DEFAULT)
if (B->includeInDynsym())
MarkSymbol(B);
}
}

View File

@ -0,0 +1,18 @@
// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
// RUN: ld.lld %t.o -o %t.so -shared --gc-sections
// RUN: llvm-readobj -s %t.so | FileCheck %s
// CHECK: Name: .text
// CHECK-NEXT: Type: SHT_PROGBITS
// CHECK-NEXT: Flags [
// CHECK-NEXT: SHF_ALLOC
// CHECK-NEXT: SHF_EXECINSTR
// CHECK-NEXT: ]
// CHECK-NEXT: Address:
// CHECK-NEXT: Offset:
// CHECK-NEXT: Size: 1
.protected g
.globl g
g:
retq