Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [m68k] Correct dwarf register numbering
@ 2006-06-05 15:16 Nathan Sidwell
  2006-06-08 18:14 ` Daniel Jacobowitz
  0 siblings, 1 reply; 2+ messages in thread
From: Nathan Sidwell @ 2006-06-05 15:16 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 523 bytes --]

The m68k port was using a one-to-one mapping between dwarf register numbers and 
gdb register numbers.  That's incorrect as the floating point registers have 
dwarf numbers 16..23 but gdb register numbers 18..25.  Furthermore, GCC 
indicates the return column is register 25, which maps onto the last fp register.

This patch adds a mapping function.  ok?

nathan
-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::         CodeSourcery
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk


[-- Attachment #2: dwarf-reg.patch --]
[-- Type: text/x-patch, Size: 2311 bytes --]

2006-06-05  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb/m68k-tdep.c (m68k_dwarf_reg_to_regnum): New.
	(m68k_gdbarch_init): Set it for dwarf & dwarf2 reg number
	conversion. Use M68K_NUM_REGS for number of regs.

Index: gdb/m68k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68k-tdep.c,v
retrieving revision 1.105.2.3
diff -c -3 -p -r1.105.2.3 m68k-tdep.c
*** gdb/m68k-tdep.c	5 Jun 2006 14:51:35 -0000	1.105.2.3
--- gdb/m68k-tdep.c	5 Jun 2006 14:55:01 -0000
*************** m68k_push_dummy_call (struct gdbarch *gd
*** 555,560 ****
--- 557,584 ----
       frame's CFA.  */
    return sp + 8;
  }
+ 
+ /* Convert a dwarf or dwarf2 regnumber to a GDB regnum */
+ 
+ static int
+ m68k_dwarf_reg_to_regnum (int num)
+ {
+   if (num < 8)
+     /* d0..7 */
+     return (num - 0) + M68K_D0_REGNUM;
+   else if (num < 16)
+     /* a0..7 */
+     return (num - 8) + M68K_A0_REGNUM;
+   else if (num < 24)
+     /* fp0..7 */
+     return (num - 16) + M68K_FP0_REGNUM;
+   else if (num == 25)
+     /* pc */
+     return M68K_PC_REGNUM;
+   else
+     return NUM_REGS + NUM_PSEUDO_REGS;
+ }
+ 
  \f
  struct m68k_frame_cache
  {
*************** m68k_gdbarch_init (struct gdbarch_info i
*** 1240,1249 ****
    set_gdbarch_decr_pc_after_break (gdbarch, 2);
  
    set_gdbarch_frame_args_skip (gdbarch, 8);
  
    set_gdbarch_register_type (gdbarch, m68k_register_type);
    set_gdbarch_register_name (gdbarch, m68k_register_name);
!   set_gdbarch_num_regs (gdbarch, 29);
    set_gdbarch_register_bytes_ok (gdbarch, m68k_register_bytes_ok);
    set_gdbarch_sp_regnum (gdbarch, M68K_SP_REGNUM);
    set_gdbarch_pc_regnum (gdbarch, M68K_PC_REGNUM);
--- 1264,1275 ----
    set_gdbarch_decr_pc_after_break (gdbarch, 2);
  
    set_gdbarch_frame_args_skip (gdbarch, 8);
+   set_gdbarch_dwarf_reg_to_regnum (gdbarch, m68k_dwarf_reg_to_regnum);
+   set_gdbarch_dwarf2_reg_to_regnum (gdbarch, m68k_dwarf_reg_to_regnum);
  
    set_gdbarch_register_type (gdbarch, m68k_register_type);
    set_gdbarch_register_name (gdbarch, m68k_register_name);
!   set_gdbarch_num_regs (gdbarch, M68K_NUM_REGS);
    set_gdbarch_register_bytes_ok (gdbarch, m68k_register_bytes_ok);
    set_gdbarch_sp_regnum (gdbarch, M68K_SP_REGNUM);
    set_gdbarch_pc_regnum (gdbarch, M68K_PC_REGNUM);

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [m68k] Correct dwarf register numbering
  2006-06-05 15:16 [m68k] Correct dwarf register numbering Nathan Sidwell
@ 2006-06-08 18:14 ` Daniel Jacobowitz
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Jacobowitz @ 2006-06-08 18:14 UTC (permalink / raw)
  To: Nathan Sidwell; +Cc: gdb-patches

On Mon, Jun 05, 2006 at 04:14:32PM +0100, Nathan Sidwell wrote:
> 2006-06-05  Nathan Sidwell  <nathan@codesourcery.com>
> 
> 	* gdb/m68k-tdep.c (m68k_dwarf_reg_to_regnum): New.
> 	(m68k_gdbarch_init): Set it for dwarf & dwarf2 reg number
> 	conversion. Use M68K_NUM_REGS for number of regs.

Yeah, this is fine.  Thanks.

> + /* Convert a dwarf or dwarf2 regnumber to a GDB regnum */

period and two spaces at the end, please.


-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-06-08 18:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-05 15:16 [m68k] Correct dwarf register numbering Nathan Sidwell
2006-06-08 18:14 ` Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox