On some architectures, the internal __minbrk/__curbrk variables are 
defined in terms of 'end' instead of '_end'.  The normal ld maps support 
that, providing plain 'end' only when it is referenced, but we not only 
use it but also export it.  That's kinda silly as the 'end' symbol in a 
shared library is useless, being overriden by the *real* end (and _end) 
symbols from the executable.

The diff below switches the remaining architectures from "end" to "_end" 
in their brk/sbrk implementations: arm, hppa, mips64, powerpc, and sh

Any emacs users on those archs that can test this *before* it's committed?


Philip Guenther



Index: arch/arm/Symbols.list
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/arm/Symbols.list,v
retrieving revision 1.2
diff -u -p -r1.2 Symbols.list
--- arch/arm/Symbols.list       26 Aug 2015 01:54:09 -0000      1.2
+++ arch/arm/Symbols.list       22 May 2016 02:49:02 -0000
@@ -66,7 +66,6 @@ _softfloat_float_rounding_mode
 _stack
 add64
 add96
-end
 eq64
 fabsl
 frexpl
Index: arch/arm/sys/brk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/brk.S,v
retrieving revision 1.7
diff -u -p -r1.7 brk.S
--- arch/arm/sys/brk.S  10 Sep 2015 13:29:09 -0000      1.7
+++ arch/arm/sys/brk.S  21 May 2016 09:01:41 -0000
@@ -34,14 +34,14 @@
 
 #include "SYS.h"
 
-       .globl  _C_LABEL(end)
+       .globl  _C_LABEL(_end)
        .globl  __curbrk
 
        .data
        .align  0
        .type   __minbrk,#object
 __minbrk:
-       .word   _C_LABEL(end)
+       .word   _C_LABEL(_end)
        END(__minbrk)
 
        .weak   brk
Index: arch/arm/sys/sbrk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/arm/sys/sbrk.S,v
retrieving revision 1.7
diff -u -p -r1.7 sbrk.S
--- arch/arm/sys/sbrk.S 10 Sep 2015 13:29:09 -0000      1.7
+++ arch/arm/sys/sbrk.S 21 May 2016 09:01:55 -0000
@@ -34,7 +34,7 @@
 
 #include "SYS.h"
 
-       .globl  _C_LABEL(end)
+       .globl  _C_LABEL(_end)
 
        .data
        .align  0
@@ -42,7 +42,7 @@
        .type   __curbrk,#object
        .hidden __curbrk
 __curbrk:
-       .word   _C_LABEL(end)
+       .word   _C_LABEL(_end)
        END(__curbrk)
 
        .weak   sbrk
Index: arch/hppa/Symbols.list
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/hppa/Symbols.list,v
retrieving revision 1.2
diff -u -p -r1.2 Symbols.list
--- arch/hppa/Symbols.list      26 Aug 2015 01:54:09 -0000      1.2
+++ arch/hppa/Symbols.list      22 May 2016 02:49:04 -0000
@@ -1,6 +1,5 @@
 _GLOBAL_OFFSET_TABLE_
 _mcount
-end
 fabsl
 frexpl
 ldexpl
Index: arch/hppa/sys/brk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/hppa/sys/brk.S,v
retrieving revision 1.17
diff -u -p -r1.17 brk.S
--- arch/hppa/sys/brk.S 10 Sep 2015 13:29:09 -0000      1.17
+++ arch/hppa/sys/brk.S 30 May 2016 03:14:49 -0000
@@ -29,12 +29,12 @@
 #include "SYS.h"
 
        .import __curbrk, data
-       .import end, data
+       .import _end, data
 
        .data
        .export __minbrk, data
 __minbrk
-       .long   end
+       .long   _end
 
        .weak   brk
 
Index: arch/hppa/sys/sbrk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/hppa/sys/sbrk.S,v
retrieving revision 1.16
diff -u -p -r1.16 sbrk.S
--- arch/hppa/sys/sbrk.S        10 Sep 2015 13:29:09 -0000      1.16
+++ arch/hppa/sys/sbrk.S        22 May 2016 09:27:37 -0000
@@ -28,12 +28,12 @@
 
 #include "SYS.h"
 
-       .import end, data
+       .import _end, data
 
        .data
        .export __curbrk, data
 __curbrk
-       .long   end
+       .long   _end
 
        .weak   sbrk
 
Index: arch/mips64/Symbols.list
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/mips64/Symbols.list,v
retrieving revision 1.3
diff -u -p -r1.3 Symbols.list
--- arch/mips64/Symbols.list    13 Sep 2015 08:31:47 -0000      1.3
+++ arch/mips64/Symbols.list    22 May 2016 02:49:06 -0000
@@ -9,6 +9,5 @@ _ftext
 _gp
 _mcount
 cacheflush
-end
 get_fpc_csr
 set_fpc_csr
Index: arch/mips64/sys/brk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/mips64/sys/brk.S,v
retrieving revision 1.7
diff -u -p -r1.7 brk.S
--- arch/mips64/sys/brk.S       5 Sep 2015 06:22:47 -0000       1.7
+++ arch/mips64/sys/brk.S       21 May 2016 09:04:07 -0000
@@ -37,7 +37,7 @@
 
        .data
 __minbrk:
-       PTR_VAL _C_LABEL(end)
+       PTR_VAL _C_LABEL(_end)
        .size   __minbrk, . - __minbrk
        .type   __minbrk,@object
        .text
