This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

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


Hi,

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.

ChangeLog

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?

Regards,
Kai

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,


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