From 089dfecdde9d6ef28dc2131603dab78e0668c32f Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 9 May 2005 06:44:51 +0000 Subject: [PATCH] gas/ 2005-05-09 Jan Beulich * 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 | 7 +++++++ gas/config/tc-i386.c | 34 +++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index f14c9f8f7bc..a8cca7f626f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2005-05-09 Jan Beulich + + * 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 * config/tc-i386.c (parse_insn): Consider all matching instructions diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 7b265464023..be4d814ce77 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; -- 2.30.2