aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/dwarf.c28
-rw-r--r--binutils/dwarf.h1
-rw-r--r--binutils/objdump.c4
4 files changed, 41 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 89d8767..6f721d9 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+2016-04-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * dwarf.h (init_dwarf_regnames_s390): Declare.
+ * dwarf.c (dwarf_regnames_s390): New.
+ (init_dwarf_regnames_s390): New.
+ (init_dwarf_regnames): Call it.
+ * objdump.c (dump_dwarf): Likewise.
+
2016-04-11 Maciej W. Rozycki <macro@imgtec.com>
* testsuite/binutils-all/mips/mips16-undecoded.d: New test.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 80f6b87..770fa6b 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -5464,6 +5464,30 @@ init_dwarf_regnames_aarch64 (void)
dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_aarch64);
}
+static const char *const dwarf_regnames_s390[] =
+{
+ /* Avoid saying "r5 (r5)", so omit the names of r0-r15. */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "f0", "f2", "f4", "f6", "f1", "f3", "f5", "f7",
+ "f8", "f10", "f12", "f14", "f9", "f11", "f13", "f15",
+ "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",
+ "cr8", "cr9", "cr10", "cr11", "cr12", "cr13", "cr14", "cr15",
+ "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7",
+ "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15",
+ "pswm", "pswa",
+ NULL, NULL,
+ "v16", "v18", "v20", "v22", "v17", "v19", "v21", "v23",
+ "v24", "v26", "v28", "v30", "v25", "v27", "v29", "v31",
+};
+
+void
+init_dwarf_regnames_s390 (void)
+{
+ dwarf_regnames = dwarf_regnames_s390;
+ dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_s390);
+}
+
void
init_dwarf_regnames (unsigned int e_machine)
{
@@ -5487,6 +5511,10 @@ init_dwarf_regnames (unsigned int e_machine)
init_dwarf_regnames_aarch64 ();
break;
+ case EM_S390:
+ init_dwarf_regnames_s390 ();
+ break;
+
default:
break;
}
diff --git a/binutils/dwarf.h b/binutils/dwarf.h
index 753a772..ed86810 100644
--- a/binutils/dwarf.h
+++ b/binutils/dwarf.h
@@ -204,6 +204,7 @@ extern void init_dwarf_regnames_i386 (void);
extern void init_dwarf_regnames_iamcu (void);
extern void init_dwarf_regnames_x86_64 (void);
extern void init_dwarf_regnames_aarch64 (void);
+extern void init_dwarf_regnames_s390 (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 6c8ab73..5b84801 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -2527,6 +2527,10 @@ dump_dwarf (bfd *abfd)
init_dwarf_regnames_aarch64();
break;
+ case bfd_arch_s390:
+ init_dwarf_regnames_s390 ();
+ break;
+
default:
break;
}