aboutsummaryrefslogtreecommitdiff
path: root/gdb/config/vax
diff options
context:
space:
mode:
authorJason Thorpe <thorpej@netbsd.org>2002-04-22 20:38:41 +0000
committerJason Thorpe <thorpej@netbsd.org>2002-04-22 20:38:41 +0000
commit5516aa921e57f45c4d2bd559209c67f4b81d8368 (patch)
tree876aff53e9edbe7e851061cb54c59679e0976eac /gdb/config/vax
parent36af0b355e0cb0d2072d5361771adf6ab3289eb9 (diff)
downloadgdb-5516aa921e57f45c4d2bd559209c67f4b81d8368.zip
gdb-5516aa921e57f45c4d2bd559209c67f4b81d8368.tar.gz
gdb-5516aa921e57f45c4d2bd559209c67f4b81d8368.tar.bz2
* vax-tdep.c (vax_frame_saved_pc): New function.
(vax_frame_args_address_correct): Ditto. (vax_frame_args_address): Ditto. (vax_frame_locals_address): Ditto. (vax_frame_num_args): Move code to be in proximity to other frame-related functions. * config/vax/tm-vax.h (INNER_THAN): Use core_addr_lessthan. (FRAME_SAVED_PC): Use vax_frame_saved_pc. (FRAME_ARGS_ADDRESS_CORRECT): Use vax_frame_args_address_correct. (FRAME_ARGS_ADDRESS): Use vax_frame_args_address. (FRAME_LOCALS_ADDRESS): Use vax_frame_locals_address.
Diffstat (limited to 'gdb/config/vax')
-rw-r--r--gdb/config/vax/tm-vax.h44
1 files changed, 14 insertions, 30 deletions
diff --git a/gdb/config/vax/tm-vax.h b/gdb/config/vax/tm-vax.h
index 90819f4..e8bab7e 100644
--- a/gdb/config/vax/tm-vax.h
+++ b/gdb/config/vax/tm-vax.h
@@ -51,7 +51,7 @@ extern CORE_ADDR vax_skip_prologue (CORE_ADDR);
/* Stack grows downward. */
-#define INNER_THAN(lhs,rhs) ((lhs) < (rhs))
+#define INNER_THAN(lhs,rhs) core_addr_lessthan ((lhs), (rhs))
/* Sequence of bytes for breakpoint instruction. */
@@ -173,37 +173,21 @@ extern struct type *vax_register_virtual_type (int);
/* Saved Pc. Get it from sigcontext if within sigtramp. */
/* Offset to saved PC in sigcontext, from <sys/signal.h>. */
+/* XXXJRT should go away */
#define SIGCONTEXT_PC_OFFSET 12
-#define FRAME_SAVED_PC(FRAME) \
- (((FRAME)->signal_handler_caller \
- ? sigtramp_saved_pc (FRAME) \
- : read_memory_integer ((FRAME)->frame + 16, 4)) \
- )
-
-/* Cannot find the AP register value directly from the FP value. Must
- find it saved in the frame called by this one, or in the AP
- register for the innermost frame. However, there is no way to tell
- the difference between the innermost frame and a frame for which we
- just don't know the frame that it called (e.g. "info frame
- 0x7ffec789"). For the sake of argument suppose that the stack is
- somewhat trashed (which is one reason that "info frame" exists).
- So return 0 (indicating we don't know the address of
- the arglist) if we don't know what frame this frame calls. */
-#define FRAME_ARGS_ADDRESS_CORRECT(fi) \
- (((fi)->next \
- ? read_memory_integer ((fi)->next->frame + 8, 4) \
- : /* read_register (AP_REGNUM) */ 0))
-
-/* In most of GDB, getting the args address is too important to
- just say "I don't know". This is sometimes wrong for functions
- that aren't on top of the stack, but c'est la vie. */
-#define FRAME_ARGS_ADDRESS(fi) \
- (((fi)->next \
- ? read_memory_integer ((fi)->next->frame + 8, 4) \
- : read_register (AP_REGNUM) /* 0 */))
-
-#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
+#define FRAME_SAVED_PC(FRAME) vax_frame_saved_pc ((FRAME))
+extern CORE_ADDR vax_frame_saved_pc (struct frame_info *);
+
+/* XXXJRT not yet under gdbarch control */
+#define FRAME_ARGS_ADDRESS_CORRECT(fi) vax_frame_args_address ((fi))
+extern CORE_ADDR vax_frame_args_address (struct frame_info *);
+
+#define FRAME_ARGS_ADDRESS(fi) vax_frame_args_address ((fi))
+extern CORE_ADDR vax_frame_args_address (struct frame_info *);
+
+#define FRAME_LOCALS_ADDRESS(fi) vax_frame_locals_address ((fi))
+extern CORE_ADDR vax_frame_locals_address (struct frame_info *);
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */