Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 2015 10:32:27 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r284725 - head/libexec/rtld-elf/aarch64
Message-ID:  <201506231032.t5NAWRKc044545@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506231032.t5NAWRKc044545>