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