summaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-05-09 06:44:51 +0000
committerJan Beulich <jbeulich@novell.com>2005-05-09 06:44:51 +0000
commit90748d87ed311f3cbab7fae104b4c4e1bd46224c (patch)
treef17436818121633b6f03da642accaa723a0e08fb /gas/config
parentbe97728fd1ed6330765eb291e26f3064bc1842dd (diff)
downloadbinutils-redhat-90748d87ed311f3cbab7fae104b4c4e1bd46224c.tar.gz
gas/
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).
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-i386.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 7b26546402..be4d814ce7 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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;