[patch libffi]: Make sure code is position-independent for x64 targets

Kai Tietz ktietz70@googlemail.com
Fri Mar 22 07:43:00 GMT 2013


this patch fixes the Win64-code so that we use only pc-relative
addressing.  This
is of importance if code gets linked to an pe-image with an image-base
above 2GB.


2013-03-22  Kai Tietz  <ktietz@redhat.com>

	* src/x86/win64.S: Make use of ffi_closure_win64_inner
	symbol pc-relative.

Tested for x86_64-w64-mingw32, and for upcoming x86_64-pc-cygwin
target.  Ok for apply?


Index: src/x86/win64.S
--- src/x86/win64.S	(Revision 196898)
+++ src/x86/win64.S	(Arbeitskopie)
@@ -295,7 +295,7 @@
 	mov	%rax, %rcx	# context is first parameter
 	mov	%rsp, %rdx	# stack is second parameter
 	add	$48, %rdx	# point to start of arguments
-	mov	$SYMBOL_NAME(ffi_closure_win64_inner), %rax
+	leaq	SYMBOL_NAME(ffi_closure_win64_inner)(%rip), %rax
 	callq	*%rax		# call the real closure function
 	add	$40, %rsp
 	movq	%rax, %xmm0	# If the closure returned a float,

More information about the Gcc-patches mailing list