Commit Graph

27 Commits

Author SHA1 Message Date
Oleksiy Vyalov 5d06474b29 Add test for denied process attach by pid and fix found bugs in Process/ProcessPOSIX.cpp
and FreeBSD/ProcessMonitor.

http://reviews.llvm.org/D6240

llvm-svn: 222372
2014-11-19 18:27:45 +00:00
Ed Maste 3967764b98 Fix FreeBSD build after thread changes
More work on the GetName/SetName arguments (thread_t vs tid_t) is needed
but this change should restore the build and basic operation.

llvm-svn: 217502
2014-09-10 13:38:47 +00:00
Zachary Turner 39de311071 Create a HostThread abstraction.
This patch moves creates a thread abstraction that represents a
thread running inside the LLDB process.  This is a replacement for
otherwise using lldb::thread_t, and provides a platform agnostic
interface to managing these threads.

Differential Revision: http://reviews.llvm.org/D5198

Reviewed by: Jim Ingham

llvm-svn: 217460
2014-09-09 20:54:56 +00:00
Todd Fiala 0bce1b67a3 Fix Linux to respect ASLR settings when launching processes to debug locally and remotely.
See the following links for details:
http://llvm.org/bugs/show_bug.cgi?id=20658
See http://reviews.llvm.org/D4941

llvm-svn: 215822
2014-08-17 00:10:50 +00:00
Ed Maste 70882939f1 Implement ProcessMonitor::Kill for FreeBSD
On FreeBSD ptrace(PT_KILL) is used to terminate the traced process
(as if PT_CONTINUE had been used with SIGKILL as the signal to be
delivered), and is the desired behaviour for ProcessPOSIX::DoDestroy.

On Linux, after ptrace(PTRACE_KILL) the traced process still exists
and can be interrogated.  It is only upon resume that it exits as though
it received SIGKILL.

For now I'm committing only the FreeBSD change, until the Linux change
(review D3159) is successfully tested.

http://llvm.org/pr18894

llvm-svn: 205315
2014-04-01 14:30:56 +00:00
Ed Maste a4be2c5dcd FreeBSD hardware watchpoint implementation
Implement x86_64 debug register read/write in support of hardware
watchpoints. Hoist LinuxThread::TraceNotify code back into
POSIXThread::TraceNotify()

Patch by John Wolfe.

We still need to rework this later to avoid the #ifdef FreeBSD.

llvm-reviews.chandlerc.com/D2572
llvm.org/pr16706

llvm-svn: 201706
2014-02-19 18:34:06 +00:00
Ed Maste 1e8f163709 Remove FIXME comments about tids on FreeBSD that no longer apply
Spotted by John Wolfe.

llvm-svn: 200092
2014-01-25 18:45:40 +00:00
Ed Maste 7fd845cc9d Threaded inferior support for FreeBSD
Modelled in part on GDBRemoteCommunicationClient.

