[PATCH v3 0/7] Thread handle to thread info mapping

Kevin Buettner
2017-07-19T00:42:04Z

This patch set introduces support for mapping thread handles to the
thread_info structs which GDB uses to keep track of threads in the
inferiors which it's debugging. I need this in order to find the GDB
thread which corresponds to a saved thread handle (e.g. pthread_t)
within an implementation of a thread library built atop pthreads.
The mechanism is general enough however to support other thread
handle representations as well.

Simon reviewed the v2 version of these patches and found a number
of problems. I believe I have addressed all of these in this new
patch set.

Pedro noticed a fundamental problem with v2 patch series - the
mapping operation did not take into account the inferior! After a
fork, the parent and the child will have the same sets of thread
handles at the same addresses. These v3 patches also address this
problem.

Part 1 introduces a target method which maps a thread handle to
the corresponding internal GDB thread object, i.e. something of type
`struct thread_info *'. An implementation of this new method is
provided for the Linux thread target. Additional work will be
required, over time, for other thread targets.

Part 2 adds a python interface for the mechanism introduced in part 1.

Part 3 is a documentation patch. It has been adjusted to address Eli's
concerns in an earlier patch series. Simon also proposed some changes
which I've incorporated.

Part 4 adds a test case. I've incorporated Simon's suggestions from
his review of the v2 patchset.

Part 5 is a bug fix for a problem discovered while working on part 6.

Part 6 adds support for remote targets.

Part 7 is a documentation patch for the remote protocol changes that
were implemented in part 6.