aboutsummaryrefslogtreecommitdiff
path: root/gdb/trad-frame.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2004-03-22 03:15:23 +0000
committerAndrew Cagney <cagney@redhat.com>2004-03-22 03:15:23 +0000
commit1aef2af9e5d477c078495d2fa36a3d57d17eba5e (patch)
tree9d4e2d6794b452f1e03e9a356804416008c35914 /gdb/trad-frame.c
parentd2ad28bb36aa9704073ab540bd03c218b89f63a1 (diff)
downloadgdb-cagney_tramp-20040309-branch.zip
gdb-cagney_tramp-20040309-branch.tar.gz
gdb-cagney_tramp-20040309-branch.tar.bz2
Final tramp-frame code.cagney_tramp-20040309-branch
Diffstat (limited to 'gdb/trad-frame.c')
-rw-r--r--gdb/trad-frame.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
index 3b570e1..85575df 100644
--- a/gdb/trad-frame.c
+++ b/gdb/trad-frame.c
@@ -24,6 +24,14 @@
#include "trad-frame.h"
#include "regcache.h"
+struct trad_frame_cache
+{
+ struct frame_info *next_frame;
+ CORE_ADDR this_base;
+ struct trad_frame_saved_reg *prev_regs;
+ struct frame_id this_id;
+};
+
struct trad_frame_cache *
trad_frame_cache_zalloc (struct frame_info *next_frame)
{
@@ -31,6 +39,7 @@ trad_frame_cache_zalloc (struct frame_info *next_frame)
this_trad_cache = FRAME_OBSTACK_ZALLOC (struct trad_frame_cache);
this_trad_cache->prev_regs = trad_frame_alloc_saved_regs (next_frame);
+ this_trad_cache->next_frame = next_frame;
return this_trad_cache;
}
@@ -89,6 +98,13 @@ trad_frame_set_value (struct trad_frame_saved_reg this_saved_regs[],
}
void
+trad_frame_set_reg_addr (struct trad_frame_cache *this_trad_cache,
+ int regnum, CORE_ADDR addr)
+{
+ this_trad_cache->prev_regs[regnum].addr = addr;
+}
+
+void
trad_frame_set_unknown (struct trad_frame_saved_reg this_saved_regs[],
int regnum)
{
@@ -142,3 +158,29 @@ trad_frame_prev_register (struct frame_info *next_frame,
gdbarch_register_name (gdbarch, regnum));
}
}
+
+void
+trad_frame_get_register (struct trad_frame_cache *this_trad_cache,
+ struct frame_info *next_frame,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp, CORE_ADDR *addrp,
+ int *realregp, void *bufferp)
+{
+ trad_frame_prev_register (next_frame, this_trad_cache->prev_regs,
+ regnum, optimizedp, lvalp, addrp, realregp,
+ bufferp);
+}
+
+void
+trad_frame_set_id (struct trad_frame_cache *this_trad_cache,
+ struct frame_id this_id)
+{
+ this_trad_cache->this_id = this_id;
+}
+
+void
+trad_frame_get_id (struct trad_frame_cache *this_trad_cache,
+ struct frame_id *this_id)
+{
+ (*this_id) = this_trad_cache->this_id;
+}