Error building libffi on x86_64
Yaakov (Cygwin/X)
yselkowitz@users.sourceforge.net
Wed Mar 13 10:14:00 GMT 2013
On Wed, 13 Mar 2013 10:25:03 +0100, Kai Tietz wrote:
> 2013/3/13 Yaakov:
> > 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
That compiles; results of make check:
=== libffi Summary ===
# of expected passes 1754
# of unexpected failures 10
# of unexpected successes 44
# of expected failures 6
# of unsupported tests 55
The failures were in libffi.call/cls_longdouble.c execution tests and
libffi.special/unwindtest.cc tests. I have uploaded dejagnu and
expect, and updated my patch accordingly.
> > 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.
Standalone libffi is built as a shared library.
> 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.
Thanks for the help,
Yaakov
More information about the Cygwin-developers
mailing list