]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[Morello] Disable displaced stepping for Morello
authorLuis Machado <luis.machado@arm.com>
Mon, 28 Sep 2020 19:32:03 +0000 (16:32 -0300)
committerLuis Machado <luis.machado@linaro.org>
Tue, 20 Oct 2020 18:06:14 +0000 (15:06 -0300)
Morello can't support displaced stepping at the moment given it has no API
to write capabilities, which is needed when GDB needs to adjust the X and C
registers during a displaced stepping operation.

gdb/ChangeLog:

2020-10-20  Luis Machado  <luis.machado@arm.com>

* aarch64-linux-tdep.c (aarch64_linux_init_abi): Only set displaced
stepping hooks for non-Morello targets.

gdb/ChangeLog
gdb/aarch64-linux-tdep.c

index 850bb825e2be1f01b506bee6fd5facb7eb28b9c5..d088ccf09a3dbee00d1eecca35ea25fd894d8c0d 100644 (file)
@@ -1,3 +1,8 @@
+2020-10-20  Luis Machado  <luis.machado@arm.com>
+
+       * aarch64-linux-tdep.c (aarch64_linux_init_abi): Only set displaced
+       stepping hooks for non-Morello targets.
+
 2020-10-20  Luis Machado  <luis.machado@arm.com>
 
        * aarch64-tdep.c (aarch64_displaced_step_data) <gdbarch>: New field.
index df91af217ed8438d1c269c98aab31f255e50bae7..70b2224a0f016ad540f950511fd8b6f4fbc33613 100644 (file)
@@ -1808,12 +1808,6 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   set_xml_syscall_file_name (gdbarch, "syscalls/aarch64-linux.xml");
   set_gdbarch_get_syscall_number (gdbarch, aarch64_linux_get_syscall_number);
 
-  /* Displaced stepping.  */
-  set_gdbarch_max_insn_length (gdbarch, 4 * AARCH64_DISPLACED_MODIFIED_INSNS);
-  set_gdbarch_displaced_step_copy_insn (gdbarch,
-                                       aarch64_displaced_step_copy_insn);
-  set_gdbarch_displaced_step_fixup (gdbarch, aarch64_displaced_step_fixup);
-  set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location);
   set_gdbarch_displaced_step_hw_singlestep (gdbarch,
                                            aarch64_displaced_step_hw_singlestep);
 
@@ -1824,6 +1818,20 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
       set_gdbarch_report_signal_info (gdbarch,
                                      aarch64_linux_report_signal_info);
     }
+  else
+    {
+      /* Displaced stepping.  */
+      /* Note: Morello does not support displaced stepping yet because
+        adjustments to GPR's may not be correct.  This is because GDB can't
+        make adjustments to the upper 65 bits of the C registers.  */
+      set_gdbarch_max_insn_length (gdbarch,
+                                  4 * AARCH64_DISPLACED_MODIFIED_INSNS);
+      set_gdbarch_displaced_step_copy_insn (gdbarch,
+                                           aarch64_displaced_step_copy_insn);
+      set_gdbarch_displaced_step_fixup (gdbarch, aarch64_displaced_step_fixup);
+      set_gdbarch_displaced_step_location (gdbarch,
+                                          linux_displaced_step_location);
+    }
 }
 
 void _initialize_aarch64_linux_tdep ();