[PATCH] binutils/riscv: Register names in DWARF output

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] binutils/riscv: Register names in DWARF output

Andrew Burgess
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 | 10 ++++++++++
 binutils/dwarf.c   | 25 +++++++++++++++++++++++++
 binutils/dwarf.h   |  1 +
 binutils/objdump.c |  4 ++++
 4 files changed, 40 insertions(+)

diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 6dee8aae59e..71fdf391080 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -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;
     }
diff --git a/binutils/dwarf.h b/binutils/dwarf.h
index 7f7c79d4244..34c2f5ff12d 100644
--- a/binutils/dwarf.h
+++ b/binutils/dwarf.h
@@ -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);
diff --git a/binutils/objdump.c b/binutils/objdump.c
index d8dca90f40c..37a9f0d2e16 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -2732,6 +2732,10 @@ dump_dwarf (bfd *abfd)
       init_dwarf_regnames_s390 ();
       break;
 
+    case bfd_arch_riscv:
+      init_dwarf_regnames_riscv ();
+      break;
+
     default:
       break;
     }
--
2.12.2

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] binutils/riscv: Register names in DWARF output

Nick Clifton
Hi Andrew,

> 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.

Approved - please apply.

Cheers
  Nick
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] binutils/riscv: Register names in DWARF output

Palmer Dabbelt-2
On Fri, 02 Feb 2018 08:43:22 PST (-0800), Nick Clifton wrote:

> Hi Andrew,
>
>> 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.
>
> Approved - please apply.

Thanks!