[12/12] kbuild: __crc_* symbols in System.map

From: Sam Ravnborg
Date: Fri Aug 13 2004 - 15:04:45 EST


# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/08/13 20:14:30+02:00 sam@xxxxxxxxxxxxxxxxx
# kbuild: __crc_* symbols in System.map
#
# David S. Miller <davem@xxxxxxxxxx> wrote:
# Shouldn't we be grepping __crc_ symbols out of the System.map file?
#
# For one thing, these can confuse readprofile. It's algorithm is
# to start at _stext, then stop when it sees a line in the System.map
# which is not text (mode is one of 'T' 't' 'W' or 'w')
#
# It will exit early if there are some intermixed __crc_* things in
# there (since they are are mode 'A').
#
# For example, in my current sparc64 kernel I have this:
#
# 00000000004cef80 t do_split
# 00000000004cf2a0 t add_dirent_to_buf
# 00000000004cf5a7 A __crc_init_special_inode
# 00000000004cf640 t make_indexed_dir
# 00000000004cf900 t ext3_add_entry
#
# So no symbols after add_dirent_to_buf will be shown in the profiling
# output of readprofile.
#
# Implementation ported to mksysmap by Sam.
# Included two System.map related fixes:
# - Print "SYSMAP System.map" during build
# - Sort symbols in System.map
#
# Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx>
#
# scripts/mksysmap
# 2004/08/13 20:14:14+02:00 sam@xxxxxxxxxxxxxxxxx +8 -1
# Remove __crc_ symbols from System.map
# Now also sort the output; '-n' option to nm
#
# Makefile
# 2004/08/13 20:14:14+02:00 sam@xxxxxxxxxxxxxxxxx +6 -6
# Print out:
# SYSMAP System.map
# during build.
#
diff -Nru a/Makefile b/Makefile
--- a/Makefile 2004-08-13 21:07:25 +02:00
+++ b/Makefile 2004-08-13 21:07:25 +02:00
@@ -608,12 +608,12 @@

define rule_vmlinux
$(rule_vmlinux__);
- $(Q)$(if $($(quiet)cmd_sysmap), \
- echo ' $($(quiet)cmd_sysmap) $@' &&) \
- $(cmd_sysmap) $@ System.map; \
- if [ $$? -ne 0 ]; then \
- rm -f $@; \
- /bin/false; \
+ $(Q)$(if $($(quiet)cmd_sysmap), \
+ echo ' $($(quiet)cmd_sysmap) System.map' &&) \
+ $(cmd_sysmap) $@ System.map; \
+ if [ $$? -ne 0 ]; then \
+ rm -f $@; \
+ /bin/false; \
fi;
$(rule_verify_kallsyms)
endef
diff -Nru a/scripts/mksysmap b/scripts/mksysmap
--- a/scripts/mksysmap 2004-08-13 21:07:25 +02:00
+++ b/scripts/mksysmap 2004-08-13 21:07:25 +02:00
@@ -51,4 +51,11 @@
# U - undefined global symbols
# w - local weak symbols

-nm $1 | grep -v ' [aUw] ' > $2
+# readprofile starts reading symbols when _stext is found, and
+# continue until it finds a symbol which is not either of 'T', 't',
+# 'W' or 'w'. __crc_ are 'A' and placed in the middle
+# so we just ignore them to let readprofile continue to work.
+# (At least sparc64 has __crc_ in the middle).
+
+$NM -n $1 | grep -v '\( [aUw] \)\|\(__crc_\)' > $2
+
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/