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] |