PATCH: Don't display missing x86 registers in general group

H.J. Lu hongjiu.lu@intel.com
Thu Apr 8 22:39:00 GMT 2010


Currently x86 gdb does
(gdb) maint print register-groups
 Name         Nr  Rel Offset    Size  Type            Groups
...
 ''           41   41    308       0 int0_t          general
 ''           42   42    308       0 int0_t          general
 ''           43   43    308       0 int0_t          general
 ''           44   44    308       0 int0_t          general
 ''           45   45    308       0 int0_t          general
 ''           46   46    308       0 int0_t          general
 ''           47   47    308       0 int0_t          general
 ''           48   48    308       0 int0_t          general


Those are ymm regiters, which don't exist on this machine.  This
patch removes registers with empty name from general group.  OK
to install?

Thanks.


H.J.
---
2010-04-08  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-tdep.c (i386_register_reggroup_p): Return 0 if register
	name is empty for general_reggroup.

diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 22854bd..4a0be36 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -3029,12 +3029,20 @@ i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
     return 0;
 
   if (group == general_reggroup)
-    return (!fp_regnum_p
-	    && !mmx_regnum_p
-	    && !mxcsr_regnum_p
-	    && !xmm_regnum_p
-	    && !ymm_regnum_p
-	    && !ymmh_regnum_p);
+    {
+      if (!fp_regnum_p
+	  && !mmx_regnum_p
+	  && !mxcsr_regnum_p
+	  && !xmm_regnum_p
+	  && !ymm_regnum_p
+	  && !ymmh_regnum_p)
+	{
+	  const char *regname = gdbarch_register_name (gdbarch, regnum);
+	  return regname != NULL && *regname != '\0';
+	}
+      else
+	return 0;
+    }
 
   return default_register_reggroup_p (gdbarch, regnum, group);
 }



More information about the Gdb-patches mailing list