kernel_optimize_test/scripts/gdb/linux
Ilya Leoshkevich 8731acc506 scripts/gdb: fix debugging modules compiled with hot/cold partitioning
gcc's -freorder-blocks-and-partition option makes it group frequently
and infrequently used code in .text.hot and .text.unlikely sections
respectively.  At least when building modules on s390, this option is
used by default.

gdb assumes that all code is located in .text section, and that .text
section is located at module load address.  With such modules this is no
longer the case: there is code in .text.hot and .text.unlikely, and
either of them might precede .text.

Fix by explicitly telling gdb the addresses of code sections.

It might be tempting to do this for all sections, not only the ones in
the white list.  Unfortunately, gdb appears to have an issue, when
telling it about e.g. loadable .note.gnu.build-id section causes it to
think that non-loadable .note.Linux section is loaded at address 0,
which in turn causes NULL pointers to be resolved to bogus symbols.  So
keep using the white list approach for the time being.

Link: http://lkml.kernel.org/r/20191028152734.13065-1-iii@linux.ibm.com
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Kieran Bingham <kbingham@kernel.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-11-06 08:47:50 -08: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: fix lx-dmesg when CONFIG_PRINTK_CALLER is set 2019-10-19 06:32:31 -04: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: fix debugging modules compiled with hot/cold partitioning 2019-11-06 08:47:50 -08: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: fix lx-dmesg when CONFIG_PRINTK_CALLER is set 2019-10-19 06:32:31 -04:00