Fetch signal information for native FreeBSD processes.
authorJohn Baldwin <jhb@FreeBSD.org>
Wed, 28 Jun 2017 16:53:06 +0000 (09:53 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Fri, 7 Jul 2017 23:05:47 +0000 (16:05 -0700)
commit929edea98d27cf9d72305c1584ee77627da7fa96
tree011d2a1dc33fc3cf74e3ce9df94e857c4fa60c31
parent762c974a09746bda8a5d64ed3ee887adeae742b9
Fetch signal information for native FreeBSD processes.

Use the `pl_siginfo' field in the `struct ptrace_lwpinfo' object returned
by the PT_LWPINFO ptrace() request to supply the current contents of
$_siginfo for each thread.  Note that FreeBSD does not supply a way to
modify the signal information for a thread, so $_siginfo is read-only for
FreeBSD.

To handle 32-bit processes on a 64-bit host, define types for 32-bit
compatible siginfo_t and convert the 64-bit siginfo_t to the 32-bit
equivalent when supplying information for a 32-bit process.

gdb/ChangeLog:

* fbsd-nat.c [PT_LWPINFO && __LP64__] (union sigval32)
(struct siginfo32): New.
[PT_LWPINFO] (fbsd_siginfo_size, fbsd_convert_siginfo): New.
(fbsd_xfer_partial) [PT_LWPINFO]: Handle TARGET_OBJECT_SIGNAL_INFO
via ptrace(PT_LWPINFO).
gdb/ChangeLog
gdb/fbsd-nat.c