This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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] | |
The register numbers used in x86-64's .eh_frame entries neither matched
the
ABI nor the gcc implementation. Additionally, a significant amount of
registers were missing in both 32- and 64-bit modes (even now there
are, but
only those for which there don't appear to be register numbers assigned
in
the respective ABI).
Built and tested on i686-pc-linux-gnu (including a cross version
targeting
x86_64-unknown-linux-gnu).
Jan
gas/
2004-11-25 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).
---
/home/jbeulich/src/binutils/mainline/2004-11-25.14.46/gas/config/tc-i386.c 2004-11-23
09:35:34.000000000 +0100
+++ 2004-11-25.14.46/gas/config/tc-i386.c 2004-11-25
15:16:34.709475200 +0100
@@ -6628,21 +6628,36 @@ tc_x86_regname_to_dw2regnum (const char
{
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)
{
@@ -6656,7 +6671,8 @@ tc_x86_regname_to_dw2regnum (const char
}
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;
Attachment:
binutils-mainline-x86-cfi-regnum.patch
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |