回复: how to generate 64 bit relocations with gcc 3.3.3

Ian Lance Taylor iant@google.com
Tue Apr 3 05:18:00 GMT 2012


"张翀(Zhang Chong)" <chongzhangscu@gmail.com> writes:

> Actually I am not able to run this binary. The Unix-like OS would
> report an error when load the module as below:
>
> The module contains 32 bit relocations - invalid types
>
> I dumped all the relocation types in the binary
>
> R_X86_64_PC32
> R_X86_64_32S
> R_X86_64_64
>
> I suspect R_X86_64_32S is not supported in this os

That is hard to believe.  That would be a fairly serious error.

Unfortunately, if that is indeed the problem, there is no simple way for
you to avoid the R_X86_64_32S reloc type using gcc 3.3.3.  With more
recent versions of gcc, starting around 4.5 or so, you could use
-mcmodel=large, although that carries a significant performance penalty.

Ian

> 2012/3/31, Ian Lance Taylor <iant@google.com>:
>> ""chongzhangscu@gmail.com"" <chongzhangscu@gmail.com> writes:
>>
>>> I have already generate the x86_64 binary
>>> , however, it contains 32bit relocation and is not able to load by a Unix
>>> like os which only allowed 64 bit relocation. I built the module with
>>> option m64 mcmodel=medium. Is there some option I can use to generate only
>>> 64 bit relocation in a x86_64 binary?
>>
>>
>>
>>
>> **********************************************************************
>>
>> Please never send e-mail to both gcc-help@gcc.gnu.org and
>> gcc@gcc.gnu.org.  Please send any followups only to gcc-help.  Thanks.
>>
>> **********************************************************************
>>
>>
>> What precisely happens when you try to run this binary?
>>
>> When you say that it contains 32-bit relocations, what precisely do you
>> mean?
>>
>> Ian
>>



More information about the Gcc-help mailing list