Index: arch/mips64/sys/sbrk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/mips64/sys/sbrk.S,v
retrieving revision 1.7
diff -u -p -r1.7 sbrk.S
--- arch/mips64/sys/sbrk.S      5 Sep 2015 06:22:47 -0000       1.7
+++ arch/mips64/sys/sbrk.S      21 May 2016 09:04:12 -0000
@@ -37,7 +37,7 @@
        .hidden __curbrk
 
        .data
-__curbrk:      PTR_VAL _C_LABEL(end)
+__curbrk:      PTR_VAL _C_LABEL(_end)
        .size   __curbrk, . - __curbrk
        .type   __curbrk,@object
        .text
Index: arch/powerpc/Symbols.list
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/powerpc/Symbols.list,v
retrieving revision 1.2
diff -u -p -r1.2 Symbols.list
--- arch/powerpc/Symbols.list   26 Aug 2015 01:54:09 -0000      1.2
+++ arch/powerpc/Symbols.list   22 May 2016 02:49:08 -0000
@@ -3,7 +3,6 @@ __floatundidf
 __plt_end
 __plt_start
 _mcount
-end
 fabsl
 frexpl
 ldexpl
Index: arch/powerpc/sys/brk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/powerpc/sys/brk.S,v
retrieving revision 1.13
diff -u -p -r1.13 brk.S
--- arch/powerpc/sys/brk.S      15 May 2016 00:15:10 -0000      1.13
+++ arch/powerpc/sys/brk.S      21 May 2016 09:07:27 -0000
@@ -28,7 +28,7 @@
 #include "SYS.h"
 
        .extern __curbrk
-       .extern _C_LABEL(end)
+       .extern _C_LABEL(_end)
 
        .weak   brk
 
@@ -36,8 +36,8 @@ PSEUDO_PREFIX(,brk,break)
        
        /* check >= _end, if not make the call for _end */
 #ifndef __PIC__
-       addis 5,0,_C_LABEL(end)@h
-       ori  5,5,_C_LABEL(end)@l                /* # 5 = &_end */
+       addis 5,0,_C_LABEL(_end)@h
+       ori  5,5,_C_LABEL(_end)@l               /* # 5 = &_end */
 #else
        mflr    10
        bcl     20, 31, 1f
@@ -45,7 +45,7 @@ PSEUDO_PREFIX(,brk,break)
        addis   9, 9, _GLOBAL_OFFSET_TABLE_-1b@ha
        addi    9, 9, _GLOBAL_OFFSET_TABLE_-1b@l
        mtlr    10
-       lwz     5,_C_LABEL(end)@got(9)
+       lwz     5,_C_LABEL(_end)@got(9)
 #endif
        cmplw   3,5
        bge+    .L_brk_call
Index: arch/powerpc/sys/sbrk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/powerpc/sys/sbrk.S,v
retrieving revision 1.12
diff -u -p -r1.12 sbrk.S
--- arch/powerpc/sys/sbrk.S     15 May 2016 00:15:10 -0000      1.12
+++ arch/powerpc/sys/sbrk.S     21 May 2016 09:05:05 -0000
@@ -32,7 +32,7 @@
        .globl __curbrk
        .hidden __curbrk
 __curbrk:
-       .long _C_LABEL(end)
+       .long _C_LABEL(_end)
        END(__curbrk)
        .type   __curbrk,@object
 
Index: arch/sh/Symbols.list
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/sh/Symbols.list,v
retrieving revision 1.2
diff -u -p -r1.2 Symbols.list
--- arch/sh/Symbols.list        26 Aug 2015 01:54:09 -0000      1.2
+++ arch/sh/Symbols.list        22 May 2016 02:49:09 -0000
@@ -4,7 +4,6 @@ ___dtors
 ___dtors_end
 __floatundidf
 __mcount
-end
 fabsl
 frexpl
 ldexpl
Index: arch/sh/sys/brk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/sh/sys/brk.S,v
retrieving revision 1.5
diff -u -p -r1.5 brk.S
--- arch/sh/sys/brk.S   18 May 2016 20:21:13 -0000      1.5
+++ arch/sh/sys/brk.S   21 May 2016 09:04:17 -0000
@@ -42,7 +42,7 @@
        .data
        .align  2
 __minbrk:
-       .long   _C_LABEL(end)
+       .long   _C_LABEL(_end)
        .size   __minbrk, . - __minbrk
        .type   __minbrk,@object
 
Index: arch/sh/sys/sbrk.S
===================================================================
RCS file: /data/src/openbsd/src/lib/libc/arch/sh/sys/sbrk.S,v
retrieving revision 1.5
diff -u -p -r1.5 sbrk.S
--- arch/sh/sys/sbrk.S  18 May 2016 20:21:13 -0000      1.5
+++ arch/sh/sys/sbrk.S  21 May 2016 09:04:22 -0000
@@ -37,7 +37,7 @@
 
 #include "SYS.h"
 
-       .globl  _C_LABEL(end)
+       .globl  _C_LABEL(_end)
        .globl  __curbrk
        .hidden __curbrk
 
@@ -45,7 +45,7 @@
 
        .data
 __curbrk:
-       .long   _C_LABEL(end)
+       .long   _C_LABEL(_end)
        .size   __curbrk, . - __curbrk
        .type   __curbrk,@object
 

Reply via email to