From a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 16 Apr 2019 12:12:09 -0600 Subject: [PATCH] Avoid crash in dwarf2_init_complex_target_type After commit 35add35 ("gdb: Fix failure in gdb.base/complex-parts.exp for x86-32"), dwarf2_init_complex_target_type can crash if "tt" is nullptr. This patch avoids the problem by checking for this case. No test case because I don't know a good way to write one; it was found by an internal AdaCore test case that apparently uses a 16 bit floating point type. gdb/ChangeLog: * dwarf2read.c (dwarf2_init_complex_target_type): Check "tt" against nullptr before use. gdb/ChangeLog 2019-04-17 Tom Tromey * dwarf2read.c (dwarf2_init_complex_target_type): Check "tt" against nullptr before use. --- gdb/ChangeLog | 5 +++++ gdb/dwarf2read.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2fb4b872448..ef77fdbb5ce 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-04-17 Tom Tromey + + * dwarf2read.c (dwarf2_init_complex_target_type): Check "tt" + against nullptr before use. + 2019-04-17 Alan Hayward * nat/linux-waitpid.c (linux_debug): Call debug_vprintf. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 0873028e438..16bf2404a21 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -17566,7 +17566,7 @@ dwarf2_init_complex_target_type (struct dwarf2_cu *cu, /* If the type we found doesn't match the size we were looking for, then pretend we didn't find a type at all, the complex target type we create will then be nameless. */ - if (TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits) + if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits) tt = nullptr; const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt); -- 2.30.2