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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


"张翀(Zhang Chong)" <chongzhangscu@xxxxxxxxx> 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@xxxxxxxxxx>:
>> ""chongzhangscu@xxxxxxxxx"" <chongzhangscu@xxxxxxxxx> 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@xxxxxxxxxxx and
>> gcc@xxxxxxxxxxx.  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
>>



[Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

Add to Google