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] darwin: Silence syscall deprecated declaration warning


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

commit 6821842f15efaec045d9e38f115af01ddffdaede
Author: Simon Marchi <simon.marchi@polymtl.ca>
Date:   Thu Jul 5 21:50:12 2018 -0400

    darwin: Silence syscall deprecated declaration warning
    
    This patch silences this warning:
    
    /Users/simark/src/binutils-gdb/gdb/darwin-nat.c:839:10: error: 'syscall' is deprecated: first deprecated in macOS 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost(). [-Werror,-Wdeprecated-declarations]
              res = syscall (SYS___pthread_kill, thread->gdb_port, nsignal);
                    ^
    /usr/include/unistd.h:745:6: note: 'syscall' has been explicitly marked deprecated here
    int      syscall(int, ...);
             ^
    
    The comment of the new pthread_kill function explains why we use the
    syscall function directly.
    
    include/ChangeLog:
    
    	* diagnostics.h (DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS):
    	Define for clang.
    
    gdb/ChangeLog:
    
    	* darwin-nat.c (darwin_pthread_kill): New function.
    	(darwin_resume_thread): Use darwin_pthread_kill.

Diff:
---
 gdb/ChangeLog         |  5 +++++
 gdb/darwin-nat.c      | 25 ++++++++++++++++++-------
 include/ChangeLog     |  5 +++++
 include/diagnostics.h |  6 ++++++
 4 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 39165f7..17146e8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* darwin-nat.c (darwin_pthread_kill): New function.
+	(darwin_resume_thread): Use darwin_pthread_kill.
+
 2018-07-05  Tom de Vries  <tdevries@suse.de>
 
 	* macroexp.c (macro_buffer) <operator=>: New member function.
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 5aed285..bb46cfb 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -809,13 +809,24 @@ darwin_send_reply (struct inferior *inf, darwin_thread_t *thread)
   priv->pending_messages--;
 }
 
+/* Wrapper around the __pthread_kill syscall.  We use this instead of the
+   pthread_kill function to be able to send a signal to any kind of thread,
+   including GCD threads.  */
+
+static int
+darwin_pthread_kill (darwin_thread_t *thread, int nsignal)
+{
+  DIAGNOSTIC_PUSH;
+  DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS;
+  int res = syscall (SYS___pthread_kill, thread->gdb_port, nsignal);
+  DIAGNOSTIC_POP;
+  return res;
+}
+
 static void
 darwin_resume_thread (struct inferior *inf, darwin_thread_t *thread,
 		      int step, int nsignal)
 {
-  kern_return_t kret;
-  int res;
-
   inferior_debug
     (3, _("darwin_resume_thread: state=%d, thread=0x%x, step=%d nsignal=%d\n"),
      thread->msg_state, thread->gdb_port, step, nsignal);
@@ -827,8 +838,8 @@ darwin_resume_thread (struct inferior *inf, darwin_thread_t *thread,
 	  && thread->event.ex_data[0] == EXC_SOFT_SIGNAL)
 	{
 	  /* Either deliver a new signal or cancel the signal received.  */
-	  res = PTRACE (PT_THUPDATE, inf->pid,
-			(caddr_t) (uintptr_t) thread->gdb_port, nsignal);
+	  int res = PTRACE (PT_THUPDATE, inf->pid,
+			    (caddr_t) (uintptr_t) thread->gdb_port, nsignal);
 	  if (res < 0)
 	    inferior_debug (1, _("ptrace THUP: res=%d\n"), res);
 	}
@@ -836,7 +847,7 @@ darwin_resume_thread (struct inferior *inf, darwin_thread_t *thread,
 	{
 	  /* Note: ptrace is allowed only if the process is stopped.
 	     Directly send the signal to the thread.  */
-	  res = syscall (SYS___pthread_kill, thread->gdb_port, nsignal);
+	  int res = darwin_pthread_kill (thread, nsignal);
 	  inferior_debug (4, _("darwin_resume_thread: kill 0x%x %d: %d\n"),
 			  thread->gdb_port, nsignal, res);
 	  thread->signaled = 1;
@@ -856,7 +867,7 @@ darwin_resume_thread (struct inferior *inf, darwin_thread_t *thread,
       break;
 
     case DARWIN_STOPPED:
-      kret = thread_resume (thread->gdb_port);
+      kern_return_t kret = thread_resume (thread->gdb_port);
       MACH_CHECK_ERROR (kret);
 
       thread->msg_state = DARWIN_RUNNING;
diff --git a/include/ChangeLog b/include/ChangeLog
index de80801..e7d6d66 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2018-07-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* diagnostics.h (DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS):
+	Define for clang.
+
 2018-07-02  Maciej W. Rozycki  <macro@mips.com>
 
 	PR tdep/8282
diff --git a/include/diagnostics.h b/include/diagnostics.h
index 4a67410..34fc01b 100644
--- a/include/diagnostics.h
+++ b/include/diagnostics.h
@@ -35,6 +35,8 @@
 #if defined (__clang__) /* clang */
 
 # define DIAGNOSTIC_IGNORE_SELF_MOVE DIAGNOSTIC_IGNORE ("-Wself-move")
+# define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS \
+  DIAGNOSTIC_IGNORE ("-Wdeprecated-declarations")
 # define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER \
   DIAGNOSTIC_IGNORE ("-Wdeprecated-register")
 # define DIAGNOSTIC_IGNORE_UNUSED_FUNCTION \
@@ -56,6 +58,10 @@
 # define DIAGNOSTIC_IGNORE_SELF_MOVE
 #endif
 
+#ifndef DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS
+# define DIAGNOSTIC_IGNORE_DEPRECATED_DECLARATIONS
+#endif
+
 #ifndef DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
 # define DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
 #endif


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