Commit 29d28b2a authored by Sam Ravnborg's avatar Sam Ravnborg

kbuild: __crc_* symbols in System.map

David S. Miller <davem@redhat.com> 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: default avatarSam Ravnborg <sam@ravnborg.org>
parent e78d1655
......@@ -609,7 +609,7 @@ endif
define rule_vmlinux
$(rule_vmlinux__);
$(Q)$(if $($(quiet)cmd_sysmap), \
echo ' $($(quiet)cmd_sysmap) $@' &&) \
echo ' $($(quiet)cmd_sysmap) System.map' &&) \
$(cmd_sysmap) $@ System.map; \
if [ $$? -ne 0 ]; then \
rm -f $@; \
......
......@@ -51,4 +51,11 @@ fi
# 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment