mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
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<n> 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.
This commit is contained in:
parent
77ba2a6796
commit
aca20ec473
@ -1,3 +1,8 @@
|
||||
2015-09-29 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* infcmd.c (finish_command_fsm_should_stop): Don't attempt to
|
||||
record a NULL value.
|
||||
|
||||
2015-09-29 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* msp430-tdep.c (msp430_push_dummy_call): Treat reference, struct,
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user