This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Eliminate hard coded constant num_regs in mips_gdbarch_init


It seems wrong to hard code the number of registers in
mips_gdbarch_init.  Here is one way to fix it, for the case
"num_regs=90", and possibly for the "num_regs=71" case also.

It's about par for the course :-( The code also assumes that mips_r3041_reg_names, mips_r3051_reg_names and mips_r3081_reg_names are the same size (90 - 32). If you're trying to add more than 90 registers, you've a bigger problem.


The various MIPS_REGISTER_NAME definitions should all be part of a table.

However using sizeof(mips_generic_reg_names) is somewhat of a
misleading way to find the number of strings in MIPS_REGISTER_NAMES
and I'm not too thrilled about using a hard coded 32 instead of
something like "sizeof(mips_gpr_names)/sizeof(char*)".

Try MIPS_NUMREGS.


Andrew

PS: Does Intrinsity have a disclaimer?

2003-06-25 Fred Fish <fnf@intrinsity.com>

	* mips-tdep.c (mips_gdbarch_init): Set num_regs to be the number
	of base registers (32) plus the number of machine dependent
	register names, which should equal the number of machine dependent
	registers.

Index: mips-tdep.c
===================================================================
RCS file: /mips/newtools/fsf/gdb/gdb/mips-tdep.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -c -p -r1.21 -r1.22
*** mips-tdep.c 2003/06/23 14:31:26 1.21
--- mips-tdep.c 2003/06/26 02:36:53 1.22
*************** mips_gdbarch_init (struct gdbarch_info i
*** 5908,5914 ****
if (info.osabi == GDB_OSABI_IRIX)
num_regs = 71;
else
! num_regs = 90;
set_gdbarch_num_regs (gdbarch, num_regs);
set_gdbarch_num_pseudo_regs (gdbarch, num_regs);
--- 5908,5914 ----
if (info.osabi == GDB_OSABI_IRIX)
num_regs = 71;
else
! num_regs = 32 + sizeof(mips_generic_reg_names)/sizeof(char *);
set_gdbarch_num_regs (gdbarch, num_regs);
set_gdbarch_num_pseudo_regs (gdbarch, num_regs);





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]