aboutsummaryrefslogtreecommitdiff
path: root/gdb/tramp-frame.c
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2010-05-17 01:15:20 +0000
committerMichael Snyder <msnyder@vmware.com>2010-05-17 01:15:20 +0000
commit5d5021647dbce1a933576243b9d54281a88eb3b5 (patch)
tree9cc50cfe6d9329223b5830db2770152391c17b19 /gdb/tramp-frame.c
parent3a6f1766e1c8ec54e2baa00f51d375c554ee63b3 (diff)
downloadgdb-5d5021647dbce1a933576243b9d54281a88eb3b5.zip
gdb-5d5021647dbce1a933576243b9d54281a88eb3b5.tar.gz
gdb-5d5021647dbce1a933576243b9d54281a88eb3b5.tar.bz2
2010-05-16 Michael Snyder <msnyder@vmware.com>
* target.c: White space. * target-descriptions.c: White space. * target-memory.c: White space. * thread.c: White space. * top.c: White space. * tracepoint.c: White space. * trad-frame.c: White space. * tramp-frame.c: White space. * ui-file.c: White space. * ui-out.c: White space. * user-regs.c: White space. * utils.c: White space.
Diffstat (limited to 'gdb/tramp-frame.c')
-rw-r--r--gdb/tramp-frame.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c
index 3c7e9e6..feb0055 100644
--- a/gdb/tramp-frame.c
+++ b/gdb/tramp-frame.c
@@ -45,6 +45,7 @@ tramp_frame_cache (struct frame_info *this_frame,
void **this_cache)
{
struct tramp_frame_cache *tramp_cache = (*this_cache);
+
if (tramp_cache->trad_cache == NULL)
{
tramp_cache->trad_cache = trad_frame_cache_zalloc (this_frame);
@@ -63,6 +64,7 @@ tramp_frame_this_id (struct frame_info *this_frame,
{
struct trad_frame_cache *trad_cache
= tramp_frame_cache (this_frame, this_cache);
+
trad_frame_get_id (trad_cache, this_id);
}
@@ -73,6 +75,7 @@ tramp_frame_prev_register (struct frame_info *this_frame,
{
struct trad_frame_cache *trad_cache
= tramp_frame_cache (this_frame, this_cache);
+
return trad_frame_get_register (trad_cache, this_frame, prev_regnum);
}
@@ -83,16 +86,19 @@ tramp_frame_start (const struct tramp_frame *tramp,
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int ti;
+
/* Search through the trampoline for one that matches the
instruction sequence around PC. */
for (ti = 0; tramp->insn[ti].bytes != TRAMP_SENTINEL_INSN; ti++)
{
CORE_ADDR func = pc - tramp->insn_size * ti;
int i;
+
for (i = 0; 1; i++)
{
gdb_byte buf[sizeof (tramp->insn[0])];
ULONGEST insn;
+
if (tramp->insn[i].bytes == TRAMP_SENTINEL_INSN)
return func;
if (!safe_frame_unwind_memory (this_frame,