diff options
Diffstat (limited to 'gdb/gdbserver/linux-x86-low.c')
-rw-r--r-- | gdb/gdbserver/linux-x86-low.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index 8ddb5530e9d..49e9e5551b5 100644 --- a/gdb/gdbserver/linux-x86-low.c +++ b/gdb/gdbserver/linux-x86-low.c @@ -792,8 +792,10 @@ compat_siginfo_from_siginfo (compat_siginfo_t *to, siginfo_t *from) to->si_errno = from->si_errno; to->si_code = from->si_code; - if (to->si_code < 0) + if (to->si_code == SI_TIMER) { + to->cpt_si_timerid = from->si_timerid; + to->cpt_si_overrun = from->si_overrun; to->cpt_si_ptr = (intptr_t) from->si_ptr; } else if (to->si_code == SI_USER) @@ -801,10 +803,10 @@ compat_siginfo_from_siginfo (compat_siginfo_t *to, siginfo_t *from) to->cpt_si_pid = from->si_pid; to->cpt_si_uid = from->si_uid; } - else if (to->si_code == SI_TIMER) + else if (to->si_code < 0) { - to->cpt_si_timerid = from->si_timerid; - to->cpt_si_overrun = from->si_overrun; + to->cpt_si_pid = from->si_pid; + to->cpt_si_uid = from->si_uid; to->cpt_si_ptr = (intptr_t) from->si_ptr; } else @@ -846,8 +848,10 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from) to->si_errno = from->si_errno; to->si_code = from->si_code; - if (to->si_code < 0) + if (to->si_code == SI_TIMER) { + to->si_timerid = from->cpt_si_timerid; + to->si_overrun = from->cpt_si_overrun; to->si_ptr = (void *) (intptr_t) from->cpt_si_ptr; } else if (to->si_code == SI_USER) @@ -855,10 +859,10 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from) to->si_pid = from->cpt_si_pid; to->si_uid = from->cpt_si_uid; } - else if (to->si_code == SI_TIMER) + else if (to->si_code < 0) { - to->si_timerid = from->cpt_si_timerid; - to->si_overrun = from->cpt_si_overrun; + to->si_pid = from->cpt_si_pid; + to->si_uid = from->cpt_si_uid; to->si_ptr = (void *) (intptr_t) from->cpt_si_ptr; } else |