kernel_optimize_test/scripts/gdb/linux
Douglas Anderson da036ae147 scripts/gdb: handle split debug
Some systems (like Chrome OS) may use "split debug" for kernel modules.
That means that the debug symbols are in a different file than the main
elf file.  Let's handle that by also searching for debug symbols that end
in ".ko.debug".

This is a packaging topic.  You can take a normal elf file and split the
debug out of it using objcopy.  Try "man objcopy" and then take a look at
the "--only-keep-debug" option.  It'll give you a whole recipe for doing
splitdebug.  The suffix used for the debug symbols is arbitrary.  If
people have other another suffix besides ".ko.debug" then we could
presumably support that too...

For portage (which is the packaging system used by Chrome OS) split debug
is supported by default (and the suffix is .ko.debug).  ...and so in
Chrome OS we always get the installed elf files stripped and then the
symbols stashed away.

At the moment we don't actually use the normal portage magic to do this
for the kernel though since it affects our ability to get good stack dumps
in the kernel.  We instead pass a script as "strip" [1].

[1] https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/refs/heads/master/eclass/cros-kernel/strip_splitdebug

Link: http://lkml.kernel.org/r/20190730234052.148744-1-dianders@chromium.org
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Kieran Bingham <kbingham@kernel.org>
Cc: Jason Wessel <jason.wessel@windriver.com>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-09-25 17:51:40 -07:00
..
__init__.py scripts/gdb: add empty package initialization script 2015-02-28 09:57:51 -08:00
.gitignore scripts/gdb: add constants.py to .gitignore 2016-07-15 14:54:27 +09:00
clk.py scripts/gdb: print cached rate in lx-clk-summary 2019-05-14 19:52:52 -07:00
config.py scripts/gdb: add kernel config dumping command 2019-05-14 19:52:51 -07:00
constants.py.in scripts/gdb: fix invocation when CONFIG_COMMON_CLK is not set 2019-06-01 15:51:31 -07:00
cpus.py scripts/gdb: silence pep8 checks 2019-05-14 19:52:52 -07:00
device.py scripts/gdb: add helpers to find and list devices 2019-07-16 19:23:24 -07:00
dmesg.py scripts/gdb: lx-dmesg: use explicit encoding=utf8 errors=replace 2017-07-12 16:26:01 -07:00
genpd.py scripts/gdb: add lx-genpd-summary command 2019-07-16 19:23:24 -07:00
lists.py scripts/gdb: clean up error handling in list helpers 2019-05-14 19:52:52 -07:00
Makefile kbuild: replace KBUILD_SRCTREE with boolean building_out_of_srctree 2019-07-11 00:05:09 +09:00
modules.py scripts/gdb: support !CONFIG_MODULES gracefully 2016-05-23 17:04:14 -07:00
proc.py scripts/gdb: silence pep8 checks 2019-05-14 19:52:52 -07:00
rbtree.py scripts/gdb: add rb tree iterating utilities 2019-05-14 19:52:51 -07:00
symbols.py scripts/gdb: handle split debug 2019-09-25 17:51:40 -07:00
tasks.py scripts/gdb: silence pep8 checks 2019-05-14 19:52:52 -07:00
timerlist.py scripts/gdb: add a timer list command 2019-05-14 19:52:52 -07:00
utils.py scripts/gdb: silence pep8 checks 2019-05-14 19:52:52 -07:00