[PATCH] m32c-tdep.c: Add virtual_frame_pointer function

Corinna Vinschen
2006-06-28T13:29:23Z

Hi,

the below patch adds a virtual_frame_pointer function to m32c-tdep.c,
to avoid that legacy_virtual_frame_pointer is called from tracepoint.c,
function encode_actions(). The legacy function either expects a
DEPRECATED_FP_REGNUM function, or it expects SP_REGNUM <= NUM_REGS,
which is not the case for the m32c code which includes serious
register banking. The patch avoids all GDB internal errors in the
gdb.trace testsuite and allows to return PASSes for all these testcases,
except a single one (FAIL: gdb.trace/packetlen.exp: setup collect actions).

Ok to apply?

Thanks,
Corinna

* m32c-tdep.c (m32c_virtual_frame_pointer): New function.
(m32c_gdbarch_init): Add set_gdbarch_virtual_frame_pointer call.

Index: m32c-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m32c-tdep.c,v
retrieving revision 1.1
diff -u -p -r1.1 m32c-tdep.c
--- m32c-tdep.c 20 Apr 2006 23:18:48 -0000 1.1
+++ m32c-tdep.c 28 Jun 2006 13:20:38 -0000
@@ -2475,6 +2475,14 @@ m32c_m16c_pointer_to_address (struct typ
return ptr;
}

+void
+m32c_virtual_frame_pointer (CORE_ADDR pc,
+ int *frame_regnum,
+ LONGEST *frame_offset)
+{
+ *frame_regnum = SP_REGNUM;
+ *frame_offset = 0;
+}

\f
/* Initialization. */
@@ -2539,6 +2547,8 @@ m32c_gdbarch_init (struct gdbarch_info i
/* Trampolines. */
set_gdbarch_skip_trampoline_code (arch, m32c_skip_trampoline_code);

+ set_gdbarch_virtual_frame_pointer (arch, m32c_virtual_frame_pointer);
+
return arch;
}

--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat