Updating calls to ffi_closure_unix64_inner and ffi_closure_win64_inner to use PLT. Without this fix, statically linking libffi causes the linker error i.e. 'requires dynamic R_X86_64_PC32 reloc against ffi_closure_unix64_inner which may overflow at runtime; recompile with -fPIC)'
This commit is contained in:
@@ -274,7 +274,7 @@ L(do_closure):
|
|||||||
leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */
|
leaq ffi_closure_OFS_RVALUE(%rsp), %rcx /* Load rvalue */
|
||||||
movq %rsp, %r8 /* Load reg_args */
|
movq %rsp, %r8 /* Load reg_args */
|
||||||
leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */
|
leaq ffi_closure_FS+8(%rsp), %r9 /* Load argp */
|
||||||
call C(ffi_closure_unix64_inner)
|
call PLT(C(ffi_closure_unix64_inner))
|
||||||
|
|
||||||
/* Deallocate stack frame early; return value is now in redzone. */
|
/* Deallocate stack frame early; return value is now in redzone. */
|
||||||
addq $ffi_closure_FS, %rsp
|
addq $ffi_closure_FS, %rsp
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ C(ffi_closure_win64):
|
|||||||
movsd %xmm3, ffi_clo_OFF_X+24(%rsp)
|
movsd %xmm3, ffi_clo_OFF_X+24(%rsp)
|
||||||
|
|
||||||
leaq ffi_clo_OFF_R(%rsp), %r9
|
leaq ffi_clo_OFF_R(%rsp), %r9
|
||||||
call C(ffi_closure_win64_inner)
|
call PLT(C(ffi_closure_win64_inner))
|
||||||
|
|
||||||
/* Load the result into both possible result registers. */
|
/* Load the result into both possible result registers. */
|
||||||
movq ffi_clo_OFF_R(%rsp), %rax
|
movq ffi_clo_OFF_R(%rsp), %rax
|
||||||
|
|||||||
Reference in New Issue
Block a user