From: Kevin Buettner Date: Wed, 30 Sep 2015 12:54:15 +0000 (-0700) Subject: infcmd.c: Don't attempt to record a NULL value after a finish command. X-Git-Tag: users/ARM/embedded-binutils-2_26-branch-2016q1~551 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aca20ec47359776488863193660cf9fd2fe3cfe7;p=external%2Fbinutils.git infcmd.c: Don't attempt to record a NULL value after a finish command. Architectures which use RETURN_VALUE_STRUCT_CONVENTION will have a NULL return value after executing a finish command. See get_return_value() in infcmd.c. This patch avoids an eventual SIGSEV (caused by attempting to derefrence a NULL pointer) by adding a suitable test to finish_command_fsm_should_stop(). I encountered this problem while testing msp430: (gdb) PASS: gdb.base/structs.exp: zed L for finish; return 1 structs-tc finish Run till exit from #0 fun1 () at /ironwood1/sourceware-git/msp430-elf/../binutils-gdb/gdb/testsuite/gdb.base/structs.c:125 ERROR: Process no longer exists gdb/ChangeLog: * infcmd.c (finish_command_fsm_should_stop): Don't attempt to record a NULL value. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 667bf27..b6355e7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2015-09-29 Kevin Buettner + * infcmd.c (finish_command_fsm_should_stop): Don't attempt to + record a NULL value. + +2015-09-29 Kevin Buettner + * msp430-tdep.c (msp430_push_dummy_call): Treat reference, struct, and union arguments the same as pointer arguments when determining size of argument. diff --git a/gdb/infcmd.c b/gdb/infcmd.c index c4d7d8b..54aa1ef 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1794,7 +1794,8 @@ finish_command_fsm_should_stop (struct thread_fsm *self) func = read_var_value (f->function, NULL, get_current_frame ()); rv->value = get_return_value (func, rv->type); - rv->value_history_index = record_latest_value (rv->value); + if (rv->value != NULL) + rv->value_history_index = record_latest_value (rv->value); } } else if (tp->control.stop_step)