This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] [C++/mingw] gdbserver: gdb/host signal mixup


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ce7715e2594db00b2f434f62aa264a1061221b72

commit ce7715e2594db00b2f434f62aa264a1061221b72
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Nov 17 15:17:45 2015 +0000

    [C++/mingw] gdbserver: gdb/host signal mixup
    
    Building in C++ caught a buglet here:
    
    ../../../src/gdb/gdbserver/win32-low.c: In function 'void win32_resume(thread_resume*, size_t)':
    ../../../src/gdb/gdbserver/win32-low.c:929:11: error: invalid conversion from 'int' to 'gdb_signal' [-fpermissive]
           sig = resume_info[0].sig;
               ^
    ../../../src/gdb/gdbserver/win32-low.c:934:11: error: invalid conversion from 'int' to 'gdb_signal' [-fpermissive]
           sig = 0;
               ^
    
    Signals in the "struct thread_resume" structure are host signals, not
    gdb signals.  The current code happens to work because the only
    signals that the Windows port supports have the same number as the gdb
    equivalent (see handle_exception for the win32 exception -> gdb signal
    mapping).
    
    gdb/gdbserver/ChangeLog:
    2015-11-17  Pedro Alves  <palves@redhat.com>
    
    	* win32-low.c (win32_resume): Use gdb_signal_from_host,
    	GDB_SIGNAL_0 and gdb_signal_to_string.

Diff:
---
 gdb/gdbserver/ChangeLog   |  5 +++++
 gdb/gdbserver/win32-low.c | 10 ++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 589897d..a919a08 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
 2015-11-17  Pedro Alves  <palves@redhat.com>
 
+	* win32-low.c (win32_resume): Use gdb_signal_from_host,
+	GDB_SIGNAL_0 and gdb_signal_to_string.
+
+2015-11-17  Pedro Alves  <palves@redhat.com>
+
 	* win32-low.c (handle_output_debug_string): Remove parameter.
 	(win32_kill): Remove our_status local and adjust call to
 	handle_output_debug_string.
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index b1a2e56..b1de139 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -926,12 +926,12 @@ win32_resume (struct thread_resume *resume_info, size_t n)
 
   if (!ptid_equal (resume_info[0].thread, minus_one_ptid))
     {
-      sig = resume_info[0].sig;
+      sig = gdb_signal_from_host (resume_info[0].sig);
       step = resume_info[0].kind == resume_step;
     }
   else
     {
-      sig = 0;
+      sig = GDB_SIGNAL_0;
       step = 0;
     }
 
@@ -939,12 +939,14 @@ win32_resume (struct thread_resume *resume_info, size_t n)
     {
       if (current_event.dwDebugEventCode != EXCEPTION_DEBUG_EVENT)
 	{
-	  OUTMSG (("Cannot continue with signal %d here.\n", sig));
+	  OUTMSG (("Cannot continue with signal %s here.\n",
+		   gdb_signal_to_string (sig)));
 	}
       else if (sig == last_sig)
 	continue_status = DBG_EXCEPTION_NOT_HANDLED;
       else
-	OUTMSG (("Can only continue with recieved signal %d.\n", last_sig));
+	OUTMSG (("Can only continue with received signal %s.\n",
+		 gdb_signal_to_string (last_sig)));
     }
 
   last_sig = GDB_SIGNAL_0;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]