svn commit: r285043 - in head/lib/libc/aarch64: . sys

Andrew Turner andrew at FreeBSD.org
Thu Jul 2 14:54:23 UTC 2015


Author: andrew
Date: Thu Jul  2 14:54:21 2015
New Revision: 285043
URL: https://svnweb.freebsd.org/changeset/base/285043

Log:
  Cleanup brk and sbrk to use the same code to find curbrk and minbrk when
  both compiling for PIC and non-PIC.
  
  Sponsored by:	ABT Systems Ltd

Modified:
  head/lib/libc/aarch64/Symbol.map
  head/lib/libc/aarch64/sys/brk.S
  head/lib/libc/aarch64/sys/sbrk.S

Modified: head/lib/libc/aarch64/Symbol.map
==============================================================================
--- head/lib/libc/aarch64/Symbol.map	Thu Jul  2 14:44:30 2015	(r285042)
+++ head/lib/libc/aarch64/Symbol.map	Thu Jul  2 14:54:21 2015	(r285043)
@@ -28,6 +28,7 @@ FBSD_1.0 {
 
 FBSDprivate_1.0 {
 	_set_tp;
+	_end;
 	curbrk;
 	minbrk;
 };

Modified: head/lib/libc/aarch64/sys/brk.S
==============================================================================
--- head/lib/libc/aarch64/sys/brk.S	Thu Jul  2 14:44:30 2015	(r285042)
+++ head/lib/libc/aarch64/sys/brk.S	Thu Jul  2 14:54:21 2015	(r285043)
@@ -32,6 +32,8 @@ __FBSDID("$FreeBSD$");
 
 #include "SYS.h"
 
+	.globl	_C_LABEL(_end)
+
 	.data
 	.align	3
 	.globl	_C_LABEL(minbrk)
@@ -47,15 +49,8 @@ ENTRY(_brk)
 	WEAK_REFERENCE(_brk, brk)
 
 	/* Load the address of minbrk */
-#ifdef __PIC__
-	adrp	x2, :got:minbrk
-	ldr	x3, [x2, #:got_lo12:minbrk]
-#else
-	ldr	x3, .Lminbrk
-#endif
-
-	/* Get the minimum allowable brk address */
-	ldr	x2, [x3]
+	adrp	x3, minbrk
+	ldr	x2, [x3, :lo12:minbrk]
 
 	/* Validate the address */
 	cmp	x0, x2
@@ -70,24 +65,12 @@ ENTRY(_brk)
 	_SYSCALL(break)
 	b.cs	cerror
 
-#ifdef __PIC__
-	adrp	x2, :got:curbrk
-	ldr	x3, [x2, #:got_lo12:curbrk]
-#else
-	ldr	x3, .Lcurbrk
-#endif
-
 	/* Store the new curbrk value */
-	str	x4, [x3]
+	adrp	x2, curbrk
+	str	x4, [x2, :lo12:curbrk]
 
 	/* Return success */
 	mov	x0, #0
 	ret
 
-#ifndef __PIC__
-.Lcurbrk:
-	.quad	_C_LABEL(curbrk)
-.Lminbrk:
-	.quad	_C_LABEL(minbrk)
-#endif
 END(_brk)

Modified: head/lib/libc/aarch64/sys/sbrk.S
==============================================================================
--- head/lib/libc/aarch64/sys/sbrk.S	Thu Jul  2 14:44:30 2015	(r285042)
+++ head/lib/libc/aarch64/sys/sbrk.S	Thu Jul  2 14:54:21 2015	(r285043)
@@ -32,6 +32,8 @@ __FBSDID("$FreeBSD$");
 
 #include "SYS.h"
 
+	.globl	_C_LABEL(_end)
+
 	.data
 	.align	3
 	.global	_C_LABEL(curbrk)
@@ -47,15 +49,10 @@ ENTRY(_sbrk)
 	WEAK_REFERENCE(_sbrk, sbrk)
 
 	/* Load the address of curbrk */
-#ifdef __PIC__
-	adrp	x2, :got:curbrk
-	ldr	x3, [x2, #:got_lo12:curbrk]
-#else
-	ldr	x3, .Lcurbrk
-#endif
+	adrp	x3, curbrk
 
 	/* Get the current brk address */
-	ldr	x2, [x3]
+	ldr	x2, [x3, :lo12:curbrk]
 
 	/* Calculate the new value */
 	add	x0, x2, x0
@@ -66,14 +63,10 @@ ENTRY(_sbrk)
 	b.cs	cerror
 
 	/* Load the old value to return */
-	ldr	x0, [x3]
+	ldr	x0, [x3, :lo12:curbrk]
 
 	/* Store the new curbrk value */
-	str	x4, [x3]
+	str	x4, [x3, :lo12:curbrk]
 
 	ret
-#ifndef __PIC__
-.Lcurbrk:
-	.quad	_C_LABEL(curbrk)
-#endif
 END(_sbrk)


More information about the svn-src-head mailing list