Tue Apr 23 21:58:57 2024 UTC (16d)
`nm`: Generate a stable symbol table (Jan-Benedict Glaw)

Release artifacts may contain symbol lists. Binutils's `nm` sorts them by
symbol name, locale based. Inserting a plain `sort` (with `LC_ALL=C`) here
sorts them by address, and (with several symbols pointing to the same address)
sorting by name is also stable (think of embedded '_'.)


(christos)
diff -r1.46 -r1.47 src/distrib/common/Makefile.mdset

cvs diff -r1.46 -r1.47 src/distrib/common/Makefile.mdset (expand / switch to unified diff)

--- src/distrib/common/Makefile.mdset 2019/08/12 08:04:28 1.46
+++ src/distrib/common/Makefile.mdset 2024/04/23 21:58:57 1.47
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: Makefile.mdset,v 1.46 2019/08/12 08:04:28 martin Exp $ 1# $NetBSD: Makefile.mdset,v 1.47 2024/04/23 21:58:57 christos Exp $
2# 2#
3# Makefile snippet to ${TOOL_MDSETIMAGE} file system images into kernels 3# Makefile snippet to ${TOOL_MDSETIMAGE} file system images into kernels
4# 4#
5 5
6# 6#
7# Required variables: 7# Required variables:
8# NETBSDSRCDIR Top level of src tree (set by <bsd.own.mk>) 8# NETBSDSRCDIR Top level of src tree (set by <bsd.own.mk>)
9# MDSETTARGETS List of images to ${TOOL_MDSETIMAGE} into kernels, 9# MDSETTARGETS List of images to ${TOOL_MDSETIMAGE} into kernels,
10# containing one or more tuples of the form: 10# containing one or more tuples of the form:
11# KERNEL IMAGE FILENAME 11# KERNEL IMAGE FILENAME
12# 12#
13# The kernel is ${TOOL_MDSETIMAGE} with ${IMAGE}, 13# The kernel is ${TOOL_MDSETIMAGE} with ${IMAGE},
14# ${STRIP}ped (after the symbols are stored in 14# ${STRIP}ped (after the symbols are stored in
@@ -139,27 +139,27 @@ OPSYS!= uname -s @@ -139,27 +139,27 @@ OPSYS!= uname -s
139MDSETIMAGEFLAGS= 139MDSETIMAGEFLAGS=
140.else 140.else
141MDSETIMAGEFLAGS=-v 141MDSETIMAGEFLAGS=-v
142.endif 142.endif
143 143
144${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I} 144${_KERNEL.${_K}.${_F}}: .NOTMAIN ${_KERNNAME.${_K}.${_F}} ${_I}
145 ${_MKTARGET_CREATE} "(from: ${.ALLSRC})" 145 ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
146 @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz 146 @rm -f ${.TARGET} ${.TARGET}.tmp ${.TARGET}.symbols.gz
147 @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp 147 @cp ${_KERNNAME.${_K}.${_F}} ${.TARGET}.tmp
148.if !defined(MDSET_NOIMAGE.${_FILENAME}) 148.if !defined(MDSET_NOIMAGE.${_FILENAME})
149 ${TOOL_MDSETIMAGE} ${MDSETIMAGEFLAGS} ${.TARGET}.tmp ${_I} 149 ${TOOL_MDSETIMAGE} ${MDSETIMAGEFLAGS} ${.TARGET}.tmp ${_I}
150.endif 150.endif
151.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS) 151.if !defined(MDSET_NOSYMBOLS.${_FILENAME}) && !defined(MDSET_NOSYMBOLS)
152 ${NM} ${.TARGET}.tmp | ${TOOL_GZIP_N} -9 > ${.TARGET}.symbols.gz 152 ${NM} ${.TARGET}.tmp | LC_ALL=C sort | ${TOOL_GZIP_N} -9 > ${.TARGET}.symbols.gz
153.endif 153.endif
154.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP) 154.if !defined(MDSET_NOSTRIP.${_FILENAME}) && !defined(MDSET_NOSTRIP)
155 ${STRIP} -R .eh_frame -R .eh_frame_hdr -R .comment -R .ident ${MDSET_STRIPSECTIONS} ${.TARGET}.tmp 155 ${STRIP} -R .eh_frame -R .eh_frame_hdr -R .comment -R .ident ${MDSET_STRIPSECTIONS} ${.TARGET}.tmp
156.endif 156.endif
157 @mv ${.TARGET}.tmp ${.TARGET} 157 @mv ${.TARGET}.tmp ${.TARGET}
158.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST) 158.if defined(MDSET_POST.${_FILENAME}) || defined(MDSET_POST)
159 ${_POST.${.TARGET}} 159 ${_POST.${.TARGET}}
160.endif 160.endif
161 161
162.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP) 162.if defined(MDSET_NOGZIP.${_FILENAME}) || defined(MDSET_NOGZIP)
163KERNELS+= ${_KERNEL.${_K}.${_F}} 163KERNELS+= ${_KERNEL.${_K}.${_F}}
164.else # { 164.else # {
165KERNELS+= ${_KERNEL.${_K}.${_F}}.gz 165KERNELS+= ${_KERNEL.${_K}.${_F}}.gz