Review: http://llvm-reviews.chandlerc.com/D2267
llvm-svn: 196787
2013-12-09 15:51:17 +00:00
Ed Maste 502f9020a7 PT_CONTINUE and PT_STEP are process-scope on FreeBSD
Although ptrace() can be passed a PID or TID for PT_CONTINUE and PT_STEP,
the kernel operates on all threads in the process in both cases.  (See
the FOREACH_THREAD_IN_PROC in FreeBSD's sys_process.c:kern_ptrace.)

Make this clear by using the PID from the ProcessMonitor instance.

llvm-svn: 195656
2013-11-25 16:31:23 +00:00
Ed Maste 68f517938a Add stub FreeBSD ProcessMonitor::ReadThreadPointer
llvm-svn: 192994
2013-10-18 19:16:44 +00:00
Ed Maste 756e1ff676 Apply ProcessMonitor changes from r190820 to FreeBSD
llvm-svn: 190954
2013-09-18 19:34:08 +00:00
Andrew Kaylor d4d5499d6c Fixing a problem with thread creation signal order dependency
llvm-svn: 190831
2013-09-17 00:30:24 +00:00
Ed Maste 819e39901f FreeBSD: Replace GetSignalInfo with GetLwpInfo
For thread support we are going to need other members of struct
ptrace_lwpinfo.

llvm-svn: 186505
2013-07-17 14:02:20 +00:00
Andrew Kaylor bc68b431ba Stop process monitor from ProcessPOSIX::Finalize
llvm-svn: 186039
2013-07-10 21:57:27 +00:00
Andrew Kaylor 6578cb6478 Reverting ProcessMonitor shared pointer changes
llvm-svn: 185981
2013-07-09 22:36:48 +00:00
Andrew Kaylor 214f3a8a78 Use shared pointers to hold the process in ProcessMonitor
llvm-svn: 185946
2013-07-09 16:44:27 +00:00
Ed Maste a02f553e50 Sync parts of FreeBSD Process plugin with Linux
* Use PseudoTerminal to fix stdio handling / passthrough to the inferior
  process.
* Add log messages equivalent to the Linux ones.
* Port changes relating to process creation / termination.

This revision contains changes equivalent to (parts of) SVN revisions
109318 142384 166055 168503 169645 177116 182809.

llvm-svn: 185442
2013-07-02 16:45:16 +00:00
Matt Kopec edee182bef Fix FreeBSD build due to previous changes to ProcessMonitor::Detach.
llvm-svn: 183150
2013-06-03 19:48:53 +00:00
Ashok Thirumurthi acbb1a5db5 Fixed "log enable linux registers" and added a test.
- Eliminated the use of static for methods that read m_register_infos, so that these routines can be implemented in the base class.
- Eliminated m_register_infos in the base class because this is not used when derived classes call UpdateRegisterInfo.
- Also moved the namespace using declarations from headers to source files.

Thanks to Daniel and Samuel for their review feedback.

llvm-svn: 181538
2013-05-09 19:59:47 +00:00
Ashok Thirumurthi 0f3b9b819a Build fixes for FreeBSD 9.1.
- TODO: Support extended register sets on FreeBSD.

Patch by Samuel Jacob.

llvm-svn: 180879
2013-05-01 20:38:19 +00:00
Matt Kopec c6672c8783 Rollback r177173. Some OSs may not have ptrace extensions which lldb expects when building. This needs to be accounted for.
llvm-svn: 177176
2013-03-15 20:00:39 +00:00
Matt Kopec 6773276351 Add ptrace extensions to query a register set.
Patch by Ashok Thirumurthi.

llvm-svn: 177173
2013-03-15 19:06:45 +00:00
Matt Kopec 7de484640e Improve/Cleanup ptrace wrapper and remove dependency on user.h
Patch by Ashok Thirumurthi.

llvm-svn: 176558
2013-03-06 17:20:48 +00:00
Daniel Malea 6217d2ae37 Implement -w flag to process launch (allow launching inferior process in different working directory) on Linux/FreeBSD
- fixes test case TestProcessLaunch

llvm-svn: 171854
2013-01-08 14:49:22 +00:00
Daniel Malea f0da371bdc Allow reading registers by thread ID in ProcessMonitor (Linux implementation)
- make FreeBSD ProcessMonitor API thread-ready

Patch by Matt Kopec!

llvm-svn: 170445
2012-12-18 19:50:15 +00:00
Daniel Malea a35970a6f6 Fix Linux bug that leaves lldb in invalid state after expression evaluation times out.
- Handle EINVAL return code from ptrace(GETSIGINFO, ...): not an error, but 'group-stop' state on Linux
- propagate SIGSTOP to inferior in above case
- this commit resolves the failure in expression_command/timeout testcase

Thanks to Sean Callanan & Matt Kopec for helping debug this problem

llvm-svn: 168523
2012-11-23 18:09:58 +00:00
Johnny Chen 9ed5b49c45 Fix incomplete commit of http://llvm.org/viewvc/llvm-project?rev=147609&view=rev:
This patch combines common code from Linux and FreeBSD into
a new POSIX platform.  It also contains fixes for 64bit FreeBSD.

The patch is based on changes by Mark Peek <mp@FreeBSD.org> and
"K. Macy" <kmacy@freebsd.org> in their github repo located at
https://github.com/fbsd/lldb.

llvm-svn: 147613
2012-01-05 21:48:15 +00:00