public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: John Baldwin <jhb@FreeBSD.org>
To: gdb-patches@sourceware.org,	binutils@sourceware.org
Subject: [PATCH v2 0/6] Support kernel-backed user threads on FreeBSD
Date: Wed, 13 Jan 2016 21:46:00 -0000	[thread overview]
Message-ID: <1452721551-657-1-git-send-email-jhb@FreeBSD.org> (raw)

This set of patches adds support for examining kernel-backed user threads on
FreeBSD.  There is more history in a comment in fbsd-nat.c, but this target
uses ptrace directly (instead of libthread_db) to support the current
threading library (libthr) on FreeBSD which uses a kernel thread for each
user thread.  Support for thread names in both core dumps (via FreeBSD's
OS-specific NT_THRMISC core note) and live is supported as is scheduler
locking.  gcore generates register notes for each thread as well.

The first two patches are to binutils to support FreeBSD-specific core
notes.  The last four are to GDB.

Changes since the first version are that ptids for fbsd-nat always include
an LWP.  The default ptid for an inferior is changed to include the lwp
via thread_change_ptid() on the first stop in fbsd_wait().

I also changed the fork tracing to include the LWP of the new child process
in the ptid for the child from the start.  I did not let the new child
"auto-discover" its LWP due to the following race:

The first stop of a new child process is not reported directly to the main
loop (it is reported instead via the 'related_pid' of the parent process
fork event).  As such, there is no 'thread' in gdb yet whose ptid can be
updated to include the LWP when that first stop is reported.  If the next
stop from the child process reports the birth of a new LWP, the existing
logic would have use that LWP to replace the sole thread and would not
include the "main" thread in the thread list.  Rather than rescanning all
threads in that case, it seems simpler and more straightforward to simulate
the effect of thread_change_ptid() on the first child stop by reporting the
full ptid (including LWP) of the new child process in 'related_pid'.

John Baldwin (6):
  Add support to readelf for reading FreeBSD ELF core notes.
  Add a psuedosection for the NT_FREEBSD_THRMISC note.
  Display per-thread information for threads in FreeBSD cores.
  Use LWP IDs with ptrace register requests on FreeBSD.
  Add support for LWP-based threads on FreeBSD.
  Dump register notes for each thread when generating a FreeBSD core.

 bfd/ChangeLog         |   4 +
 bfd/elf.c             |   7 +
 binutils/ChangeLog    |   5 +
 binutils/readelf.c    |  35 +++++
 gdb/ChangeLog         |  71 +++++++++
 gdb/amd64bsd-nat.c    |  35 +++--
 gdb/config.in         |   3 +
 gdb/configure         |  16 ++
 gdb/configure.ac      |   7 +
 gdb/fbsd-nat.c        | 414 ++++++++++++++++++++++++++++++++++++++++++++++----
 gdb/fbsd-tdep.c       | 185 ++++++++++++++++++----
 gdb/i386bsd-nat.c     |  41 +++--
 gdb/ppcfbsd-nat.c     |  23 ++-
 include/elf/ChangeLog |  27 ++++
 include/elf/common.h  |  14 ++
 15 files changed, 797 insertions(+), 90 deletions(-)
 create mode 100644 include/elf/ChangeLog

-- 
2.7.0

             reply	other threads:[~2016-01-13 21:46 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-13 21:46 John Baldwin [this message]
2016-01-13 21:46 ` [PATCH v2 3/6] Display per-thread information for threads in FreeBSD cores John Baldwin
2016-01-14 15:03   ` Pedro Alves
2016-01-15 20:23     ` John Baldwin
2016-01-18 12:27       ` Pedro Alves
2016-01-18 17:06         ` John Baldwin
2016-01-18 17:13           ` Pedro Alves
2016-01-13 21:46 ` [PATCH v2 6/6] Dump register notes for each thread when generating a FreeBSD core John Baldwin
2016-01-14 15:34   ` Pedro Alves
2016-01-13 21:46 ` [PATCH v2 1/6] Add support to readelf for reading FreeBSD ELF core notes John Baldwin
2016-01-14  5:30   ` Alan Modra
2016-01-14  5:40     ` John Baldwin
2016-01-13 21:46 ` [PATCH v2 2/6] Add a psuedosection for the NT_FREEBSD_THRMISC note John Baldwin
2016-01-14  5:30   ` Alan Modra
2016-01-13 21:52 ` [PATCH v2 4/6] Use LWP IDs with ptrace register requests on FreeBSD John Baldwin
2016-01-14 15:07   ` Pedro Alves
2016-01-15 20:23     ` John Baldwin
2016-01-15 21:41       ` Pedro Alves
2016-01-15 23:54         ` John Baldwin
2016-01-16 14:39           ` Pedro Alves
2016-01-16 19:17             ` John Baldwin
2016-01-13 21:52 ` [PATCH v2 5/6] Add support for LWP-based threads " John Baldwin
2016-01-14 15:29   ` Pedro Alves
2016-01-15 23:54     ` John Baldwin
2016-01-16 14:47       ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1452721551-657-1-git-send-email-jhb@FreeBSD.org \
    --to=jhb@freebsd.org \
    --cc=binutils@sourceware.org \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).