linux/scripts
Lai Jiangshan b478b782e1 kallsyms, tracing: output more proper symbol name
Impact: bugfix, output more reliable symbol lookup result

Debug tools(dump_stack(), ftrace...) are like to print out symbols.
But it is always print out the first aliased symbol.(Aliased symbols
are symbols with the same address), and the first aliased symbol is
sometime not proper.

 # echo function_graph > current_tracer
 # cat trace
......
 1)   1.923 us    |    select_nohz_load_balancer();
 1) + 76.692 us   |  }
 1)               |  default_idle() {
 1)   ==========> |    __irqentry_text_start() {
 1)   0.000 us    |      native_apic_mem_write();
 1)               |      irq_enter() {
 1)   0.000 us    |        idle_cpu();
 1)               |        tick_check_idle() {
 1)   0.000 us    |          tick_check_oneshot_broadcast();
 1)               |          tick_nohz_stop_idle() {
......

It's very embarrassing, it ouputs "__irqentry_text_start()",
actually, it should output "smp_apic_timer_interrupt()".
(these two symbol are the same address, but "__irqentry_text_start"
is deemed to the first aliased symbol by scripts/kallsyms)

This patch puts symbols like "__irqentry_text_start" to the second
aliased symbols. And a more proper symbol name becomes the first.

Aliased symbols mostly come from linker script. The solution is
guessing "is this symbol defined in linker script", the symbols
defined in linker script will not become the first aliased symbol.

And if symbols are found to be equal in this "linker script provided"
criteria, symbols are sorted by the number of prefix underscores.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Paulo Marques <pmarques@grupopie.com>
LKML-Reference: <49BA06E2.7080807@cn.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-03-14 09:55:04 +01:00
..
basic
genksyms Revert "kbuild: strip generated symbols from *.ko" 2009-01-14 21:38:20 +01:00
kconfig kconfig: improve error messages for bad source statements 2009-01-02 20:43:22 +01:00
ksymoops
mod Merge branch 'linus' into x86/apic 2009-02-22 20:05:19 +01:00
package kbuild: fix 'make rpm' when CONFIG_LOCALVERSION_AUTO=y and using SCM tree 2009-03-07 13:55:38 +01:00
rt-tester
selinux
trace tracing: add "power-tracer": C/P state tracer to help power optimization 2008-11-26 08:29:32 +01:00
tracing
.gitignore fix modules_install via NFS 2009-01-07 21:44:20 +01:00
Kbuild.include kbuild: use KECHO convenience echo 2008-12-03 21:32:01 +01:00
Lindent
Makefile fix modules_install via NFS 2009-01-07 21:44:20 +01:00
Makefile.build Merge branches 'tracing/ftrace', 'tracing/kmemtrace' and 'linus' into tracing/core 2009-02-03 06:25:38 +01:00
Makefile.clean
Makefile.fwinst
Makefile.headersinst
Makefile.host
Makefile.lib bzip2/lzma: handle failures from bzip2 and lzma correctly 2009-01-04 15:53:35 -08:00
Makefile.modinst Revert "kbuild: strip generated symbols from *.ko" 2009-01-14 21:38:20 +01:00
Makefile.modpost kbuild: fix KBUILD_EXTRA_SYMBOLS 2008-10-29 22:02:09 +01:00
bin2c.c
bin_size bzip2/lzma: library support for gzip, bzip2 and lzma decompression 2009-01-04 15:53:34 -08:00
binoffset.c
bloat-o-meter
bootgraph.pl bootgraph: fix for use with dot symbols 2009-02-15 12:50:08 +01:00
checkincludes.pl
checkkconfigsymbols.sh
checkpatch.pl checkpatch: version 0.28 2009-02-27 16:26:22 -08:00
checkstack.pl
checksyscalls.sh scripts/checksyscalls.sh: fix for non-gnu sed 2008-10-29 22:02:08 +01:00
checkversion.pl
cleanfile
cleanpatch
config kbuild: print usage with no arguments in scripts/config 2009-01-14 21:40:49 +01:00
conmakehash.c
decodecode scripts: improve the decodecode script 2008-12-03 22:36:39 +01:00
diffconfig
export_report.pl
extract-ikconfig remove bashisms from scripts/extract-ikconfig 2008-12-03 21:32:02 +01:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh stackprotector: fix multi-word cross-builds 2009-02-11 12:17:29 +01:00
gcc-x86_64-has-stack-protector.sh stackprotector: fix multi-word cross-builds 2009-02-11 12:17:29 +01:00
gen_initramfs_list.sh bzip2/lzma: don't leave empty files around on failure 2009-02-19 13:39:21 -08:00
headerdep.pl kbuild: add headerdep used to detect inclusion cycles in header files 2008-12-18 20:18:04 +01:00
headers.sh
headers_check.pl kbuild: drop check for CONFIG_ in headers_check 2009-01-31 00:36:15 +01:00
headers_install.pl kbuild: in headers_install autoconvert asm/inline/volatile to __xxx__ 2009-01-02 20:43:24 +01:00
ihex2fw.c fix modules_install via NFS 2009-01-07 21:44:20 +01:00
kallsyms.c kallsyms, tracing: output more proper symbol name 2009-03-14 09:55:04 +01:00
kernel-doc kernel-doc: fix syscall wrapper processing 2009-02-11 14:25:36 -08:00
makelst
markup_oops.pl scripts: add x86 64 bit support to the markup_oops.pl script 2009-02-15 12:50:10 +01:00
mkcompile_h kbuild: kill output in silent mode of mkcompile_h 2008-12-03 21:32:00 +01:00
mkmakefile kbuild: teach mkmakfile to be silent 2008-12-03 21:32:02 +01:00
mksysmap Revert "kbuild: strip generated symbols from *.ko" 2009-01-14 21:38:20 +01:00
mkuboot.sh
mkversion
namespace.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
recordmcount.pl ftrace: test for running of recordmcount.pl twice on an object 2009-01-18 20:15:26 +01:00
setlocalversion kbuild,setlocalversion: shorten the make time when using svn 2009-02-15 12:50:07 +01:00
show_delta
tags.sh kbuild: add sys_* entries for syscalls in tags 2009-02-15 12:50:09 +01:00
unifdef.c kbuild: fix C libary confusion in unifdef.c due to getline() 2009-03-07 13:31:29 +01:00
ver_linux