This is the mail archive of the cygwin-developers mailing list for the Cygwin 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]

Re: Error building libffi on x86_64


2013/3/13 Yaakov <yselkowitz@users.sourceforge.net>:
> I have encountered the following error attempting to build
> libffi-3.0.12 on Cygwin:
>
> src/x86/.libs/win64.o:/usr/src/debug/libffi-3.0.12-1/src/x86/win64.S:298:(.text+0x69): relocation truncated to fit: R_X86_64_32S against symbol `ffi_closure_win64_inner' defined in .text section in src/x86/.libs/ffi.o

Hmm, I think the issue is here that the instruction used at this place
misses ip-relative addressing.

At line 298  we have       mov     $SYMBOL_NAME(ffi_closure_win64_inner), %rax

Could you try if you get same isse with that line replaced by  lea
SYMBOL_NAME(ffi_closure_win64_inner)(%rip), %rax

> The only matches on Google for this sort of error were for >2GB code on
> Linux, but I suspect the problem here is with the medium code model.

Well, as ffi_closure_win64_inner is a *near* symbol to win64.S - as it
is within same library and is a static one - I suspect that the issue
is related to medium (means far data) scenario.

Otherway might be to translate libffi itself by using the option
-mcmodel=small instead.  BUt I assuem it is more related by
none-ip-relative addressing within that assembler file.

> Here's what I'm working with:
>
> http://cygwin-ports.git.sourceforge.net/git/gitweb.cgi?p=cygwin-ports/libffi
>
>
> Yaakov

Kai


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]