]> git.baikalelectronics.ru Git - kernel.git/commit
scripts/gdb: fix debugging modules compiled with hot/cold partitioning
authorIlya Leoshkevich <iii@linux.ibm.com>
Wed, 6 Nov 2019 05:17:06 +0000 (21:17 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Nov 2019 16:47:50 +0000 (08:47 -0800)
commita16dad873dc4c98c5db20c3e3978c239d448b389
treef84ab4defea5db08e7be83997c81a38f44431743
parentce6e97f2ce18e93aee547209a6d49fc6cc2e1d6c
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>
scripts/gdb/linux/symbols.py