From: Rui Ueyama Date: Tue, 25 Apr 2017 04:44:54 +0000 (+0000) Subject: Define __tls_get_addr as a hidden symbol even for ARM or MIPS. X-Git-Tag: llvmorg-5.0.0-rc1~6762 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a2a46a9532b7c6481c8bc9399b614d7ba9de5398;p=platform%2Fupstream%2Fllvm.git Define __tls_get_addr as a hidden symbol even for ARM or MIPS. addIgnored defines a given symbol even if there is no existing symbol with the same name. So, even if libc provides __tls_get_addr, we should still be able to call addIgnored. Differential Revision: https://reviews.llvm.org/D32053 llvm-svn: 301290 --- diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index e8718c2..989a55a 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -858,11 +858,8 @@ template void Writer::addReservedSymbols() { // __tls_get_addr is defined by the dynamic linker for dynamic ELFs. For // static linking the linker is required to optimize away any references to // __tls_get_addr, so it's not defined anywhere. Create a hidden definition - // to avoid the undefined symbol error. As usual special cases are ARM and - // MIPS - the libc for these targets defines __tls_get_addr itself because - // there are no TLS optimizations for these targets. - if (!In::DynSymTab && - (Config->EMachine != EM_MIPS && Config->EMachine != EM_ARM)) + // to avoid the undefined symbol error. + if (!In::DynSymTab) Symtab::X->addIgnored("__tls_get_addr"); // If linker script do layout we do not need to create any standart symbols.