binutils/riscv: Register names in DWARF output
authorAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 2 Feb 2018 15:25:31 +0000 (15:25 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 2 Feb 2018 18:50:40 +0000 (18:50 +0000)
Adds a register name table for RiscV so that objdump and readelf can
both use better register names.

binutils/ChangeLog:

* dwarf.c (dwarf_regnames_riscv): New register name table.
(init_dwarf_regnames_riscv): New function.
(init_dwarf_regnames): Add call to initialise RiscV register
names.
* dwarf.h (init_dwarf_regnames_riscv): Declare.
* objdump.c (dump_dwarf): Add call to initialise RiscV register
names.

binutils/ChangeLog
binutils/dwarf.c
binutils/dwarf.h
binutils/objdump.c

index 5f472735a5fbe6f1235692905f0d99728e3425de..80b4acce4e48eb8b4c19e93c8422477d3ed300ee 100644 (file)
@@ -1,3 +1,13 @@
+2018-02-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * dwarf.c (dwarf_regnames_riscv): New register name table.
+       (init_dwarf_regnames_riscv): New function.
+       (init_dwarf_regnames): Add call to initialise RiscV register
+       names.
+       * dwarf.h (init_dwarf_regnames_riscv): Declare.
+       * objdump.c (dump_dwarf): Add call to initialise RiscV register
+       names.
+
 2018-02-01  Alan Modra  <amodra@gmail.com>
 
        PR 22769
index 6dee8aae59e59b1587345d809e4905cf0bc61f75..71fdf3910807b629d37679f449234d17c1bccd50 100644 (file)
@@ -7065,6 +7065,27 @@ init_dwarf_regnames_s390 (void)
   dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_s390);
 }
 
+static const char *const dwarf_regnames_riscv[] =
+{
+ "zero", "ra",   "sp",   "gp",  "tp",  "t0",  "t1",  "t2",  /* 0  - 7 */
+ "s0",   "s1",   "a0",   "a1",  "a2",  "a3",  "a4",  "a5",  /* 8  - 15 */
+ "a6",   "a7",   "s2",   "s3",  "s4",  "s5",  "s6",  "s7",  /* 16 - 23 */
+ "s8",   "s9",   "s10",  "s11", "t3",  "t4",  "t5",  "t6",  /* 24 - 31 */
+ "ft0",  "ft1",  "ft2",  "ft3", "ft4", "ft5", "ft6", "ft7", /* 32 - 39 */
+ "fs0",  "fs1",                                             /* 40 - 41 */
+ "fa0",  "fa1",  "fa2",  "fa3", "fa4", "fa5", "fa6", "fa7", /* 42 - 49 */
+ "fs2",  "fs3",  "fs4",  "fs5", "fs6", "fs7", "fs8", "fs9", /* 50 - 57 */
+ "fs10", "fs11",                                            /* 58 - 59 */
+ "ft8",  "ft9",  "ft10", "ft11"                             /* 60 - 63 */
+};
+
+void
+init_dwarf_regnames_riscv (void)
+{
+  dwarf_regnames = dwarf_regnames_riscv;
+  dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_riscv);
+}
+
 void
 init_dwarf_regnames (unsigned int e_machine)
 {
@@ -7092,6 +7113,10 @@ init_dwarf_regnames (unsigned int e_machine)
       init_dwarf_regnames_s390 ();
       break;
 
+    case EM_RISCV:
+      init_dwarf_regnames_riscv ();
+      break;
+
     default:
       break;
     }
index 7f7c79d42447cd9e43db2ca0ce27a99eb124ccff..34c2f5ff12d91b219aa6fb12a0ff8dad3db86bfa 100644 (file)
@@ -221,6 +221,7 @@ 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 void init_dwarf_regnames_riscv (void);
 
 extern bfd_boolean  load_debug_section (enum dwarf_section_display_enum, void *);
 extern void         free_debug_section (enum dwarf_section_display_enum);
index d8dca90f40c87c9bfd437c374f123ba5625a5b1d..37a9f0d2e16be2024126607e50227edb8285e95a 100644 (file)
@@ -2732,6 +2732,10 @@ dump_dwarf (bfd *abfd)
       init_dwarf_regnames_s390 ();
       break;
 
+    case bfd_arch_riscv:
+      init_dwarf_regnames_riscv ();
+      break;
+
     default:
       break;
     }