PR gas/14201
[deliverable/binutils-gdb.git] / gdb / corelow.c
index f566b2d89b25c597e4e1d7a17d8ac0615a3355d0..dd625604c935b2642c2be40c1dd870f431ad4eb9 100644 (file)
@@ -440,14 +440,17 @@ core_open (char *filename, int from_tty)
   siggy = bfd_core_file_failing_signal (core_bfd);
   if (siggy > 0)
     {
-      /* NOTE: gdb_signal_from_host() converts a target signal
-        value into gdb's internal signal value.  Unfortunately gdb's
-        internal value is called ``gdb_signal'' and this function
-        got the name ..._from_host().  */
+      /* If we don't have a CORE_GDBARCH to work with, assume a native
+        core (map gdb_signal from host signals).  If we do have
+        CORE_GDBARCH to work with, but no gdb_signal_from_target
+        implementation for that gdbarch, as a fallback measure,
+        assume the host signal mapping.  It'll be correct for native
+        cores, but most likely incorrect for cross-cores.  */
       enum gdb_signal sig = (core_gdbarch != NULL
-                      ? gdbarch_gdb_signal_from_host (core_gdbarch,
-                                                      siggy)
-                      : gdb_signal_from_host (siggy));
+                            && gdbarch_gdb_signal_from_target_p (core_gdbarch)
+                            ? gdbarch_gdb_signal_from_target (core_gdbarch,
+                                                              siggy)
+                            : gdb_signal_from_host (siggy));
 
       printf_filtered (_("Program terminated with signal %d, %s.\n"),
                       siggy, gdb_signal_to_string (sig));
This page took 0.023513 seconds and 4 git commands to generate.