- /* G0 *always* holds 0. */
- *(int *)®isters[REGISTER_BYTE (0)] = 0;
-
- /* The globals and output registers. */
- memcpy (®isters[REGISTER_BYTE (G1_REGNUM)], &gregs->r_g1,
- 15 * REGISTER_RAW_SIZE (G1_REGNUM));
- *(int *)®isters[REGISTER_BYTE (PS_REGNUM)] = gregs->r_ps;
- *(int *)®isters[REGISTER_BYTE (PC_REGNUM)] = gregs->r_pc;
- *(int *)®isters[REGISTER_BYTE (NPC_REGNUM)] = gregs->r_npc;
- *(int *)®isters[REGISTER_BYTE (Y_REGNUM)] = gregs->r_y;
-
- /* My best guess at where to get the locals and input
- registers is exactly where they usually are, right above
- the stack pointer. If the core dump was caused by a bus error
- from blowing away the stack pointer (as is possible) then this
- won't work, but it's worth the try. */
+ /* G0 *always* holds 0. */
+ *(int *) ®isters[REGISTER_BYTE (0)] = 0;
+
+ /* The globals and output registers. */
+ memcpy (®isters[REGISTER_BYTE (G1_REGNUM)], &gregs->r_g1,
+ 15 * REGISTER_RAW_SIZE (G1_REGNUM));
+ *(int *) ®isters[REGISTER_BYTE (PS_REGNUM)] = gregs->r_ps;
+ *(int *) ®isters[REGISTER_BYTE (PC_REGNUM)] = gregs->r_pc;
+ *(int *) ®isters[REGISTER_BYTE (NPC_REGNUM)] = gregs->r_npc;
+ *(int *) ®isters[REGISTER_BYTE (Y_REGNUM)] = gregs->r_y;
+
+ /* My best guess at where to get the locals and input
+ registers is exactly where they usually are, right above
+ the stack pointer. If the core dump was caused by a bus error
+ from blowing away the stack pointer (as is possible) then this
+ won't work, but it's worth the try. */
+ {
+ int sp;
+
+ sp = *(int *) ®isters[REGISTER_BYTE (SP_REGNUM)];
+ if (0 != target_read_memory (sp, ®isters[REGISTER_BYTE (L0_REGNUM)],
+ 16 * REGISTER_RAW_SIZE (L0_REGNUM)))
+ {
+ /* fprintf_unfiltered so user can still use gdb */
+ fprintf_unfiltered (gdb_stderr,
+ "Couldn't read input and local registers from core file\n");
+ }
+ }
+ }
+ else if (which == 2)