More changes to support multithreaded debuggees on FreeBSD.
authorDan McNulty <mcnulty@cs.wisc.edu>
Fri, 9 Jul 2010 17:49:54 +0000 (12:49 -0500)
committerDaniel McNulty <mcnulty@cs.wisc.edu>
Mon, 19 Jul 2010 19:13:16 +0000 (14:13 -0500)
commit513b3fbb8b2dc81294a7f38627b5fab038de5adf
tree4ba262d65f536fc74c1af294784409ee4c5b5f7f
parentdde1ff0027a8308e18fbcea68347fc7647b6b756
More changes to support multithreaded debuggees on FreeBSD.

Updates to FreeBSD Makefiles and the RT library with changes only made to 7.2
i386 so far.

Includes a function to determine the initial LWP of a running process.

Includes some reworking of the pc_thread_cont test. These changes will be
overridden by a future commit.

Made miscellaneous bug fixes throughout, work in progress to get iRPC tests
working for multithreaded debuggees on FreeBSD.

The implementation of thread stops and continues was reworked in this commit.
This commit removes the fields pending user continue and pending continue, and
it removes the EventContinue. FreeBSD requires that a process be stopped before
continuing a thread. So to continue a thread in a process with other running
threads, the process must be stopped before issuing the continue. To implement
this, the desync/restore operations on the internal state were used to stop a
process with running threads before continuing a running thread. This
implementation appears in both the threadPool continue and thread continue
functions.

Also encountered a weird bug when attaching to MT debuggees. On attach, all
threads are suspended. When continuing a single of these threads, multiple
threads run which makes ProcControl's state inconsistent with the OS's state.
This commit includes a workaround (see the FreeBSD specific handlers for more
info).
19 files changed:
common/h/freebsdKludges.h
common/i386-unknown-freebsd8.0/Makefile
common/src/freebsdKludges.C
dyninstAPI_RT/src/RTfreebsd.c
make.config
proccontrol/amd64-unknown-freebsd7.2/Makefile
proccontrol/h/Event.h
proccontrol/h/EventType.h
proccontrol/i386-unknown-freebsd8.0/Makefile
proccontrol/src/event.C
proccontrol/src/freebsd.C
proccontrol/src/freebsd.h
proccontrol/src/handler.C
proccontrol/src/int_process.h
proccontrol/src/int_thread_db.C
proccontrol/src/int_thread_db.h
proccontrol/src/irpc.C
proccontrol/src/process.C
testsuite/src/proccontrol/pc_thread_cont.C