+2007-04-01 Roland McGrath <roland@redhat.com>
+
+ * x86_64_regs.c (x86_64_register_info): Add more registers from newer
+ ABI spec.
+
2007-01-11 Roland McGrath <roland@redhat.com>
* ia64_symbol.c (ia64_machine_section_flag_check): New function.
/* Register names and numbers for x86-64 DWARF.
- Copyright (C) 2005, 2006 Red Hat, Inc.
+ Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
This file is part of Red Hat elfutils.
Red Hat elfutils is free software; you can redistribute it and/or modify
#include <assert.h>
#include <dwarf.h>
+#include <string.h>
#define BACKEND x86_64_
#include "libebl_CPU.h"
int *bits, int *type)
{
if (name == NULL)
- return 49;
+ return 67;
- if (regno < 0 || regno > 48 || namelen < 6)
+ if (regno < 0 || regno > 66 || namelen < 7)
return -1;
*prefix = "%";
if (regno < 17)
{
*setname = "integer";
- if (regno == 16 || regno == 6 || regno == 7)
- *type = DW_ATE_address;
- else
- *type = DW_ATE_signed;
+ *type = DW_ATE_signed;
}
else if (regno < 33)
{
*type = DW_ATE_float;
*bits = 80;
}
- else
+ else if (regno < 49)
+ *setname = "MMX";
+ else if (regno > 49 && regno < 60)
{
- *setname = "MMX";
- *bits = 64;
+ *setname = "segment";
+ *bits = 16;
}
+ else
+ *setname = "control";
switch (regno)
{
"ax", "dx", "cx", "bx", "si", "di", "bp", "sp"
};
- case 0 ... 7:
+ case 6 ... 7:
+ *type = DW_ATE_address;
+ case 0 ... 5:
name[0] = 'r';
name[1] = baseregs[regno][0];
name[2] = baseregs[regno][1];
break;
case 16:
+ *type = DW_ATE_address;
name[0] = 'r';
name[1] = 'i';
name[2] = 'p';
name[2] = regno - 41 + '0';
namelen = 3;
break;
+
+ case 50 ... 55:
+ name[0] = "ecsdfg"[regno - 50];
+ name[1] = 's';
+ namelen = 2;
+ break;
+
+ case 58 ... 59:
+ *type = DW_ATE_address;
+ *bits = 64;
+ name[0] = regno - 58 + 'f';
+ return stpcpy (&name[1], "s.base") + 1 - name;
+
+ case 49:
+ return stpcpy (name, "rflags") + 1 - name;
+ case 62:
+ return stpcpy (name, "tr") + 1 - name;
+ case 63:
+ return stpcpy (name, "ldtr") + 1 - name;
+ case 64:
+ return stpcpy (name, "mxcsr") + 1 - name;
+
+ case 65 ... 66:
+ name[0] = 'f';
+ name[1] = "cs"[regno - 65];
+ name[2] = 'w';
+ namelen = 3;
+ break;
+
+ default:
+ return 0;
}
name[namelen++] = '\0';
+2007-04-01 Roland McGrath <roland@redhat.com>
+
+ * run-allregs.sh: Updated expected output for x86_64.
+
2007-03-04 Roland McGrath <roland@redhat.com>
* dwfl-bug-fd-leak.c: New file.
#! /bin/sh
-# Copyright (C) 2005, 2006 Red Hat, Inc.
+# Copyright (C) 2005, 2006, 2007 Red Hat, Inc.
# This file is part of Red Hat elfutils.
#
# Red Hat elfutils is free software; you can redistribute it and/or modify
30: %xmm13 (xmm13), unsigned 128 bits
31: %xmm14 (xmm14), unsigned 128 bits
32: %xmm15 (xmm15), unsigned 128 bits
+control registers:
+ 49: %rflags (rflags), unsigned 64 bits
+ 62: %tr (tr), unsigned 64 bits
+ 63: %ldtr (ldtr), unsigned 64 bits
+ 64: %mxcsr (mxcsr), unsigned 64 bits
+ 65: %fcw (fcw), unsigned 64 bits
+ 66: %fsw (fsw), unsigned 64 bits
+segment registers:
+ 50: %es (es), unsigned 16 bits
+ 51: %cs (cs), unsigned 16 bits
+ 52: %ss (ss), unsigned 16 bits
+ 53: %ds (ds), unsigned 16 bits
+ 54: %fs (fs), unsigned 16 bits
+ 55: %gs (gs), unsigned 16 bits
+ 58: %fs.base (fs.base), address 64 bits
+ 59: %gs.base (gs.base), address 64 bits
x87 registers:
33: %st0 (st0), float 80 bits
34: %st1 (st1), float 80 bits