summaryrefslogtreecommitdiff
path: root/gdb/tm-hppa.h
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1992-12-28 23:19:51 +0000
committerStu Grossman <grossman@cygnus>1992-12-28 23:19:51 +0000
commitb5c10493e9666be2c7413ffcf712160d35246966 (patch)
treeb2cba41a6e35b87294ec20c7c80baa525ddceb95 /gdb/tm-hppa.h
parentedff05870e92c6ff6ff111c2f4adb1b4184a04d6 (diff)
downloadbinutils-gdb-b5c10493e9666be2c7413ffcf712160d35246966.tar.gz
* hppah-tdep.c (frame_saved_pc): Use better test for outermost
frame. Use find_return_regnum to find the caller. * (find_unwind_entry): New routine to locate stack frame info associated with a procedure. This looks in the $UNWIND_START$ section in the SOM file. * (find_return_regnum): New routine. Uses find_unwind_entry() to figure out where the caller's return address is stored. * (find_proc_framesize): New routine. Uses find_unwind_entry() to figure out the frame size for a procedure. * (saved_pc_after_call): New routine, moved from tm-hppa.h. * (init_extra_frame_info): New routine. Corrects PC and FP for outermost frame if necessary. * (frame_chain): New routine, moved from tm-hppa.h. * (skip_trampoline_code): Handle computed function calls (ie: calls from $$dyncall). * (unwind_command): Temporary support function to allow user to control/observe aspects of the unwind (stack frame) info. * infcmd.c (read_pc): (Temporary), put a hack in to see if the PC was in a system call, if so, then read the PC from r31. * tm-hppah.h (SKIP_TRAMPOLINE_CODE, IN_SOLIB_TRAMPOLINE): Deal with extra arg for skip_trampoline_code(). * (INIT_EXTRA_FRAME_INFO): Define to point at subr (see above). * (FRAME_CHAIN, FRAME_CHAIN_VALID): Turn into real subroutines. * tm-hppa.h (SAVED_PC_AFTER_CALL): Turn into real subroutine.
Diffstat (limited to 'gdb/tm-hppa.h')
-rw-r--r--gdb/tm-hppa.h17
1 files changed, 6 insertions, 11 deletions
diff --git a/gdb/tm-hppa.h b/gdb/tm-hppa.h
index 285e93275a2..97cf7b43c67 100644
--- a/gdb/tm-hppa.h
+++ b/gdb/tm-hppa.h
@@ -75,11 +75,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* If PC is in some function-call trampoline code, return the PC
where the function itself actually starts. If not, return NULL. */
-#define SKIP_TRAMPOLINE_CODE(pc) skip_trampoline_code (pc)
+#define SKIP_TRAMPOLINE_CODE(pc) skip_trampoline_code (pc, NULL)
/* Return non-zero if we are in some sort of a trampoline. */
-#define IN_SOLIB_TRAMPOLINE(pc,name) skip_trampoline_code (pc)
+#define IN_SOLIB_TRAMPOLINE(pc, name) skip_trampoline_code (pc, name)
/* Immediately after a function call, return the saved pc.
Can't go through the frames for this because on some machines
@@ -290,11 +290,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
((regno) >= PCSQ_TAIL_REGNUM && (regno) < IPSW_REGNUM) || \
((regno) > IPSW_REGNUM && (regno) < FP4_REGNUM)
-/* This is a piece of magic that is given a register number REGNO
- and as BLOCKEND the address in the system of the end of the user structure
- and stores in ADDR the address in the kernel or core dump
- of that register. */
-
+#define INIT_EXTRA_FRAME_INFO(fromleaf, frame) init_extra_frame_info (fromleaf, frame)
/* Describe the pointer in each stack frame to the previous stack frame
(its caller). */
@@ -313,13 +309,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
is the address of a 4-byte word containing the calling frame's
address (previous FP). */
-#define FRAME_CHAIN(thisframe) \
- (!inside_entry_file ((thisframe)->pc) ? \
- read_memory_integer ((thisframe)->frame, 4) :\
- 0)
+#define FRAME_CHAIN(thisframe) frame_chain (thisframe)
+#if 0
#define FRAME_CHAIN_VALID(chain, thisframe) \
frame_chain_valid (chain, thisframe)
+#endif
#define FRAME_CHAIN_COMBINE(chain, thisframe) (chain)