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)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to