aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2014-08-22 14:40:10 -0700
committerRichard Henderson <rth@twiddle.net>2014-08-22 14:40:10 -0700
commit4ee220358d068133b219d729f4c7ada5a41c106e (patch)
treeeac0104856d07d6122fdba5e740f9bb06e3fac56
parentfbd940576f6c0891cebb4173f64968b7c50ed642 (diff)
downloadfsf-binutils-gdb-4ee220358d068133b219d729f4c7ada5a41c106e.zip
fsf-binutils-gdb-4ee220358d068133b219d729f4c7ada5a41c106e.tar.gz
fsf-binutils-gdb-4ee220358d068133b219d729f4c7ada5a41c106e.tar.bz2
aarch64: Decode dwarf2 register numbers
* dwarf.h (init_dwarf_regnames_aarch64): Declare. * dwarf.c (dwarf_regnames_aarch64): New. (init_dwarf_regnames_aarch64): New. (init_dwarf_regnames): Call it. * objdump.c (dump_dwarf): Likewise.
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/dwarf.c27
-rw-r--r--binutils/dwarf.h1
-rw-r--r--binutils/objdump.c4
4 files changed, 40 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 782c2fd..19569d4 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+2014-08-22 Richard Henderson <rth@redhat.com>
+
+ * dwarf.h (init_dwarf_regnames_aarch64): Declare.
+ * dwarf.c (dwarf_regnames_aarch64): New.
+ (init_dwarf_regnames_aarch64): New.
+ (init_dwarf_regnames): Call it.
+ * objdump.c (dump_dwarf): Likewise.
+
2014-08-19 Alan Modra <amodra@gmail.com>
* configure: Regenerate.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index a6986ad..348e20f 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -5093,6 +5093,29 @@ init_dwarf_regnames_x86_64 (void)
dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_x86_64);
}
+static const char *const dwarf_regnames_aarch64[] =
+{
+ "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
+ "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
+ "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
+ "x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp",
+ NULL, "elr", NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
+ "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15",
+ "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",
+ "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31",
+};
+
+void
+init_dwarf_regnames_aarch64 (void)
+{
+ dwarf_regnames = dwarf_regnames_aarch64;
+ dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64);
+}
+
void
init_dwarf_regnames (unsigned int e_machine)
{
@@ -5109,6 +5132,10 @@ init_dwarf_regnames (unsigned int e_machine)
init_dwarf_regnames_x86_64 ();
break;
+ case EM_AARCH64:
+ init_dwarf_regnames_aarch64 ();
+ break;
+
default:
break;
}
diff --git a/binutils/dwarf.h b/binutils/dwarf.h
index db235a9..124d9d6 100644
--- a/binutils/dwarf.h
+++ b/binutils/dwarf.h
@@ -235,6 +235,7 @@ extern int dwarf_check;
extern void init_dwarf_regnames (unsigned int);
extern void init_dwarf_regnames_i386 (void);
extern void init_dwarf_regnames_x86_64 (void);
+extern void init_dwarf_regnames_aarch64 (void);
extern int load_debug_section (enum dwarf_section_display_enum, void *);
extern void free_debug_section (enum dwarf_section_display_enum);
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 5086a15..413de56 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -2407,6 +2407,10 @@ dump_dwarf (bfd *abfd)
}
break;
+ case bfd_arch_aarch64:
+ init_dwarf_regnames_aarch64();
+ break;
+
default:
break;
}