Module Name: src
Committed By: riastradh
Date: Thu Nov 21 18:16:15 UTC 2024
Modified Files:
src/lib/libm: m.aarch64.expsym m.alpha.expsym m.common.expsym
m.hppa.expsym m.i386.expsym m.ia64.expsym m.m68k.expsym
m.mips.expsym m.mips64.expsym m.mipshf.expsym m.powerpc.expsym
m.powerpc64.expsym m.sh3.expsym m.sparc.expsym m.sparc64.expsym
m.vax.expsym m.x86_64.expsym
src/share/mk: bsd.lib.mk
Log Message:
bsd.lib.mk: Exclude MD linker-generated crud from expected symbols.
Not entirely sure why these symbols like _init/_fini/_end on x86 or
__bss_start__/__bss_end__ on aarch64 or _GLOBAL_OFFSET_TABLE_ on hppa
are exported at all, but it's something the linker is doing
automatically -- and unnecessarily, since libraries with explicit
version scripts don't export these -- and I'm not sure there's any way
to suppress it.
This way, most *.expsym lists can be machine-independent, which will
help keep maintenance burden much lower.
Currently we have only one *.expsym file for a library that _doesn't_
use a version script, libm -- fix that up to reduce the crud. (That
one already happens to have a lot of machine-dependent exports
because of differences in floating-point ABIs so the linker-generated
MD symbol crud wasn't much more of a maintenance burden in this case,
but this maintenance burden is why I haven't aggressively gone around
creating *.expsym files for other libraries.)
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libm/m.aarch64.expsym \
src/lib/libm/m.i386.expsym src/lib/libm/m.sparc64.expsym \
src/lib/libm/m.x86_64.expsym
cvs rdiff -u -r1.4 -r1.5 src/lib/libm/m.alpha.expsym \
src/lib/libm/m.hppa.expsym src/lib/libm/m.ia64.expsym \
src/lib/libm/m.powerpc.expsym src/lib/libm/m.sparc.expsym
cvs rdiff -u -r1.2 -r1.3 src/lib/libm/m.common.expsym
cvs rdiff -u -r1.6 -r1.7 src/lib/libm/m.m68k.expsym \
src/lib/libm/m.mips.expsym
cvs rdiff -u -r1.3 -r1.4 src/lib/libm/m.mips64.expsym \
src/lib/libm/m.mipshf.expsym src/lib/libm/m.powerpc64.expsym \
src/lib/libm/m.sh3.expsym
cvs rdiff -u -r1.7 -r1.8 src/lib/libm/m.vax.expsym
cvs rdiff -u -r1.411 -r1.412 src/share/mk/bsd.lib.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libm/m.aarch64.expsym
diff -u src/lib/libm/m.aarch64.expsym:1.5 src/lib/libm/m.aarch64.expsym:1.6
--- src/lib/libm/m.aarch64.expsym:1.5 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.aarch64.expsym Thu Nov 21 18:16:15 2024
@@ -21,11 +21,8 @@ _ItL_qS6
_ItL_qS7
_ItL_qS8
_ItL_qS9
-__bss_end__
-__bss_start__
__divtc3
__divxc3
-__end__
__fe_dfl_env
__ieee754_sqrtl
__kernel_cosl
@@ -33,7 +30,6 @@ __kernel_sinl
__kernel_tanl
__multc3
__mulxc3
-_bss_end__
_fma
_fmaf
_fmax
Index: src/lib/libm/m.i386.expsym
diff -u src/lib/libm/m.i386.expsym:1.5 src/lib/libm/m.i386.expsym:1.6
--- src/lib/libm/m.i386.expsym:1.5 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.i386.expsym Thu Nov 21 18:16:15 2024
@@ -21,8 +21,6 @@ __kernel_cosl
__kernel_sinl
__kernel_tanl
__mulxc3
-_fini
-_init
fabsl
fma
fmaf
Index: src/lib/libm/m.sparc64.expsym
diff -u src/lib/libm/m.sparc64.expsym:1.5 src/lib/libm/m.sparc64.expsym:1.6
--- src/lib/libm/m.sparc64.expsym:1.5 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.sparc64.expsym Thu Nov 21 18:16:15 2024
@@ -29,8 +29,6 @@ __kernel_sinl
__kernel_tanl
__multc3
__mulxc3
-_fini
-_init
fabsl
fma
fmaf
Index: src/lib/libm/m.x86_64.expsym
diff -u src/lib/libm/m.x86_64.expsym:1.5 src/lib/libm/m.x86_64.expsym:1.6
--- src/lib/libm/m.x86_64.expsym:1.5 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.x86_64.expsym Thu Nov 21 18:16:15 2024
@@ -21,8 +21,6 @@ __kernel_cosl
__kernel_sinl
__kernel_tanl
__mulxc3
-_fini
-_init
fabsl
fma
fmaf
Index: src/lib/libm/m.alpha.expsym
diff -u src/lib/libm/m.alpha.expsym:1.4 src/lib/libm/m.alpha.expsym:1.5
--- src/lib/libm/m.alpha.expsym:1.4 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.alpha.expsym Thu Nov 21 18:16:15 2024
@@ -8,8 +8,6 @@ _fegetexcept
_feholdexcept
_fesetenv
_feupdateenv
-_fini
-_init
fedisableexcept
feenableexcept
fegetenv
Index: src/lib/libm/m.hppa.expsym
diff -u src/lib/libm/m.hppa.expsym:1.4 src/lib/libm/m.hppa.expsym:1.5
--- src/lib/libm/m.hppa.expsym:1.4 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.hppa.expsym Thu Nov 21 18:16:15 2024
@@ -1,5 +1,2 @@
-_GLOBAL_OFFSET_TABLE_
__divxc3
__mulxc3
-_fini
-_init
Index: src/lib/libm/m.ia64.expsym
diff -u src/lib/libm/m.ia64.expsym:1.4 src/lib/libm/m.ia64.expsym:1.5
--- src/lib/libm/m.ia64.expsym:1.4 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.ia64.expsym Thu Nov 21 18:16:15 2024
@@ -1,5 +1,3 @@
__divxc3
__fe_dfl_env
__mulxc3
-_fini
-_init
Index: src/lib/libm/m.powerpc.expsym
diff -u src/lib/libm/m.powerpc.expsym:1.4 src/lib/libm/m.powerpc.expsym:1.5
--- src/lib/libm/m.powerpc.expsym:1.4 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.powerpc.expsym Thu Nov 21 18:16:15 2024
@@ -1,8 +1,6 @@
__divtc3
__fe_dfl_env
__multc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.sparc.expsym
diff -u src/lib/libm/m.sparc.expsym:1.4 src/lib/libm/m.sparc.expsym:1.5
--- src/lib/libm/m.sparc.expsym:1.4 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.sparc.expsym Thu Nov 21 18:16:15 2024
@@ -1,7 +1,5 @@
__divxc3
__mulxc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.common.expsym
diff -u src/lib/libm/m.common.expsym:1.2 src/lib/libm/m.common.expsym:1.3
--- src/lib/libm/m.common.expsym:1.2 Tue Jul 16 14:52:49 2024
+++ src/lib/libm/m.common.expsym Thu Nov 21 18:16:15 2024
@@ -35,7 +35,6 @@ _cosl
_ctans
_ctansf
_ctansl
-_end
_exp
_expf
_expl
Index: src/lib/libm/m.m68k.expsym
diff -u src/lib/libm/m.m68k.expsym:1.6 src/lib/libm/m.m68k.expsym:1.7
--- src/lib/libm/m.m68k.expsym:1.6 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.m68k.expsym Thu Nov 21 18:16:15 2024
@@ -20,8 +20,6 @@ __kernel_cosl
__kernel_sinl
__kernel_tanl
__mulxc3
-_fini
-_init
fabsl
fma
fmaf
Index: src/lib/libm/m.mips.expsym
diff -u src/lib/libm/m.mips.expsym:1.6 src/lib/libm/m.mips.expsym:1.7
--- src/lib/libm/m.mips.expsym:1.6 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.mips.expsym Thu Nov 21 18:16:15 2024
@@ -1,7 +1,5 @@
__divxc3
__mulxc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.mips64.expsym
diff -u src/lib/libm/m.mips64.expsym:1.3 src/lib/libm/m.mips64.expsym:1.4
--- src/lib/libm/m.mips64.expsym:1.3 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.mips64.expsym Thu Nov 21 18:16:15 2024
@@ -27,8 +27,6 @@ __kernel_cosl
__kernel_sinl
__kernel_tanl
__mulxc3
-_fini
-_init
fabsl
fma
fmaf
Index: src/lib/libm/m.mipshf.expsym
diff -u src/lib/libm/m.mipshf.expsym:1.3 src/lib/libm/m.mipshf.expsym:1.4
--- src/lib/libm/m.mipshf.expsym:1.3 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.mipshf.expsym Thu Nov 21 18:16:15 2024
@@ -1,8 +1,6 @@
__divxc3
__fe_dfl_env
__mulxc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.powerpc64.expsym
diff -u src/lib/libm/m.powerpc64.expsym:1.3 src/lib/libm/m.powerpc64.expsym:1.4
--- src/lib/libm/m.powerpc64.expsym:1.3 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.powerpc64.expsym Thu Nov 21 18:16:15 2024
@@ -5,8 +5,6 @@
__divtc3
__fe_dfl_env
__multc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.sh3.expsym
diff -u src/lib/libm/m.sh3.expsym:1.3 src/lib/libm/m.sh3.expsym:1.4
--- src/lib/libm/m.sh3.expsym:1.3 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.sh3.expsym Thu Nov 21 18:16:15 2024
@@ -4,8 +4,6 @@ ___dtors
___dtors_end
__divxc3
__mulxc3
-_fini
-_init
fma
fmaf
fmal
Index: src/lib/libm/m.vax.expsym
diff -u src/lib/libm/m.vax.expsym:1.7 src/lib/libm/m.vax.expsym:1.8
--- src/lib/libm/m.vax.expsym:1.7 Sun Jun 9 14:10:05 2024
+++ src/lib/libm/m.vax.expsym Thu Nov 21 18:16:15 2024
@@ -4,8 +4,6 @@ __libm_cdabs_r6
__log__L
__mulxc3
_cabs
-_fini
-_init
_pow
_powf
d_cbrt
Index: src/share/mk/bsd.lib.mk
diff -u src/share/mk/bsd.lib.mk:1.411 src/share/mk/bsd.lib.mk:1.412
--- src/share/mk/bsd.lib.mk:1.411 Sat Nov 2 14:24:59 2024
+++ src/share/mk/bsd.lib.mk Thu Nov 21 18:16:15 2024
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.lib.mk,v 1.411 2024/11/02 14:24:59 christos Exp $
+# $NetBSD: bsd.lib.mk,v 1.412 2024/11/21 18:16:15 riastradh Exp $
# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
.include <bsd.init.mk>
@@ -688,6 +688,39 @@ LIB_EXPSYM?= ${LIB}.${LIBC_MACHINE_CPU:U
LIB_EXPSYM?= ${LIB}.expsym
.endif
+# If we don't have a version map enumerating the exact symbols
+# exported, skip various machine-dependent crud that the linker
+# automatically exports (even though it appears to be unnecessary, as
+# demonstrated by libraries with version scripts which don't export
+# these symbols).
+#
+# This list has been gathered empirically -- I'm not sure it's written
+# down anywhere and I'm not sure there's any way to ask the linker to
+# simply not export the symbols.
+.if !empty(VERSION_MAP)
+_EXPSYM_PIPE_GREP= # empty
+.else
+_EXPSYM_PIPE_GREP= | grep -Fvx ${_EXPSYM_IGNORE:@_s_@-e ${_s_:Q}@}
+_EXPSYM_IGNORE+= _end
+_EXPSYM_IGNORE+= _fini
+_EXPSYM_IGNORE+= _init
+_EXPSYM_IGNORE.aarch64+= __bss_end__
+_EXPSYM_IGNORE.aarch64+= __bss_start__
+_EXPSYM_IGNORE.aarch64+= __end__
+_EXPSYM_IGNORE.aarch64+= _bss_end__
+_EXPSYM_IGNORE.hppa+= _GLOBAL_OFFSET_TABLE_
+_EXPSYM_IGNORE.powerpc64+= ._fini
+_EXPSYM_IGNORE.powerpc64+= ._init
+_EXPSYM_IGNORE.sh3+= ___ctors
+_EXPSYM_IGNORE.sh3+= ___ctors_end
+_EXPSYM_IGNORE.sh3+= ___dtors
+_EXPSYM_IGNORE.sh3+= ___dtors_end
+_EXPSYM_IGNORE+= ${_EXPSYM_IGNORE.${MACHINE_ARCH}}
+. if ${MACHINE_ARCH} != ${MACHINE_CPU}
+_EXPSYM_IGNORE+= ${_EXPSYM_IGNORE.${MACHINE_CPU}}
+. endif
+.endif
+
.if !empty(LIB_EXPSYM) && ${MKPIC} != "no"
realall: ${_LIB.so.full}.diffsym
${_LIB.so.full}.diffsym: ${LIB_EXPSYM} ${_LIB.so.full}.actsym
@@ -705,7 +738,7 @@ ${_LIB.so.full}.actsym: ${_LIB.so.full}
${_MKTARGET_CREATE}
${NM} --dynamic --extern-only --defined-only --with-symbol-versions \
${.ALLSRC} \
- | cut -d' ' -f3 | LANG=C sort -u >${.TARGET}.tmp
+ | cut -d' ' -f3 ${_EXPSYM_PIPE_GREP} | LC_ALL=C sort -u >${.TARGET}.tmp
${MV} ${.TARGET}.tmp ${.TARGET}
CLEANFILES+= ${_LIB.so.full}.actsym
CLEANFILES+= ${_LIB.so.full}.actsym.tmp