This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Jakub Jelinek <jakub@redhat.com> writes:
> On Fri, Sep 05, 2003 at 11:57:56AM +0200, Andreas Jaeger wrote:
>>
>> If I compile the following small program on x86-64 (with either GCC
>> 3.3 CVS, GCC 3.3 hammer-branch CVS or 3.4 CVS) I get the following
>> error:
>>
>> $ /opt/gcc/3.3-devel/bin/gcc -g -c tls.c -o tls.o -fPIC -ftls-model=local-exec
>> $ /opt/gcc/3.3-devel/bin/gcc -g -o tls.so -shared tls.o
>> /usr/bin/ld: tls.o: relocation R_X86_64_TPOFF32 can not be used when making a shared object; recompile with -fPIC
>> tls.o: could not read symbols: Bad value
>> collect2: ld returned 1 exit status
>>
>> The program is:
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> static __thread int foo;
>>
>> int getTLSVar(void)
>> {
>> return foo;
>> }
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> This works fine on other platforms, e.g. i386.
>>
>> Jakub, any ideas on this one?
>
> local-exec is not supported in shared libraries on x86_64 (well, it is not
> supported on most arches).
In that case shouldn't gcc already reject the combination -fPIC
-ftls-model=local-exec?
> It is the same thing as supporting -fno-pic code in shared libraries
> - local-exec would mean TLS relocations against .text segment.
Ok, understood.
Thanks for the explanation,
Andreas
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
Attachment:
pgp00000.pgp
Description: PGP signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |