[llvm-bugs] [Bug 25821] New: “illegal thread-local reference to regular symbol” error on a TLS variable
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Dec 14 07:40:50 PST 2015
https://llvm.org/bugs/show_bug.cgi?id=25821
Bug ID: 25821
Summary: “illegal thread-local reference to regular symbol”
error on a TLS variable
Product: lld
Version: unspecified
Hardware: Macintosh
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: unassignedbugs at nondot.org
Reporter: joel.cornett at gmail.com
CC: llvm-bugs at lists.llvm.org
Classification: Unclassified
Linking fails with the message "illegal thread-local reference to regular
symbol" when attempting to create a dylib which references an external TLS
variable declared with `__thread`.
In `foo.cc`:
extern __thread int x;
void foo() { ++x; }
The compile step is (this works fine):
$CXX -stdlib=libc++ -std=c++11 -fvisibility=hidden -fPIC -o foo.cc.o -c
foo.cc
The linking step (where the error is thrown):
$CXX -stdlib=libc++ -std=c++11 -fvisibility=hidden -dynamiclib
-Wl,-undefined,dynamic_lookup -o libfoo.dylib foo.cpp.o
Now this works fine in gcc (5 and 4.9.3) on the same platform. I understand
there are differences in the implementation of `__thread`, but I cannot find
any documentation addressing this specific issue anywhere, so I assume this is
a bug.
Version info:
$ $CXX --version
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
$ ld -v
@(#)PROGRAM:ld PROJECT:ld64-253.9
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h
armv6m armv7k armv7m armv7em (tvOS)
LTO support using: Apple LLVM 7.0.2 (clang-700.1.81)
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20151214/51848f03/attachment.html>
More information about the llvm-bugs
mailing list