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.
+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.
2016-06-21 Andreas Arnez <arnez@linux.vnet.ibm.com>
* linux-s390-low.c (s390_emit_eq_goto): Mark function static.
}
/* This function should only be called if LWP got a SYSCALL_SIGTRAP.
}
/* 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. */
-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;
{
struct thread_info *saved_thread;
struct regcache *regcache;
if (the_low_target.get_syscall_trapinfo == NULL)
{
/* If we cannot get the syscall trapinfo, report an unknown
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. */
*sysno = UNKNOWN_SYSCALL;
*sysno = UNKNOWN_SYSCALL;
current_thread = get_lwp_thread (lwp);
regcache = get_thread_regcache (current_thread, 1);
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);
- {
- 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;
}
current_thread = saved_thread;
}
gdb_catch_this_syscall_p (struct lwp_info *event_child)
{
int i, iter;
gdb_catch_this_syscall_p (struct lwp_info *event_child)
{
int i, iter;
struct thread_info *thread = get_lwp_thread (event_child);
struct process_info *proc = get_thread_process (thread);
struct thread_info *thread = get_lwp_thread (event_child);
struct process_info *proc = get_thread_process (thread);
if (VEC_index (int, proc->syscalls_to_catch, 0) == ANY_SYSCALL)
return 1;
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++)
for (i = 0;
VEC_iterate (int, proc->syscalls_to_catch, i, iter);
i++)
if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
{
if (WSTOPSIG (w) == SYSCALL_SIGTRAP)
{
get_syscall_trapinfo (event_child,
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
ourstatus->kind = event_child->syscall_state;
}
else if (current_thread->last_resume_kind == resume_stop
/* See target.h. */
int (*supports_hardware_single_step) (void);
/* 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);
/* See target.h. */
int (*get_ipa_tdesc_idx) (void);
code. This should only be called if LWP got a SYSCALL_SIGTRAP. */
static 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;
{
int use_64bit = register_size (regcache->tdesc, 0) == 8;
if (use_64bit)
{
long l_sysno;
collect_register_by_name (regcache, "orig_rax", &l_sysno);
collect_register_by_name (regcache, "orig_rax", &l_sysno);
- collect_register_by_name (regcache, "rax", &l_sysret);
- *sysret = (int) l_sysret;
- {
- collect_register_by_name (regcache, "orig_eax", sysno);
- collect_register_by_name (regcache, "eax", sysret);
- }
+ collect_register_by_name (regcache, "orig_eax", sysno);