MIPS TLS relocation assembly code invalid from GCC-4.1...

Jim Wilson wilson@specifix.com
Mon Oct 24 01:01:00 GMT 2005


Steven J. Hill wrote:
> GCC guts, but could not figure out why I get the symbolic register
> representations in the glibc compiled code and not in my stuff. Can

Those aren't symbolic registers.  Those are variable names.  Try looking 
at the input file tst-tls10.c, and notice that it has variable names a1, 
a2, and a3.  So somehow, in your output, the variable name a1 got 
replaced with the register name $5, which won't work.

It is a very bad idea to try to use register names that are 
indistinguishable from variable names.  One of them must have a prefix 
and/or postfix to avoid ambiguity.

Maybe you have a macro somewhere that is trying to define a1 to $5? 
This should only be an issue if you are trying to preprocess .s output 
though.

Or maybe you are using a compiler option to change register names? 
-mrname was removed in gcc-4.0, and I'm skeptical that this could cause 
the failure that you are seeing.

Or maybe there is just a bug in the mips uclib tls support.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com



More information about the Gcc mailing list