Jim Ingham
8646d3c164
Rename eExecution*** to eExpression*** to be consistent with the result type.
...
llvm-svn: 207945
2014-05-05 02:47:44 +00:00
Jim Ingham
1624a2d3c8
Make the Expression Execution result enum available to the SB API layer.
...
Add a callback that will allow an expression to be cancelled between the
expression evaluation stages (for the ClangUserExpressions.)
<rdar://problem/16790467>, <rdar://problem/16573440>
llvm-svn: 207944
2014-05-05 02:26:40 +00:00
Greg Clayton
f0066ad07f
Fixed CTRL+C related issues:
...
- CTRL+C wasn't clearing the command in lldb
- CTRL+C doesn't work in python macros in lldb
- Ctrl+C no longer interrupts the running process that you attach to
<rdar://problem/15949205>
<rdar://problem/16778652>
<rdar://problem/16774411>
llvm-svn: 207816
2014-05-02 00:45:31 +00:00
Ed Maste
e61c7b06c9
Typo: forever is one word
...
llvm-svn: 207564
2014-04-29 17:48:06 +00:00
Jim Ingham
fd95f8961e
Make RunThreadPlan start the timeout clock for each part of the expression evaluation AFTER the
...
successful resume for that part. This will make the timeouts more stable when lldb is running
in a busy program.
llvm-svn: 206835
2014-04-22 01:41:52 +00:00
Greg Clayton
c71e7bc415
After updating to Xcode.5.1.1 LLDB framework stopped to support partial (only for STDIN) pseudo terminal usage in the debugging process.
...
Here is the fix resolving this issue.
Patch from Alexey Ushakov.
llvm-svn: 206476
2014-04-17 17:27:28 +00:00
Jim Ingham
fe1c34266f
Clean up the logic in setting timeouts a bit, and the logging as well.
...
llvm-svn: 206351
2014-04-16 02:24:48 +00:00
Jim Ingham
35878c4752
Fix the behavior when hand-calling a function times out on one thread,
...
but by the time we go to halt, it has already stopped by hitting the
function end breakpoint. That wasn't being shown to the threads so the
Function call thread plan didn't know its job was done.
<rdar://problem/16515785>
llvm-svn: 205803
2014-04-08 21:33:21 +00:00
Saleem Abdulrasool
324a103619
sweep up -Wformat warnings from gcc
...
This is a purely mechanical change explicitly casting any parameters for printf
style conversion. This cleans up the warnings emitted by gcc 4.8 on Linux.
llvm-svn: 205607
2014-04-04 04:06:10 +00:00
Jim Ingham
6c9ed91cca
Make the fail messages
...
llvm-svn: 205497
2014-04-03 01:26:14 +00:00
Ed Maste
801335cc64
Fix one thread timeout logic
...
This should fix the seemingly-random failures observed on the FreeBSD
buildbot.
llvm-svn: 205241
2014-03-31 19:28:14 +00:00
Jim Ingham
914f4e7092
Add the ability from the SB API's to set the "one thread" timeout
...
for expression evaluations that try one and then all threads.
<rdar://problem/15598528>
llvm-svn: 205060
2014-03-28 21:58:28 +00:00
Andrew MacPherson
c3826b5ba6
Move calls to DisableAllBreakpointSites() and m_thread_list.DiscardThreadPlans() into base Process::Destroy() instead of in subclass DoDestroy() methods.
...
llvm-svn: 204752
2014-03-25 19:59:36 +00:00
Andrew MacPherson
eb4d0607bf
Create a Process::ModulesDidLoad() method to handle process-related tasks, as suggested by Jim Ingham. Make JITLoader instances use this to probe only new modules for relevant JIT symbols. Also re-enable the JITLoader hooks in Process.
...
llvm-svn: 203774
2014-03-13 09:37:02 +00:00
Hafiz Abid Qadeer
6eff101926
Replace some _MSC_VER with _WIN32.
...
This allows to use some code for mingw which was previously only
used for MSVC.
llvm-svn: 203651
2014-03-12 10:45:23 +00:00
Jim Ingham
4a65fb1f25
Don't hold the ThreadList lock over calls to the GetStatus (Process or Thread) calls
...
or the lower levels of the Process won't be able to restart.
<rdar://problem/16244835>
llvm-svn: 203233
2014-03-07 11:20:03 +00:00
Jim Ingham
82536bdbbf
Temporarily disable the JIT loading detector till we figure out why it crashes when lldb follows through exec's...
...
llvm-svn: 203068
2014-03-06 03:47:34 +00:00
Andrew MacPherson
17220c1886
Add support for JIT debugging on Linux using the GDB JIT interface. Patch written with Keno Fischer.
...
llvm-svn: 202956
2014-03-05 10:12:43 +00:00
Greg Clayton
6fea17e874
"size_t" isn't always 64 bit, it is 32 bit on 32 bit systems. All printf style statements that were assuming size_t were 64 bit were changed, and they were also changed to display them as unsigned values as "size_t" isn't signed.
...
If you print anything with 'size_t', please cast it to "uint64_t" in the printf and use PRIu64 or PRIx64.
llvm-svn: 202738
2014-03-03 19:15:20 +00:00
Greg Clayton
b4874f1a70
Fixed all overlapping prompt issues.
...
I carefully reviewed exactly how the IOHandlers interact and found places where we weren't properly controlling things. There should be no overlapping prompts and all output should now come out in a controlled fashion.
<rdar://problem/16111293>
llvm-svn: 202525
2014-02-28 18:22:24 +00:00
Jim Ingham
286fb1ef32
Plumb the EvaluateExpressionOptions::{Set,Get}StopOthers through the SB API, and make it work in RunThreadPlan.
...
Also remove SetStopOthers from the ThreadPlanCallFunction, because if the value you have doesn't match what is
in the EvaluateExpressionOptions the plan was passed when created it won't work correctly.
llvm-svn: 202464
2014-02-28 02:52:06 +00:00
Greg Clayton
19e1135108
A better long term fix for stopping the process when it is running by writing to the pipe that was used for cancel.
...
We now write a 'q' to indicate to exit the IOHandlerProcessSTDIO::Run(), and a 'i' to interrupt the process. This should make this code safer to use in a signal handler function.
llvm-svn: 202311
2014-02-26 22:47:33 +00:00
Ed Maste
96e51b890b
Reapply r184270 by Jim Ingham to avoid abort on FreeBSD
...
Don't actually Halt in the Interrupt handler for the Process, just
send an AsyncInterrupt. That's actually not async-signal-clean, but
it is a lot safer than Halt...
The underlying problem is actually a nested pthread_cond_wait from the
signal handler. Note frames 4, 13, 18 in the backtrace of the aborting
path below.
frame #1 : 0x000000080715fff9 libc.so.7`abort + 73 at abort.c:65
frame #2 : 0x0000000805d20fda libthr.so.3`_thread_exit(fname=<unavailable>, lineno=<unavailable>, msg=<unavailable>) + 58 at thr_exit.c:182
frame #3 : 0x0000000805d1fdc8 libthr.so.3`cond_wait_common [inlined] cond_wait_user(mp=<unavailable>, abstime=<unavailable>, cancel=<unavailable>) + 936 at thr_cond.c:223
frame #4 : 0x0000000805d1fd5b libthr.so.3`cond_wait_common(cond=<unavailable>, mutex=<unavailable>, abstime=<unavailable>, cancel=<unavailable>) + 827 at thr_cond.c:311
frame #5 : 0x00000008013450b5 liblldb.so.3.5`lldb_private::Condition::Wait(lldb_private::Mutex&, lldb_private::TimeValue const*, bool*) + 117
frame #6 : 0x00000008013411e8 liblldb.so.3.5`lldb_private::Predicate<bool>::WaitForValueEqualTo(bool, lldb_private::TimeValue const*, bool*) + 200
frame #7 : 0x00000008013eb34c liblldb.so.3.5`lldb_private::Listener::WaitForEventsInternal(lldb_private::TimeValue const*, lldb_private::Broadcaster*, lldb_private::ConstString const*, unsigned int, unsigned int, std::__1::shared_ptr<lldb_private::Event>&) + 876
frame #8 : 0x00000008013eb751 liblldb.so.3.5`lldb_private::Listener::WaitForEvent(lldb_private::TimeValue const*, std::__1::shared_ptr<lldb_private::Event>&) + 81
frame #9 : 0x00000008017c5bcf liblldb.so.3.5`lldb_private::Process::Halt(bool) + 783
frame #10 : 0x00000008017def3a liblldb.so.3.5`IOHandlerProcessSTDIO::Interrupt() + 74
frame #11 : 0x00000008013823d3 liblldb.so.3.5`lldb_private::Debugger::DispatchInputInterrupt() + 115
frame #12 : 0x00000008011d69c5 liblldb.so.3.5`lldb::SBDebugger::DispatchInputInterrupt() + 69
frame #13 : 0x000000000040b254 lldb`sigint_handler(int) + 68
frame #14 : 0x0000000805d1b3da libthr.so.3`handle_signal(actp=<unavailable>, sig=<unavailable>, info=<unavailable>, ucp=<unavailable>) + 234 at thr_sig.c:240
frame #15 : 0x0000000805d1afc2 libthr.so.3`thr_sighandler(sig=<unavailable>, info=<unavailable>, _ucp=<unavailable>) + 306 at thr_sig.c:183
frame #16 : 0x00007ffffffff003
frame #17 : 0x0000000805d1fc7e libthr.so.3`cond_wait_common [inlined] cond_wait_user(mp=<unavailable>, abstime=<unavailable>, cancel=1) + 239 at thr_cond.c:255
frame #18 : 0x0000000805d1fb8f libthr.so.3`cond_wait_common(cond=<unavailable>, mutex=<unavailable>, abstime=0x0000000000000000, cancel=1) + 367 at thr_cond.c:311
frame #19 : 0x00000008013450d2 liblldb.so.3.5`lldb_private::Condition::Wait(lldb_private::Mutex&, lldb_private::TimeValue const*, bool*) + 146
llvm-svn: 202154
2014-02-25 14:20:14 +00:00
Greg Clayton
e68f5d6b69
Fixed the command line LLDB so that "CTRL+C" will interrupt a running process again.
...
llvm-svn: 202086
2014-02-24 22:50:57 +00:00
Jean-Daniel Dupas
ef37711f85
Fix null dereference if address is NULL.
...
llvm-svn: 201026
2014-02-08 20:22:05 +00:00