Migrate the x86 MPX handle_segmentation_fault hook to report_signal_info.
authorJohn Baldwin <jhb@FreeBSD.org>
Wed, 22 Jul 2020 00:28:16 +0000 (17:28 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Wed, 22 Jul 2020 00:28:16 +0000 (17:28 -0700)
gdb/ChangeLog:

* amd64-linux-tdep.c (amd64_linux_init_abi_common): Use
i386_linux_report_signal_info instead of
i386_linux_handle_segmentation_fault.
* i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Rename
to i386_linux_report_signal_info and add siggnal argument.
(i386_linux_init_abi): Use i386_linux_report_signal_info instead
of i386_linux_handle_segmentation_fault.
* i386-linux-tdep.h (i386_linux_handle_segmentation_fault): Rename
to i386_linux_report_signal_info and add siggnal argument.

gdb/ChangeLog
gdb/amd64-linux-tdep.c
gdb/i386-linux-tdep.c
gdb/i386-linux-tdep.h

index 1bd80b6762e33fd70ed38cd5a5643420cc9a7f1d..edb2cb72685a0fb7cc67a6b49d3c4e8a828e0f6a 100644 (file)
@@ -1,3 +1,15 @@
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+       * amd64-linux-tdep.c (amd64_linux_init_abi_common): Use
+       i386_linux_report_signal_info instead of
+       i386_linux_handle_segmentation_fault.
+       * i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Rename
+       to i386_linux_report_signal_info and add siggnal argument.
+       (i386_linux_init_abi): Use i386_linux_report_signal_info instead
+       of i386_linux_handle_segmentation_fault.
+       * i386-linux-tdep.h (i386_linux_handle_segmentation_fault): Rename
+       to i386_linux_report_signal_info and add siggnal argument.
+
 2020-07-21  John Baldwin  <jhb@FreeBSD.org>
 
        * corelow.c (core_target_open): Invoke gdbarch report_signal_info
index 44ecb4e0b3382a547509fd5afb6040352d0d7e74..42000159bd86a5e64017bc5e3e751d8564845bdd 100644 (file)
@@ -1846,8 +1846,7 @@ amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch)
   set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal);
 
   set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type);
-  set_gdbarch_handle_segmentation_fault (gdbarch,
-                                        i386_linux_handle_segmentation_fault);
+  set_gdbarch_report_signal_info (gdbarch, i386_linux_report_signal_info);
 }
 
 static void
index c576b31956647839445adcbbfe8bed6dfee7dced..7270931f016eb0323eec1945316d14173ebd5f48 100644 (file)
@@ -388,19 +388,19 @@ i386_canonicalize_syscall (int syscall)
 
 #define SIG_CODE_BONDARY_FAULT 3
 
-/* i386 GNU/Linux implementation of the handle_segmentation_fault
+/* i386 GNU/Linux implementation of the report_signal_info
    gdbarch hook.  Displays information related to MPX bound
    violations.  */
 void
-i386_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
-                                     struct ui_out *uiout)
+i386_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
+                              enum gdb_signal siggnal)
 {
   /* -Wmaybe-uninitialized  */
   CORE_ADDR lower_bound = 0, upper_bound = 0, access = 0;
   int is_upper;
   long sig_code = 0;
 
-  if (!i386_mpx_enabled ())
+  if (!i386_mpx_enabled () || siggnal != GDB_SIGNAL_SEGV)
     return;
 
   try
@@ -1073,8 +1073,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
                                   i386_linux_get_syscall_number);
 
   set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type);
-  set_gdbarch_handle_segmentation_fault (gdbarch,
-                                        i386_linux_handle_segmentation_fault);
+  set_gdbarch_report_signal_info (gdbarch, i386_linux_report_signal_info);
 }
 
 void _initialize_i386_linux_tdep ();
index b54352694a362eae1853ee6fe6e3a67a2128aedf..c3bfdcd830ccf5a89b2262a81f801c9f02c3e5aa 100644 (file)
@@ -39,8 +39,9 @@ extern uint64_t i386_linux_core_read_xcr0 (bfd *abfd);
 
 /* Handle and display information related to the MPX bound violation
    to the user.  */
-extern void i386_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
-                                                 struct ui_out *uiout);
+extern void i386_linux_report_signal_info (struct gdbarch *gdbarch,
+                                          struct ui_out *uiout,
+                                          enum gdb_signal siggnal);
 
 /* Return the target description according to XCR0.  */
 extern const struct target_desc *i386_linux_read_description (uint64_t xcr0);