public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] gdb: care for dynamic objfiles in build_id_bfd_get ()
@ 2023-01-18 11:35 Jan Vrany
0 siblings, 0 replies; only message in thread
From: Jan Vrany @ 2023-01-18 11:35 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=722e0dd9e4f03d66666c5b62e162da31cafe6d9f
commit 722e0dd9e4f03d66666c5b62e162da31cafe6d9f
Author: Jan Vrany <jan.vrany@labware.com>
Date: Wed Jan 18 11:34:37 2023 +0000
gdb: care for dynamic objfiles in build_id_bfd_get ()
Accessing gdb.Objfile.build_id caused GDB to crash when objfile is
dynamic, that is created by JIT reader API.
The issue was NULL-pointer dereferencing in build_id_bfd_get () because
dynamic objfiles have no underlaying BFD structure. This commit fixes
the problem by a NULL-check in build_id_bfd_get ().
Diff:
---
gdb/build-id.c | 6 ++++++
gdb/testsuite/gdb.base/jit-reader.exp | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/gdb/build-id.c b/gdb/build-id.c
index c82f96402c8..801eb004ad7 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
@@ -32,6 +32,12 @@
const struct bfd_build_id *
build_id_bfd_get (bfd *abfd)
{
+ /* Dynamic objfiles such as ones created by JIT reader API
+ have no underlaying bfd structure (that is, objfile->obfd
+ is NULL). */
+ if (abfd == nullptr)
+ return nullptr;
+
if (!bfd_check_format (abfd, bfd_object)
&& !bfd_check_format (abfd, bfd_core))
return NULL;
diff --git a/gdb/testsuite/gdb.base/jit-reader.exp b/gdb/testsuite/gdb.base/jit-reader.exp
index fd0c5f56d6e..399cb67dcce 100644
--- a/gdb/testsuite/gdb.base/jit-reader.exp
+++ b/gdb/testsuite/gdb.base/jit-reader.exp
@@ -227,6 +227,10 @@ proc jit_reader_test {} {
gdb_test "python print(list(map(lambda objf : objf.filename, gdb.objfiles())))" \
"$any'<< JIT compiled code at $hex >>'$any" \
"python gdb.Objfile.filename"
+
+ gdb_test "python print( \[o for o in gdb.objfiles() if o.filename.startswith('<< JIT compiled code')\]\[0\].build_id )" \
+ "None" \
+ "python gdb.Objfile.build_id"
}
}
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-01-18 11:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-18 11:35 [binutils-gdb] gdb: care for dynamic objfiles in build_id_bfd_get () Jan Vrany
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 read-only IMAP folder(s) and NNTP newsgroup(s).