svn commit: r284725 - head/libexec/rtld-elf/aarch64

Andrew Turner andrew at FreeBSD.org
Tue Jun 23 10:32:27 UTC 2015


Author: andrew
Date: Tue Jun 23 10:32:26 2015
New Revision: 284725
URL: https://svnweb.freebsd.org/changeset/base/284725

Log:
  Also save x8. It may be passed into a function as the indirect result
  location pointer when the return value doesn't fit in a register, e.g. when
  returning a struct.
  
  Obtained from:	ABT Systems Ltd
  Sponsored by:	The FreeBSD Foundation

Modified:
  head/libexec/rtld-elf/aarch64/rtld_start.S

Modified: head/libexec/rtld-elf/aarch64/rtld_start.S
==============================================================================
--- head/libexec/rtld-elf/aarch64/rtld_start.S	Tue Jun 23 06:59:46 2015	(r284724)
+++ head/libexec/rtld-elf/aarch64/rtld_start.S	Tue Jun 23 10:32:26 2015	(r284725)
@@ -68,6 +68,7 @@ ENTRY(_rtld_bind_start)
 	stp	x2, x3, [sp, #-16]!
 	stp	x4, x5, [sp, #-16]!
 	stp	x6, x7, [sp, #-16]!
+	stp	x8, xzr, [sp, #-16]!
 
 	/* Calculate reloff */
 	ldr	x2, [x17, #0]	/* Get the address of the entry */
@@ -84,12 +85,13 @@ ENTRY(_rtld_bind_start)
 	bl	_rtld_bind
 
 	/* Restore the registers saved by the plt code */
-	ldp	xzr, x30, [sp, #(4 * 16)]
+	ldp	xzr, x30, [sp, #(5 * 16)]
 
 	/* Backup the address to branch to */
 	mov	x16, x0
 
 	/* restore the arguments */
+	ldp	x8, xzr, [sp], #16
 	ldp	x6, x7, [sp], #16
 	ldp	x4, x5, [sp], #16
 	ldp	x2, x3, [sp], #16


More information about the svn-src-head mailing list