diff options
author | Tom Tromey <tom@tromey.com> | 2018-12-29 10:46:07 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-01-06 09:31:51 -0700 |
commit | f097f5ad808bd535236a65077f40e9d082a4ec0b (patch) | |
tree | fa4dc08ce6be4fd7368b1af3538c0b038e8722f9 /gdb/python | |
parent | bb86dd08b25624206c3943b56b79784928e58464 (diff) | |
download | gdb-f097f5ad808bd535236a65077f40e9d082a4ec0b.zip gdb-f097f5ad808bd535236a65077f40e9d082a4ec0b.tar.gz gdb-f097f5ad808bd535236a65077f40e9d082a4ec0b.tar.bz2 |
Fix crash in "finish"
PR gdb/28155 notes a crash in "finish" that occurs with a particular
source file compiled by clang.
The bug is the typical gdb problem of a missing call to check_typedef.
clang emits a function whose return type is a typedef to void.
get_return_value asserts that the return type is not void, but the
callers were not using check_typedef first.
gdb/ChangeLog
2019-01-06 Tom Tromey <tom@tromey.com>
PR gdb/28155:
* python/py-finishbreakpoint.c (bpfinishpy_init): Use
check_typedef.
* infcmd.c (finish_command_fsm_should_stop): Use check_typedef.
(print_return_value): Likewise.
gdb/testsuite/ChangeLog
2019-01-06 Tom Tromey <tom@tromey.com>
PR gdb/28155:
* gdb.dwarf2/typedef-void-finish.exp: New file.
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-finishbreakpoint.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gdb/python/py-finishbreakpoint.c b/gdb/python/py-finishbreakpoint.c index bc22582..6ad79cd 100644 --- a/gdb/python/py-finishbreakpoint.c +++ b/gdb/python/py-finishbreakpoint.c @@ -253,7 +253,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs) if (function != NULL) { struct type *ret_type = - TYPE_TARGET_TYPE (SYMBOL_TYPE (function)); + check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (function))); /* Remember only non-void return types. */ if (TYPE_CODE (ret_type) != TYPE_CODE_VOID) |