* buildsym.c (scan_file_globals): Beware the null file.
Fix from Jim Williams. * stack.c (return_command): Evaluate expression *before* popping off the stack frames! Fix inspired by Jim Williams. (up_silently_command, down_silently_command): No sel frame is error. * defs.h (memcpy, memset): Conditionalize decls on #ifndef MEM_FNS_DECLARED, since DECstation differs. (alloca): Break out the STDC and non-STDC alloca cases, to make it work on old preprocessors as well as "picky ANSI" ones. * xm-mips.h (memcpy, memset): Declare, and set MEM_FNS_DECLARED. * mips-tdep.c (heuristic_proc_start): Zero arg produces zero. * utils.c (fputs_demangled): Rename SLOP since DECstation system header files define it!
This commit is contained in:
parent
c47793da96
commit
0f552c5fc6
7 changed files with 102 additions and 65 deletions
17
gdb/stack.c
17
gdb/stack.c
|
@ -1066,7 +1066,7 @@ up_silently_command (count_exp, from_tty)
|
|||
count = parse_and_eval_address (count_exp);
|
||||
count1 = count;
|
||||
|
||||
if (!target_has_stack)
|
||||
if (target_has_stack == 0 || selected_frame == 0)
|
||||
error ("No stack.");
|
||||
|
||||
frame = find_relative_frame (selected_frame, &count1);
|
||||
|
@ -1099,7 +1099,7 @@ down_silently_command (count_exp, from_tty)
|
|||
count = - parse_and_eval_address (count_exp);
|
||||
count1 = count;
|
||||
|
||||
if (!target_has_stack)
|
||||
if (target_has_stack == 0 || selected_frame == 0)
|
||||
error ("No stack.");
|
||||
|
||||
frame = find_relative_frame (selected_frame, &count1);
|
||||
|
@ -1129,6 +1129,7 @@ return_command (retval_exp, from_tty)
|
|||
FRAME frame;
|
||||
char *funcname;
|
||||
struct cleanup *back_to;
|
||||
value return_value;
|
||||
|
||||
if (selected_frame == NULL)
|
||||
error ("No selected frame.");
|
||||
|
@ -1136,6 +1137,16 @@ return_command (retval_exp, from_tty)
|
|||
selected_frame_addr = FRAME_FP (selected_frame);
|
||||
selected_frame_pc = (get_frame_info (selected_frame))->pc;
|
||||
|
||||
/* Compute the return value (if any -- possibly getting errors here).
|
||||
Call VALUE_CONTENTS to make sure we have fully evaluated it, since
|
||||
it might live in the stack frame we're about to pop. */
|
||||
|
||||
if (retval_exp)
|
||||
{
|
||||
return_value = parse_and_eval (retval_exp);
|
||||
(void) (VALUE_CONTENTS (return_value));
|
||||
}
|
||||
|
||||
/* If interactive, require confirmation. */
|
||||
|
||||
if (from_tty)
|
||||
|
@ -1173,7 +1184,7 @@ return_command (retval_exp, from_tty)
|
|||
for return values. */
|
||||
|
||||
if (retval_exp)
|
||||
set_return_value (parse_and_eval (retval_exp));
|
||||
set_return_value (return_value);
|
||||
|
||||
/* If interactive, print the frame that is now current. */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue