aboutsummaryrefslogtreecommitdiff
path: root/binutils/dwarf.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/dwarf.c')
-rw-r--r--binutils/dwarf.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 79a18e3..e8425b9 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -8796,6 +8796,27 @@ init_dwarf_regnames_riscv (void)
dwarf_regnames_lookup_func = regname_internal_riscv;
}
+static const char *const dwarf_regnames_loongarch[] =
+{
+ "$zero", "$ra", "$tp", "$sp", "$a0", "$a1", "$a2", "$a3", /* 0-7 */
+ "$a4", "$a5", "$a6", "$a7", "$t0", "$t1", "$t2", "$t3", /* 8-15 */
+ "$t4", "$t5", "$t6", "$t7", "$t8", "$r21","$fp", "$s0", /* 16-23 */
+ "$s1", "$s2", "$s3", "$s4", "$s5", "$s6", "$s7", "$s8", /* 24-31 */
+ "$fa0", "$fa1", "$fa2", "$fa3", "$fa4", "$fa5", "$fa6", /* 32-38 */
+ "$fa7", "$ft0", "$ft1", "$ft2", "$ft3", "$ft4", "$ft5", /* 39-45 */
+ "$ft6", "$ft7", "$ft8", "$ft9", "$ft10", "$ft11", "$ft12", /* 46-52 */
+ "$ft13", "$ft14", "$ft15", "$fs0", "$fs1", "$fs2", "$fs3", /* 53-59 */
+ "$fs4", "$fs5", "$fs6", "$fs7", /* 60-63 */
+};
+
+static void
+init_dwarf_regnames_loongarch (void)
+{
+ dwarf_regnames = dwarf_regnames_loongarch;
+ dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_loongarch);
+ dwarf_regnames_lookup_func = regname_internal_by_table_only;
+}
+
void
init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine)
{
@@ -8830,6 +8851,10 @@ init_dwarf_regnames_by_elf_machine_code (unsigned int e_machine)
init_dwarf_regnames_riscv ();
break;
+ case EM_LOONGARCH:
+ init_dwarf_regnames_loongarch ();
+ break;
+
default:
break;
}
@@ -8879,6 +8904,10 @@ init_dwarf_regnames_by_bfd_arch_and_mach (enum bfd_architecture arch,
init_dwarf_regnames_riscv ();
break;
+ case bfd_arch_loongarch:
+ init_dwarf_regnames_loongarch ();
+ break;
+
default:
break;
}