Re: [PATCH 03/16 v2] Refactor ptrace extended event status

Pedro Alves
2014-09-09T11:31:48Z

Hi Don,

Let's get this one out of the way.

On 08/21/2014 01:29 AM, Don Breazeal wrote:
> This patch implements functions for identifying and extracting extended
> ptrace event information from a Linux wait status. These are just
> convenience functions intended to hide the ">> 16" used to extract the
> event from the wait status word, replacing the hard-coded shift with a more
> descriptive function call. This is preparatory work for implementation of
> follow-fork and detach-on-fork for extended-remote linux targets.
>
> The functions linux_is_extended_waitstatus and
> linux_ptrace_get_extended_event are defined in nat/linux-ptrace.c, and
> called in linux-nat.c and gdbserver/linux-low.c.
>
> My initial approach was to implement predicates for every extended event,
> e.g. linux_is_traced_clone (status), linux_is_traced_fork (status), but
> that didn't fit the current implementation as well, bloated the code a bit,
> and didn't add anything to readability, so I went with just extracting the
> event bits from the status instead.
>
> Tested on x64 Ubuntu Lucid, native only.

This is OK. Please push.

Though I wonder why not push the SIGTRAP check to
linux_is_extended_waitstatus too.

> gdb/
> 2014-08-20 Don Breazeal <donb@codesourcery.com>
>
> * linux-nat.c (linux_handle_extended_wait): Call
> linux_ptrace_get_extended_event.
> (wait_lwp): Call linux_is_extended_waitstatus.
> (linux_nat_filter_event): Call linux_ptrace_get_extended_event
> and linux_is_extended_waitstatus.
> * nat/linux-ptrace.c (linux_test_for_tracefork): Call
> linux_ptrace_get_extended_event.
> (linux_ptrace_get_extended_event): New function.
> (linux_is_extended_waitstatus): New function.
> * nat/linux-ptrace.h: Declare new functions.

Please spell out the new declarations. Like:

* nat/linux-ptrace.h (linux_ptrace_get_extended_event)
(linux_is_extended_waitstatus): New declarations.

>
> gdbserver/
> 2014-08-20 Don Breazeal <donb@codesourcery.com>
> * linux-low.c (handle_extended_wait): Call

Missing empty line above.

> linux_ptrace_get_extended_event.
> (get_stop_pc, get_detach_signal, linux_low_filter_event): Call
> linux_is_extended_waitstatus.

Thanks,
Pedro Alves