* [RFA/m32r] Add core file support to m32r-linux
@ 2004-11-04 2:38 Kei Sakamoto
2004-11-11 20:09 ` Andrew Cagney
0 siblings, 1 reply; 3+ messages in thread
From: Kei Sakamoto @ 2004-11-04 2:38 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 408 bytes --]
Hello,
The attached patch adds core file support to m32r-linux target.
OK to commit?
2004-11-04 Kei Sakamoto <sakamoto.kei@renesas.com>
* Makefile.in (m32r-linux-tdep.o): Update dependencies.
* m32r-linux-tdep.c (m32r_linux_init_abi): Call
set_gdbarch_regset_from_core_section for core file support.
(m32r_linux_supply_gregset, m32r_linux_regset_from_core_section):
New functions.
[-- Attachment #2: m32r-linux-tdep.patch --]
[-- Type: application/octet-stream, Size: 4157 bytes --]
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.654
diff -u -r1.654 Makefile.in
--- Makefile.in 4 Nov 2004 02:15:19 -0000 1.654
+++ Makefile.in 4 Nov 2004 02:30:03 -0000
@@ -2162,7 +2162,7 @@
m32r-linux-tdep.o: m32r-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
$(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \
$(gdb_string_h) $(glibc_tdep_h) $(solib_svr4_h) $(trad_frame_h) \
- $(frame_unwind_h) $(m32r_tdep_h)
+ $(frame_unwind_h) $(regset_h) $(m32r_tdep_h)
m32r-rom.o: m32r-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
$(serial_h) $(symtab_h) $(command_h) $(gdbcmd_h) $(symfile_h) \
$(gdb_string_h) $(objfiles_h) $(inferior_h) $(regcache_h)
Index: m32r-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m32r-linux-tdep.c,v
retrieving revision 1.1
diff -u -r1.1 m32r-linux-tdep.c
--- m32r-linux-tdep.c 1 Oct 2004 07:29:34 -0000 1.1
+++ m32r-linux-tdep.c 4 Nov 2004 02:30:03 -0000
@@ -27,6 +27,7 @@
#include "inferior.h"
#include "osabi.h"
#include "reggroups.h"
+#include "regset.h"
#include "gdb_string.h"
@@ -309,6 +310,97 @@
return NULL;
}
+/* Mapping between the registers in `struct pt_regs'
+ format and GDB's register array layout. */
+
+static int m32r_pt_regs_offset[] = {
+ 4 * 4, /* r0 */
+ 4 * 5, /* r1 */
+ 4 * 6, /* r2 */
+ 4 * 7, /* r3 */
+ 4 * 0, /* r4 */
+ 4 * 1, /* r5 */
+ 4 * 2, /* r6 */
+ 4 * 8, /* r7 */
+ 4 * 9, /* r8 */
+ 4 * 10, /* r9 */
+ 4 * 11, /* r10 */
+ 4 * 12, /* r11 */
+ 4 * 13, /* r12 */
+ 4 * 24, /* fp */
+ 4 * 25, /* lr */
+ 4 * 23, /* sp */
+ 4 * 19, /* psw */
+ 4 * 19, /* cbr */
+ 4 * 26, /* spi */
+ 4 * 23, /* spu */
+ 4 * 22, /* bpc */
+ 4 * 20, /* pc */
+ 4 * 16, /* accl */
+ 4 * 15 /* acch */
+};
+
+#define PSW_OFFSET (4 * 19)
+#define BBPSW_OFFSET (4 * 21)
+#define SPU_OFFSET (4 * 23)
+#define SPI_OFFSET (4 * 26)
+
+static void
+m32r_linux_supply_gregset (const struct regset *regset,
+ struct regcache *regcache, int regnum,
+ const void *gregs, size_t size)
+{
+ const char *regs = gregs;
+ unsigned long psw, bbpsw;
+ int i;
+
+ psw = *((unsigned long *) (regs + PSW_OFFSET));
+ bbpsw = *((unsigned long *) (regs + BBPSW_OFFSET));
+
+ for (i = 0; i < sizeof (m32r_pt_regs_offset) / 4; i++)
+ {
+ if (regnum != -1 && regnum != i)
+ continue;
+
+ switch (i)
+ {
+ case PSW_REGNUM:
+ *((unsigned long *) (regs + m32r_pt_regs_offset[i])) =
+ ((0x00c1 & bbpsw) << 8) | ((0xc100 & psw) >> 8);
+ break;
+ case CBR_REGNUM:
+ *((unsigned long *) (regs + m32r_pt_regs_offset[i])) =
+ ((psw >> 8) & 1);
+ break;
+ case M32R_SP_REGNUM:
+ if (psw & 0x8000)
+ *((unsigned long *) (regs + m32r_pt_regs_offset[i])) =
+ *((unsigned long *) (regs + SPU_OFFSET));
+ else
+ *((unsigned long *) (regs + m32r_pt_regs_offset[i])) =
+ *((unsigned long *) (regs + SPI_OFFSET));
+ break;
+ }
+
+ regcache_raw_supply (current_regcache, i,
+ regs + m32r_pt_regs_offset[i]);
+ }
+}
+
+static struct regset m32r_linux_gregset = {
+ NULL, m32r_linux_supply_gregset
+};
+
+static const struct regset *
+m32r_linux_regset_from_core_section (struct gdbarch *core_arch,
+ const char *sect_name, size_t sect_size)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (core_arch);
+ if (strcmp (sect_name, ".reg") == 0)
+ return &m32r_linux_gregset;
+ return NULL;
+}
+
static void
m32r_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
@@ -323,6 +415,10 @@
/* GNU/Linux uses SVR4-style shared libraries. */
set_solib_svr4_fetch_link_map_offsets
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
+
+ /* Core file support. */
+ set_gdbarch_regset_from_core_section
+ (gdbarch, m32r_linux_regset_from_core_section);
}
/* Provide a prototype to silence -Wmissing-prototypes. */
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA/m32r] Add core file support to m32r-linux
2004-11-04 2:38 [RFA/m32r] Add core file support to m32r-linux Kei Sakamoto
@ 2004-11-11 20:09 ` Andrew Cagney
2004-11-12 1:03 ` Kei Sakamoto
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Cagney @ 2004-11-11 20:09 UTC (permalink / raw)
To: Kei Sakamoto; +Cc: gdb-patches
Kei Sakamoto wrote:
> Hello,
>
> The attached patch adds core file support to m32r-linux target.
Ok, also ok for 6.3 branch.
Andrew
> 2004-11-04 Kei Sakamoto <sakamoto.kei@renesas.com>
>
> * Makefile.in (m32r-linux-tdep.o): Update dependencies.
> * m32r-linux-tdep.c (m32r_linux_init_abi): Call
> set_gdbarch_regset_from_core_section for core file support.
> (m32r_linux_supply_gregset, m32r_linux_regset_from_core_section):
> New functions.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA/m32r] Add core file support to m32r-linux
2004-11-11 20:09 ` Andrew Cagney
@ 2004-11-12 1:03 ` Kei Sakamoto
0 siblings, 0 replies; 3+ messages in thread
From: Kei Sakamoto @ 2004-11-12 1:03 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches
> Kei Sakamoto wrote:
> > Hello,
> >
> > The attached patch adds core file support to m32r-linux target.
>
> Ok, also ok for 6.3 branch.
>
> Andrew
>
> > 2004-11-04 Kei Sakamoto <sakamoto.kei@renesas.com>
> >
> > * Makefile.in (m32r-linux-tdep.o): Update dependencies.
> > * m32r-linux-tdep.c (m32r_linux_init_abi): Call
> > set_gdbarch_regset_from_core_section for core file support.
> > (m32r_linux_supply_gregset, m32r_linux_regset_from_core_section):
> > New functions.
I've committed on mainline and 6.3. Thank you.
Kei Sakamoto
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-11-12 1:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-04 2:38 [RFA/m32r] Add core file support to m32r-linux Kei Sakamoto
2004-11-11 20:09 ` Andrew Cagney
2004-11-12 1:03 ` Kei Sakamoto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox