linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [patch 15/17] scripts/gdb: fix debugging modules compiled with hot/cold partitioning
@ 2019-11-06  5:17 akpm
  0 siblings, 0 replies; only message in thread
From: akpm @ 2019-11-06  5:17 UTC (permalink / raw)
  To: akpm, gor, heiko.carstens, iii, jan.kiszka, kbingham, linux-mm,
	mm-commits, torvalds

From: Ilya Leoshkevich <iii@linux.ibm.com>
Subject: 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>
---

 scripts/gdb/linux/symbols.py |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/scripts/gdb/linux/symbols.py~scripts-gdb-fix-debugging-modules-compiled-with-hot-cold-partitioning
+++ a/scripts/gdb/linux/symbols.py
@@ -99,7 +99,8 @@ lx-symbols command."""
             attrs[n]['name'].string(): attrs[n]['address']
             for n in range(int(sect_attrs['nsections']))}
         args = []
-        for section_name in [".data", ".data..read_mostly", ".rodata", ".bss"]:
+        for section_name in [".data", ".data..read_mostly", ".rodata", ".bss",
+                             ".text", ".text.hot", ".text.unlikely"]:
             address = section_name_to_address.get(section_name)
             if address:
                 args.append(" -s {name} {addr}".format(
_


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-11-06  5:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-06  5:17 [patch 15/17] scripts/gdb: fix debugging modules compiled with hot/cold partitioning akpm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).