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

Reply via email to