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