Module Name: src
Committed By: matt
Date: Thu Aug 1 05:32:33 UTC 2013
Modified Files:
src/lib/libc/arch/arm: SYS.h
src/lib/libc/arch/arm/sys: brk.S sbrk.S
Log Message:
Make __minbrk, __curbrk, and CERROR hidden and avoid using the GOT to access
them.
To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/lib/libc/arch/arm/SYS.h
cvs rdiff -u -r1.9 -r1.10 src/lib/libc/arch/arm/sys/brk.S \
src/lib/libc/arch/arm/sys/sbrk.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/arch/arm/SYS.h
diff -u src/lib/libc/arch/arm/SYS.h:1.11 src/lib/libc/arch/arm/SYS.h:1.12
--- src/lib/libc/arch/arm/SYS.h:1.11 Thu Jul 18 12:21:52 2013
+++ src/lib/libc/arch/arm/SYS.h Thu Aug 1 05:32:33 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: SYS.h,v 1.11 2013/07/18 12:21:52 matt Exp $ */
+/* $NetBSD: SYS.h,v 1.12 2013/08/01 05:32:33 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -86,4 +86,5 @@
PSEUDO(weak,weak)
#endif
+ .hidden CERROR
.globl CERROR
Index: src/lib/libc/arch/arm/sys/brk.S
diff -u src/lib/libc/arch/arm/sys/brk.S:1.9 src/lib/libc/arch/arm/sys/brk.S:1.10
--- src/lib/libc/arch/arm/sys/brk.S:1.9 Fri May 13 23:14:36 2011
+++ src/lib/libc/arch/arm/sys/brk.S Thu Aug 1 05:32:33 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: brk.S,v 1.9 2011/05/13 23:14:36 nonaka Exp $ */
+/* $NetBSD: brk.S,v 1.10 2013/08/01 05:32:33 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -34,7 +34,7 @@
#include "SYS.h"
.globl _C_LABEL(_end)
- .globl CURBRK
+ .globl _C_LABEL(__curbrk)
#ifdef WEAK_ALIAS
WEAK_ALIAS(brk, _brk)
@@ -43,6 +43,7 @@ WEAK_ALIAS(brk, _brk)
.data
.align 0
.globl _C_LABEL(__minbrk)
+ .hidden _C_LABEL(__minbrk)
.type _C_LABEL(__minbrk),#object
_C_LABEL(__minbrk):
.word _C_LABEL(_end)
@@ -57,7 +58,7 @@ ENTRY(_brk)
add r3, pc, r3
.L1:
ldr r1, .Lminbrk
- ldr r1, [r3, r1]
+ add r1, r3, r1
#else
ldr r1, .Lminbrk
#endif
@@ -76,7 +77,7 @@ ENTRY(_brk)
#ifdef PIC
ldr r1, .Lcurbrk
- ldr r1, [r3, r1]
+ add r1, r3, r1
#else
ldr r1, .Lcurbrk
#endif
@@ -93,6 +94,6 @@ ENTRY(_brk)
.word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
#endif
.Lminbrk:
- .word PIC_SYM(_C_LABEL(__minbrk), GOT)
+ .word PIC_SYM(_C_LABEL(__minbrk), GOTOFF)
.Lcurbrk:
- .word PIC_SYM(CURBRK, GOT)
+ .word PIC_SYM(_C_LABEL(__curbrk), GOTOFF)
Index: src/lib/libc/arch/arm/sys/sbrk.S
diff -u src/lib/libc/arch/arm/sys/sbrk.S:1.9 src/lib/libc/arch/arm/sys/sbrk.S:1.10
--- src/lib/libc/arch/arm/sys/sbrk.S:1.9 Fri May 13 23:14:36 2011
+++ src/lib/libc/arch/arm/sys/sbrk.S Thu Aug 1 05:32:33 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: sbrk.S,v 1.9 2011/05/13 23:14:36 nonaka Exp $ */
+/* $NetBSD: sbrk.S,v 1.10 2013/08/01 05:32:33 matt Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -41,25 +41,23 @@ WEAK_ALIAS(sbrk, _sbrk)
.data
.align 0
- .globl CURBRK
- .type CURBRK,#object
-CURBRK:
+ .globl _C_LABEL(__curbrk)
+ .hidden _C_LABEL(__curbrk)
+ .type _C_LABEL(__curbrk),#object
+_C_LABEL(__curbrk):
.word _C_LABEL(_end)
/*
* Change the data segment size
*/
ENTRY(_sbrk)
+ /* get address or PC offset to __curbrk */
+ ldr r2, .Lcurbrk
#ifdef PIC
- /* Setup the GOT */
- ldr r3, .Lgot
- add r3, pc, r3
+ add r2, pc, r2
.L1:
- ldr r2, .Lcurbrk
- ldr r2, [r3, r2]
-#else
- ldr r2, .Lcurbrk
#endif
+
/* Get the current brk address */
ldr r1, [r2]
@@ -67,7 +65,7 @@ ENTRY(_sbrk)
mov r3, r0
add r0, r0, r1
SYSTRAP(break)
- bcs PIC_SYM(CERROR, PLT)
+ bcs CERROR
/* Store new curbrk value */
ldr r0, [r2]
@@ -78,9 +76,9 @@ ENTRY(_sbrk)
RET
.align 0
+.Lcurbrk:
#ifdef PIC
-.Lgot:
- .word _C_LABEL(_GLOBAL_OFFSET_TABLE_) + (. - (.L1+4))
+ .word _C_LABEL(__curbrk) - (.L1+4)
+#else
+ .word _C_LABEL(__curbrk)
#endif
-.Lcurbrk:
- .word PIC_SYM(CURBRK, GOT)