gas/
authorJan Beulich <jbeulich@novell.com>
Mon, 9 May 2005 06:44:51 +0000 (06:44 +0000)
committerJan Beulich <jbeulich@novell.com>
Mon, 9 May 2005 06:44:51 +0000 (06:44 +0000)
2005-05-09  Jan Beulich  <jbeulich@novell.com>

* config/tc-i386.c (tc_x86_regname_to_dw2regnum): Correct 64-bit mode
names to match ABI. Add more registers for 32-bit and 64-bit modes.
Make name array static and const. Adjust lookup to account for NULL
entries (standing for unused register numbers).

gas/ChangeLog
gas/config/tc-i386.c

index f14c9f8..a8cca7f 100644 (file)
@@ -1,5 +1,12 @@
 2005-05-09  Jan Beulich  <jbeulich@novell.com>
 
+       * config/tc-i386.c (tc_x86_regname_to_dw2regnum): Correct 64-bit mode
+       names to match ABI. Add more registers for 32-bit and 64-bit modes.
+       Make name array static and const. Adjust lookup to account for NULL
+       entries (standing for unused register numbers).
+
+2005-05-09  Jan Beulich  <jbeulich@novell.com>
+
        * config/tc-i386.c (parse_insn): Consider all matching instructions
        when checking for string instruction after string-only prefix.
 
index 7b26546..be4d814 100644 (file)
@@ -6789,21 +6789,36 @@ tc_x86_regname_to_dw2regnum (const char *regname)
 {
   unsigned int regnum;
   unsigned int regnames_count;
-  char *regnames_32[] =
+  static const char *const regnames_32[] =
     {
       "eax", "ecx", "edx", "ebx",
       "esp", "ebp", "esi", "edi",
-      "eip"
+      "eip", "eflags", NULL,
+      "st0", "st1", "st2", "st3",
+      "st4", "st5", "st6", "st7",
+      NULL, NULL,
+      "xmm0", "xmm1", "xmm2", "xmm3",
+      "xmm4", "xmm5", "xmm6", "xmm7",
+      "mm0", "mm1", "mm2", "mm3",
+      "mm4", "mm5", "mm6", "mm7"
     };
-  char *regnames_64[] =
+  static const char *const regnames_64[] =
     {
-      "rax", "rbx", "rcx", "rdx",
-      "rdi", "rsi", "rbp", "rsp",
-      "r8", "r9", "r10", "r11",
+      "rax", "rdx", "rcx", "rbx",
+      "rsi", "rdi", "rbp", "rsp",
+      "r8",  "r9",  "r10", "r11",
       "r12", "r13", "r14", "r15",
-      "rip"
+      "rip",
+      "xmm0",  "xmm1",  "xmm2",  "xmm3",
+      "xmm4",  "xmm5",  "xmm6",  "xmm7",
+      "xmm8",  "xmm9",  "xmm10", "xmm11",
+      "xmm12", "xmm13", "xmm14", "xmm15",
+      "st0", "st1", "st2", "st3",
+      "st4", "st5", "st6", "st7",
+      "mm0", "mm1", "mm2", "mm3",
+      "mm4", "mm5", "mm6", "mm7"
     };
-  char **regnames;
+  const char *const *regnames;
 
   if (flag_code == CODE_64BIT)
     {
@@ -6817,7 +6832,8 @@ tc_x86_regname_to_dw2regnum (const char *regname)
     }
 
   for (regnum = 0; regnum < regnames_count; regnum++)
-    if (strcmp (regname, regnames[regnum]) == 0)
+    if (regnames[regnum] != NULL
+       && strcmp (regname, regnames[regnum]) == 0)
       return regnum;
 
   return -1;