summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2009-04-16 20:32:42 -0700
committerRoland McGrath <roland@redhat.com>2009-04-16 20:32:42 -0700
commitc6f20e44e767f43219accd53f3211fd980dd2660 (patch)
treeaa20458f8ebdbdb9b8354babe42daf674e34b0ef
parent8ec82157be1d8ea52f8cc43a22b8cedbade41986 (diff)
downloadelfutils-c6f20e44e767f43219accd53f3211fd980dd2660.tar.gz
Handle ARM VFP register names.
-rw-r--r--backends/ChangeLog2
-rw-r--r--backends/arm_regs.c23
2 files changed, 23 insertions, 2 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 21b8c739..c764f9ef 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,5 +1,7 @@
2009-04-16 Roland McGrath <roland@redhat.com>
+ * arm_regs.c (arm_register_info): Handle VFP registers.
+
* i386_corenote.c (EXTRA_NOTES): NT_PRXFPREG -> NT_PRXFPREG
2009-04-14 Roland McGrath <roland@redhat.com>
diff --git a/backends/arm_regs.c b/backends/arm_regs.c
index b7351ce2..0a9536d4 100644
--- a/backends/arm_regs.c
+++ b/backends/arm_regs.c
@@ -40,9 +40,9 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
int *bits, int *type)
{
if (name == NULL)
- return 129;
+ return 320;
- if (regno < 0 || regno > 128 || namelen < 5)
+ if (regno < 0 || regno > 320 || namelen < 5)
return -1;
*prefix = NULL;
@@ -88,6 +88,25 @@ arm_register_info (Ebl *ebl __attribute__ ((unused)),
*type = DW_ATE_unsigned;
return stpcpy (name, "spsr") + 1 - name;
+ case 256 + 0 ... 256 + 9:
+ *setname = "VFP";
+ *type = DW_ATE_float;
+ *bits = 64;
+ name[0] = 'd';
+ name[1] = regno - 256 + '0';
+ namelen = 2;
+ break;
+
+ case 256 + 10 ... 256 + 31:
+ *setname = "VFP";
+ *type = DW_ATE_float;
+ *bits = 64;
+ name[0] = 'd';
+ name[1] = (regno - 256) / 10 + '0';
+ name[2] = (regno - 256) % 10 + '0';
+ namelen = 3;
+ break;
+
default:
*setname = NULL;
return 0;