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