Steven Rostedt
b43f70933e
ftrace: test for running of recordmcount.pl twice on an object
...
Impact: fix failure of dynamic function tracer selftest
In a course of development, a developer does several makes on their
kernel. Sometimes, the make might do something abnormal. In the
case of running the recordmcount.pl script on an object twice,
the script will duplicate all the calls to mcount in the __mcount_loc
section.
On boot up, the dynamic function tracer is careful when it modifies
code, and performs several consistency checks. One is to not modify
the call site if it is not what it expects it to be. If a function
call site is listed twice, the first entry will convert the site
to a nop, and the second will fail because it expected to see a
call to mcount, but instead it sees a nop. Thus, the function tracer
is disabled.
Eric Sesterhenn reported seeing:
[ 1.055440] ftrace: converting mcount calls to 0f 1f 44 00 00
[ 1.055568] ftrace: allocating 29418 entries in 116 pages
[ 1.061000] ------------[ cut here ]------------
[ 1.061000] WARNING: at kernel/trace/ftrace.c:441
[...]
[ 1.060000] ---[ end trace 4eaa2a86a8e2da23 ]---
[ 1.060000] ftrace failed to modify [<c0118072>] check_corruption+0x3/0x2d
[ 1.060000] actual: 0f:1f:44:00:00
This warning shows that check_corruption+0x3 already had a nop in
its place (0x0f1f440000). After compiling another kernel the problem
went away.
Later Eric Paris notice the same type of issue. Luckily, he saved
the vmlinux file that caused it. In the file we found a bunch of
duplicate mcount call site records, which lead us to the script.
Perhaps this problem only happens to people named Eric.
This patch changes the script to test if the __mcount_loc already
exists in the object file, and if it does, it will print out
an error message and kill the compile.
Reported-by: Eric Sesterhenn <snakebyte@gmx.de>
Reported-by: Eric Paris <eparis@redhat.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-18 20:15:26 +01:00
..
basic
Update .gitignore files for generated targets
2008-10-20 11:24:31 -07:00
genksyms
allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
2008-12-19 22:47:10 +01:00
kconfig
kconfig: improve error messages for bad source statements
2009-01-02 20:43:22 +01:00
ksymoops
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mod
kbuild: prevent modpost from looking for a .cmd file for a static library linked into a module
2008-10-29 22:02:10 +01:00
package
kbuild: remove TAR_IGNORE
2008-12-05 19:50:36 +01:00
rt-tester
[PATCH] rtmutex: Modify rtmutex-tester to test the setscheduler propagation
2006-06-27 17:32:47 -07:00
selinux
SELinux: add gitignore file for mdp script
2008-09-05 21:43:38 +10:00
trace
tracing: add "power-tracer": C/P state tracer to help power optimization
2008-11-26 08:29:32 +01:00
tracing
ftrace: add a script to produce a hierarchical view of a function trace
2008-10-27 11:00:07 +01:00
.gitignore
fix modules_install via NFS
2009-01-07 21:44:20 +01:00
bin2c.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
binoffset.c
update the email address of Randy Dunlap
2006-01-03 13:37:51 +01:00
bloat-o-meter
fix bloat-o-meter for ppc64
2007-12-17 19:28:17 -08:00
bootgraph.pl
bootgraph: make the bootgraph script show async waiting time
2009-01-10 15:06:52 -08:00
checkincludes.pl
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
checkkconfigsymbols.sh
kbuild: script to check for undefined Kconfig symbols
2007-10-12 21:13:50 +02:00
checkpatch.pl
checkpatch: version: 0.27
2009-01-15 16:39:39 -08:00
checkstack.pl
sparc: Add checkstack support
2008-10-22 21:53:49 -07:00
checksyscalls.sh
scripts/checksyscalls.sh: fix for non-gnu sed
2008-10-29 22:02:08 +01:00
checkversion.pl
kbuild: introduce utsrelease.h
2006-07-03 23:30:54 +02:00
cleanfile
scripts: Make cleanfile/cleanpatch warn about long lines
2007-07-16 21:15:50 +02:00
cleanpatch
scripts: Make cleanfile/cleanpatch warn about long lines
2007-07-16 21:15:50 +02:00
config
kconfig: add script to manipulate .config files on the command line
2009-01-07 21:44:22 +01:00
conmakehash.c
[PATCH] kbuild: signed char fixes for scripts
2005-07-27 22:27:08 +02:00
decodecode
scripts: improve the decodecode script
2008-12-03 22:36:39 +01:00
diffconfig
kconfig: add diffconfig utility
2008-07-25 22:12:41 +02:00
export_report.pl
kbuild: fix perl usage in export_report.pl
2007-10-12 21:13:50 +02:00
extract-ikconfig
remove bashisms from scripts/extract-ikconfig
2008-12-03 21:32:02 +01:00
gcc-version.sh
kbuild: fix buglet in gcc-version.sh
2008-01-28 23:14:36 +01:00
gcc-x86_64-has-stack-protector.sh
[PATCH] Add the -fstack-protector option to the CFLAGS
2006-09-26 10:52:39 +02:00
gen_initramfs_list.sh
kbuild: fix unportability in gen_initramfs_list.sh
2008-04-28 22:50:51 +02:00
headerdep.pl
kbuild: add headerdep used to detect inclusion cycles in header files
2008-12-18 20:18:04 +01:00
headers.sh
kbuild: prepare headers_* for arch/$ARCH/include
2008-07-25 22:12:33 +02:00
headers_check.pl
kbuild: ignore a few files in headers_check
2009-01-02 20:43:27 +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
allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
2008-12-19 22:47:10 +01:00
Kbuild.include
kbuild: use KECHO convenience echo
2008-12-03 21:32:01 +01:00
kernel-doc
kernel-doc: check for extra kernel-doc notations
2008-12-19 18:27:19 +01:00
Lindent
scripts/Lindent: support gnu indent v2.2.10
2008-04-29 08:06:04 -07:00
Makefile
fix modules_install via NFS
2009-01-07 21:44:20 +01:00
Makefile.build
ftrace, ia64: make recordmcount distinct module compile
2009-01-14 12:11:08 +01:00
Makefile.clean
kbuild: fix some minor typoes
2008-04-25 20:18:48 +02:00
Makefile.fwinst
firmware: silence __fw_modbuild and __fw_modinst 'Nothing to be done' messages
2008-08-02 07:52:29 +01:00
Makefile.headersinst
kbuild: install all headers when arch is changed
2008-07-25 22:12:18 +02:00
Makefile.host
kbuild: fix some minor typoes
2008-04-25 20:18:48 +02:00
Makefile.lib
kbuild: expand -I in KBUILD_CPPFLAGS
2008-12-03 21:31:59 +01:00
Makefile.modinst
kbuild: strip generated symbols from *.ko
2008-12-19 22:41:15 +01:00
Makefile.modpost
kbuild: fix KBUILD_EXTRA_SYMBOLS
2008-10-29 22:02:09 +01:00
makelst
kbuild: introduce ccflags-y, asflags-y and ldflags-y
2007-10-15 22:25:06 +02:00
markup_oops.pl
script: improve markup_oops.pl to also decode oopses in modules
2009-01-12 16:39:58 -08: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
kbuild: strip generated symbols from *.ko
2008-12-19 22:41:15 +01:00
mkuboot.sh
kbuild/mkuboot.sh: allow spaces in CROSS_COMPILE
2007-05-02 20:58:10 +02:00
mkversion
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
namespace.pl
x86: fixup the x86 namespace change in scripts/namespace.pl
2007-10-11 17:56:02 +02:00
patch-kernel
bugfix for scripts/patch-kernel in 2.6 sublevel stepping
2008-08-06 22:11:33 +02:00
pnmtologo.c
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
profile2linkerlist.pl
[PATCH] x86_64: Basic reorder infrastructure
2006-03-25 09:10:56 -08:00
recordmcount.pl
ftrace: test for running of recordmcount.pl twice on an object
2009-01-18 20:15:26 +01:00
setlocalversion
setlocalversion: add git-svn support
2008-12-03 22:58:30 +01:00
show_delta
kbuild: fix mode of checkstack.pl and other files.
2006-04-11 13:37:07 +02:00
strip-symbols
kbuild: strip generated symbols from *.ko
2008-12-19 22:41:15 +01:00
tags.sh
kbuild: reintroduce ALLSOURCE_ARCHS support for tags/cscope
2009-01-07 21:44:21 +01:00
unifdef.c
kbuild: replace use of strlcpy with a dedicated implmentation in unifdef
2006-09-25 09:00:00 +02:00
ver_linux
kbuild: scripts/ver_linux: don't set PATH
2008-07-31 23:36:54 +02:00