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] Remove parameter sysret from linux_target_ops.get_syscall_trapinfo


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

commit 4cc32bec04aadc5c070d0f4aee656313a4854c11
Author: Yao Qi <yao.qi@linaro.org>
Date:   Tue Jun 28 12:02:35 2016 +0100

    Remove parameter sysret from linux_target_ops.get_syscall_trapinfo
    
    When I implement linux_target_ops.get_syscall_trapinfo for aarch64 and arm,
    I find the second parameter sysret isn't used at all.  In RSP, we don't
    need syscall return value either, because GDB can figure out the return
    value from registers content got by 'g' packet.
    
    This patch is to remove them.
    
    gdb/gdbserver:
    
    2016-06-28  Yao Qi  <yao.qi@linaro.org>
    
    	* linux-low.c (get_syscall_trapinfo): Remove parameter sysret.
    	Callers updated.
    	* linux-low.h (struct linux_target_ops) <get_syscall_trapinfo>:
    	Remove parameter sysno.
    	* linux-x86-low.c (x86_get_syscall_trapinfo): Remove parameter
    	sysret.

Diff:
---
 gdb/gdbserver/ChangeLog       |  9 +++++++++
 gdb/gdbserver/linux-low.c     | 23 ++++++++---------------
 gdb/gdbserver/linux-low.h     |  8 +++-----
 gdb/gdbserver/linux-x86-low.c | 10 ++--------
 4 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 42090f5..cde2370 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,12 @@
+2016-06-28  Yao Qi  <yao.qi@linaro.org>
+
+	* linux-low.c (get_syscall_trapinfo): Remove parameter sysret.
+	Callers updated.
+	* linux-low.h (struct linux_target_ops) <get_syscall_trapinfo>:
+	Remove parameter sysno.
+	* linux-x86-low.c (x86_get_syscall_trapinfo): Remove parameter
+	sysret.
+
 2016-06-21  Andreas Arnez  <arnez@linux.vnet.ibm.com>
 
 	* linux-s390-low.c (s390_emit_eq_goto): Mark function static.
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index dd92e78..0f4bb87 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -758,11 +758,10 @@ get_pc (struct lwp_info *lwp)
 }
 
 /* This function should only be called if LWP got a SYSCALL_SIGTRAP.
-   Fill *SYSNO with the syscall nr trapped.  Fill *SYSRET with the
-   return code.  */
+   Fill *SYSNO with the syscall nr trapped.  */
 
 static void
-get_syscall_trapinfo (struct lwp_info *lwp, int *sysno, int *sysret)
+get_syscall_trapinfo (struct lwp_info *lwp, int *sysno)
 {
   struct thread_info *saved_thread;
   struct regcache *regcache;
@@ -770,9 +769,8 @@ get_syscall_trapinfo (struct lwp_info *lwp, int *sysno, int *sysret)
   if (the_low_target.get_syscall_trapinfo == NULL)
     {
       /* If we cannot get the syscall trapinfo, report an unknown
-	 system call number and -ENOSYS return value.  */
+	 system call number.  */
       *sysno = UNKNOWN_SYSCALL;
-      *sysret = -ENOSYS;
       return;
     }
 
@@ -780,13 +778,10 @@ get_syscall_trapinfo (struct lwp_info *lwp, int *sysno, int *sysret)
   current_thread = get_lwp_thread (lwp);
 
   regcache = get_thread_regcache (current_thread, 1);
-  (*the_low_target.get_syscall_trapinfo) (regcache, sysno, sysret);
+  (*the_low_target.get_syscall_trapinfo) (regcache, sysno);
 
   if (debug_threads)
-    {
-      debug_printf ("get_syscall_trapinfo sysno %d sysret %d\n",
-		    *sysno, *sysret);
-    }
+    debug_printf ("get_syscall_trapinfo sysno %d\n", *sysno);
 
   current_thread = saved_thread;
 }
@@ -3116,7 +3111,7 @@ static int
 gdb_catch_this_syscall_p (struct lwp_info *event_child)
 {
   int i, iter;
-  int sysno, sysret;
+  int sysno;
   struct thread_info *thread = get_lwp_thread (event_child);
   struct process_info *proc = get_thread_process (thread);
 
@@ -3126,7 +3121,7 @@ gdb_catch_this_syscall_p (struct lwp_info *event_child)
   if (VEC_index (int, proc->syscalls_to_catch, 0) == ANY_SYSCALL)
     return 1;
 
-  get_syscall_trapinfo (event_child, &sysno, &sysret);
+  get_syscall_trapinfo (event_child, &sysno);
   for (i = 0;
        VEC_iterate (int, proc->syscalls_to_catch, i, iter);
        i++)
@@ -3734,10 +3729,8 @@ linux_wait_1 (ptid_t ptid,
 
   if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
     {
-      int sysret;
-
       get_syscall_trapinfo (event_child,
-			    &ourstatus->value.syscall_number, &sysret);
+			    &ourstatus->value.syscall_number);
       ourstatus->kind = event_child->syscall_state;
     }
   else if (current_thread->last_resume_kind == resume_stop
diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h
index 6e7ddbd..5057e66 100644
--- a/gdb/gdbserver/linux-low.h
+++ b/gdb/gdbserver/linux-low.h
@@ -241,11 +241,9 @@ struct linux_target_ops
   /* See target.h.  */
   int (*supports_hardware_single_step) (void);
 
-  /* Fill *SYSNO with the syscall nr trapped.  Fill *SYSRET with the
-     return code.  Only to be called when inferior is stopped
-     due to SYSCALL_SIGTRAP.  */
-  void (*get_syscall_trapinfo) (struct regcache *regcache,
-				int *sysno, int *sysret);
+  /* Fill *SYSNO with the syscall nr trapped.  Only to be called when
+     inferior is stopped due to SYSCALL_SIGTRAP.  */
+  void (*get_syscall_trapinfo) (struct regcache *regcache, int *sysno);
 
   /* See target.h.  */
   int (*get_ipa_tdesc_idx) (void);
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c
index 2535959..5080dec 100644
--- a/gdb/gdbserver/linux-x86-low.c
+++ b/gdb/gdbserver/linux-x86-low.c
@@ -991,25 +991,19 @@ x86_arch_setup (void)
    code.  This should only be called if LWP got a SYSCALL_SIGTRAP.  */
 
 static void
-x86_get_syscall_trapinfo (struct regcache *regcache, int *sysno, int *sysret)
+x86_get_syscall_trapinfo (struct regcache *regcache, int *sysno)
 {
   int use_64bit = register_size (regcache->tdesc, 0) == 8;
 
   if (use_64bit)
     {
       long l_sysno;
-      long l_sysret;
 
       collect_register_by_name (regcache, "orig_rax", &l_sysno);
-      collect_register_by_name (regcache, "rax", &l_sysret);
       *sysno = (int) l_sysno;
-      *sysret = (int) l_sysret;
     }
   else
-    {
-      collect_register_by_name (regcache, "orig_eax", sysno);
-      collect_register_by_name (regcache, "eax", sysret);
-    }
+    collect_register_by_name (regcache, "orig_eax", sysno);
 }
 
 static int


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