From d6bb17b07976ecbced934c1ad2cfec9976dbd8ce Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Wed, 13 Apr 2016 10:56:30 +0200 Subject: [PATCH] Add init_dwarf_regnames_s390 Define and use DWARF register names for s390. binutils/ChangeLog: * 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. --- binutils/ChangeLog | 8 ++++++++ binutils/dwarf.c | 28 ++++++++++++++++++++++++++++ binutils/dwarf.h | 1 + binutils/objdump.c | 4 ++++ 4 files changed, 41 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 89d8767f442..6f721d98088 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2016-04-13 Andreas Arnez + + * 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 * testsuite/binutils-all/mips/mips16-undecoded.d: New test. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 80f6b877059..770fa6bf5c6 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 753a772541e..ed86810dcba 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 6c8ab73ddac..5b848014c71 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; } -- 2.30.2