linux-stable-rt/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
kconfig
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
.gitignore
Kbuild.include
Lindent
Makefile
Makefile.build
Makefile.clean
Makefile.fwinst
Makefile.headersinst
Makefile.host
Makefile.lib
Makefile.modinst
Makefile.modpost
bin2c.c
bin_size
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
checkversion.pl
cleanfile
cleanpatch
config
conmakehash.c
decodecode
diffconfig
export_report.pl
extract-ikconfig
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_initramfs_list.sh bzip2/lzma: don't leave empty files around on failure 2009-02-19 13:39:21 -08:00
headerdep.pl
headers.sh
headers_check.pl
headers_install.pl
ihex2fw.c
kallsyms.c kallsyms, tracing: output more proper symbol name 2009-03-14 09:55:04 +01:00
kernel-doc
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
mkmakefile
mksysmap
mkuboot.sh
mkversion
namespace.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
recordmcount.pl
setlocalversion
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