"张翀(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 >>