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)