Don't error if __tls_get_addr is defined.

Turns out some systems do define it. Not producing an error in this
case matches gold and bfd.

llvm-svn: 287125
This commit is contained in:
Rafael Espindola 2016-11-16 18:01:41 +00:00
parent e0fc24210d
commit 95eae57d78
2 changed files with 12 additions and 1 deletions

View File

@ -137,7 +137,8 @@ DefinedRegular<ELFT> *SymbolTable<ELFT>::addAbsolute(StringRef Name,
template <class ELFT>
DefinedRegular<ELFT> *SymbolTable<ELFT>::addIgnored(StringRef Name,
uint8_t Visibility) {
if (!find(Name))
SymbolBody *S = find(Name);
if (!S || !S->isUndefined())
return nullptr;
return addAbsolute(Name, Visibility);
}

View File

@ -0,0 +1,10 @@
// RUN: llvm-mc %s -o %t.o -triple x86_64-pc-linux -filetype=obj
// RUN: ld.lld %t.o -o %t
// Don't error if __tls_get_addr is defined.
.global _start
.global __tls_get_addr
_start:
__tls_get_addr:
nop