mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-03 13:23:00 +08:00
2003-10-31 Andrew Cagney <cagney@redhat.com>
* stack.c (return_command): Use get_frame_type, instead of CALL_DUMMY_HAS_COMPLETED. * inferior.h (CALL_DUMMY_HAS_COMPLETED): Delete definition. * config/pa/tm-hppa.h (CALL_DUMMY_HAS_COMPLETED): Delete macro.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2003-10-31 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* stack.c (return_command): Use get_frame_type, instead of
|
||||||
|
CALL_DUMMY_HAS_COMPLETED.
|
||||||
|
* inferior.h (CALL_DUMMY_HAS_COMPLETED): Delete definition.
|
||||||
|
* config/pa/tm-hppa.h (CALL_DUMMY_HAS_COMPLETED): Delete macro.
|
||||||
|
|
||||||
2003-10-31 Mark Kettenis <kettenis@gnu.org>
|
2003-10-31 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): Don't
|
* x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): Don't
|
||||||
|
@ -208,7 +208,7 @@ extern void hppa_frame_init_saved_regs (struct frame_info *);
|
|||||||
/* If we've reached a trap instruction within the call dummy, then
|
/* If we've reached a trap instruction within the call dummy, then
|
||||||
we'll consider that to mean that we've reached the call dummy's
|
we'll consider that to mean that we've reached the call dummy's
|
||||||
end after its successful completion. */
|
end after its successful completion. */
|
||||||
#define CALL_DUMMY_HAS_COMPLETED(pc, sp, frame_address) \
|
#define DEPRECATED_CALL_DUMMY_HAS_COMPLETED(pc, sp, frame_address) \
|
||||||
(DEPRECATED_PC_IN_CALL_DUMMY((pc), (sp), (frame_address)) && \
|
(DEPRECATED_PC_IN_CALL_DUMMY((pc), (sp), (frame_address)) && \
|
||||||
(read_memory_integer((pc), 4) == BREAKPOINT32))
|
(read_memory_integer((pc), 4) == BREAKPOINT32))
|
||||||
|
|
||||||
|
@ -472,29 +472,6 @@ extern int deprecated_pc_in_call_dummy_at_entry_point (CORE_ADDR pc,
|
|||||||
CORE_ADDR sp,
|
CORE_ADDR sp,
|
||||||
CORE_ADDR frame_address);
|
CORE_ADDR frame_address);
|
||||||
|
|
||||||
/* It's often not enough for our clients to know whether the PC is merely
|
|
||||||
somewhere within the call dummy. They may need to know whether the
|
|
||||||
call dummy has actually completed. (For example, wait_for_inferior
|
|
||||||
wants to know when it should truly stop because the call dummy has
|
|
||||||
completed. If we're single-stepping because of slow watchpoints,
|
|
||||||
then we may find ourselves stopped at the entry of the call dummy,
|
|
||||||
and want to continue stepping until we reach the end.)
|
|
||||||
|
|
||||||
Note that this macro is intended for targets (like HP-UX) which
|
|
||||||
require more than a single breakpoint in their call dummies, and
|
|
||||||
therefore cannot use the DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET
|
|
||||||
mechanism.
|
|
||||||
|
|
||||||
If a target does define DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET,
|
|
||||||
then this default implementation of CALL_DUMMY_HAS_COMPLETED is
|
|
||||||
sufficient. Else, a target may wish to supply an implementation
|
|
||||||
that works in the presense of multiple breakpoints in its call
|
|
||||||
dummy. */
|
|
||||||
#if !defined(CALL_DUMMY_HAS_COMPLETED)
|
|
||||||
#define CALL_DUMMY_HAS_COMPLETED(pc, sp, frame_address) \
|
|
||||||
DEPRECATED_PC_IN_CALL_DUMMY((pc), (sp), (frame_address))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If STARTUP_WITH_SHELL is set, GDB's "run"
|
/* If STARTUP_WITH_SHELL is set, GDB's "run"
|
||||||
will attempts to start up the debugee under a shell.
|
will attempts to start up the debugee under a shell.
|
||||||
This is in order for argument-expansion to occur. E.g.,
|
This is in order for argument-expansion to occur. E.g.,
|
||||||
|
12
gdb/stack.c
12
gdb/stack.c
@ -1945,9 +1945,17 @@ The location at which to store the function's return value is unknown.\n";
|
|||||||
/* NOTE: cagney/2003-01-18: Is this silly? Instead of popping all
|
/* NOTE: cagney/2003-01-18: Is this silly? Instead of popping all
|
||||||
the frames in sequence, should this code just pop the dummy frame
|
the frames in sequence, should this code just pop the dummy frame
|
||||||
directly? */
|
directly? */
|
||||||
if (CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
|
#ifdef DEPRECATED_CALL_DUMMY_HAS_COMPLETED
|
||||||
get_frame_base (get_current_frame ())))
|
/* Since all up-to-date architectures return direct to the dummy
|
||||||
|
breakpoint address, a dummy frame has, by definition, always
|
||||||
|
completed. Hence this method is no longer needed. */
|
||||||
|
if (DEPRECATED_CALL_DUMMY_HAS_COMPLETED (read_pc(), read_sp (),
|
||||||
|
get_frame_base (get_current_frame ())))
|
||||||
frame_pop (get_current_frame ());
|
frame_pop (get_current_frame ());
|
||||||
|
#else
|
||||||
|
if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
|
||||||
|
frame_pop (get_current_frame ());
|
||||||
|
#endif
|
||||||
|
|
||||||
/* If interactive, print the frame that is now current. */
|
/* If interactive, print the frame that is now current. */
|
||||||
if (from_tty)
|
if (from_tty)
|
||||||
|
Reference in New Issue
Block a user