libmudflap and emutls question
Jie Zhang
jie.zhang@analog.com
Wed Jan 7 09:55:00 GMT 2009
Hi Paolo,
Paolo Bonzini wrote:
>> Both are same.
>
> Ah, I see, the call is optimized out because __emutls_get_address is
> const. You can try
>
> __thread int a;
> int main () {
> return *(int *)__emutls_get_address ((void *)0) == a;
> }
>
> I don't have an emutls target at hand, but it does fail on Linux.
>
Which version of gcc did you use? gcc 4.1 (maybe and 4.2) will report
error. But gcc 4.3 compiles OK. I tested using x86_64 native gcc from
Debian unstable. __emutls_get_address is defined in libgcc even the
target has real TLS.
/usr/lib/gcc/x86_64-linux-gnu$ readelf -a ./4.3/libgcc_s.so | grep emutls
28: 0000000000013a80 390 FUNC GLOBAL DEFAULT 12
__emutls_get_address@@GCC_4.3.0
136: 0000000000013970 57 FUNC GLOBAL DEFAULT 12
__emutls_register_common@@GCC_4.3.0
Regards,
Jie
More information about the Gcc
mailing list