diff options
author | Tom Tromey <tromey@adacore.com> | 2019-04-16 12:12:09 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2019-04-17 06:55:05 -0600 |
commit | a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92 (patch) | |
tree | 9f2cfe0d210dfcafd777128ba950e1a2f5eea25b /gdb | |
parent | a7e559cc087b10b9ea337b58e52cc13964aae3fb (diff) | |
download | gdb-a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92.zip gdb-a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92.tar.gz gdb-a12e57448ecf2644e3ddc98bbd4bbb914a5f8c92.tar.bz2 |
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 <tromey@adacore.com>
* dwarf2read.c (dwarf2_init_complex_target_type): Check "tt"
against nullptr before use.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2fb4b87..ef77fdb 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-04-17 Tom Tromey <tromey@adacore.com> + + * dwarf2read.c (dwarf2_init_complex_target_type): Check "tt" + against nullptr before use. + 2019-04-17 Alan Hayward <alan.hayward@arm.com> * nat/linux-waitpid.c (linux_debug): Call debug_vprintf. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 0873028..16bf240 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); |