Commit Graph

225 Commits

Author SHA1 Message Date
Greg Clayton d74713b18c Bumped Xcode project version for lldb-80 and debugserver-145.
llvm-svn: 140922
2011-10-01 02:01:36 +00:00
Johnny Chen a9b68f4dd6 Modify the delegation chain from MachThreadList -> MachThread -> DNBArchProtocol so that when
the watchpoint state is changed, not only does the change propagate to all the thread instances,
it also updates a global debug state, if chosen by the DNBArchProtocol derivative.

Once implemented, the DNBArchProtocol derivative, also makes sure that when new thread comes along,
it tries to inherit from the global debug state, if it is valid.

Modify TestWatchpointMultipleThreads.py to test this functionality.

llvm-svn: 140811
2011-09-29 21:48:52 +00:00
Johnny Chen 825ea37835 Fix a bug in the current MacOSX MachThreadList::EnableHardwareWatchpoint() impl so that
it enables the hardware watchpoint for all existing threads.  Add a test file for that.
Also fix MachThreadList::DisableHardwareWatchpoint().

llvm-svn: 140757
2011-09-29 01:20:42 +00:00
Johnny Chen 870f4f4213 The r139982 patch has a bug by using the constant "x86_AVX_STATE64".
Patch by Filipe.

llvm-svn: 140037
2011-09-19 18:54:01 +00:00
Greg Clayton 747bcb03d2 Convert lldb::ModuleSP to use an instrusive ref counted pointer.
We had some cases where getting the shared pointer for a module from
the global module list was causing a performance issue when debugging
with DWARF in .o files. Now that the module uses intrusive ref counts,
we can easily convert any pointer to a shared pointer.

llvm-svn: 139983
2011-09-17 06:21:20 +00:00
Greg Clayton 5631ebce5e Added more logging, and renamed FPR to FPU in a the register set/flavor enum.
llvm-svn: 139982
2011-09-17 05:59:37 +00:00
Greg Clayton 5299cc58cb Correctly handle the when we the 'G' packet fails. There were
cases where we were returning no error even though this packet
was failing.

llvm-svn: 139981
2011-09-17 05:47:55 +00:00
Johnny Chen 236888d026 Foe x86_64/i386, piggyback the hardware index of the fired watchpoint in the exception
data sent back to the debugger.  On the debugger side, use the opportunity during the
StopInfoMachException::CreateStopReasonWithMachException() method to set the hardware index
for the very watchpoint location.

llvm-svn: 139975
2011-09-17 01:05:03 +00:00
Jim Ingham 12e9a2012f Track whether a process was Launched or Attached to. If Attached, the detach when the debugger is destroyed, rather than killing the process. Also added a Debugger::Clear, which gets called in Debugger::Destroy to deal with all the targets in the Debugger. Also made the Driver's main loop call Destroy on the debugger, rather than just Destroying the currently selected Target's process.
llvm-svn: 139852
2011-09-15 21:30:02 +00:00
Johnny Chen 76abb3b559 Add comment regarding method call to DNBArchProtocol::NotifyException().
llvm-svn: 139800
2011-09-15 17:17:51 +00:00
Johnny Chen 88c1b77f74 Modify MachThread::NotifyException() to allow the arch specific protocol to process
the passed in (MachException::Data &)exc first before possible reassignment of the
member m_stop_exception with exc.  This allows lldb to stop at the watchpoint of
a simple test program.

llvm-svn: 139767
2011-09-15 01:12:15 +00:00
Johnny Chen 3ba42283f4 Update I386 DNB impl to fix the same errors as DNBArchImplX86_64: ('==' instead of '=') and (by value instead of by reference).
llvm-svn: 139667
2011-09-13 23:43:18 +00:00
Johnny Chen 3c53258964 Watchpoint WIP:
o WatchpointLocationList:
  Add a GetListMutex() method.
o WatchpointLocation:
  Fix Dump() method where there was an extra % in the format string.
o Target.cpp:
  Add implementation to CreateWatchpointLocation() to create and enable a watchpoint.

o DNBArchImplX86_64.cpp:
  Fix bugs in SetWatchpoint()/ClearWatchpoint() where '==' was used, instead of '=',
  to assign/reset the data break address to a debug register.

  Also fix bugs where a by reference debug_state should have been used, not by value.

llvm-svn: 139666
2011-09-13 23:29:31 +00:00
Jim Ingham e64f0dc7bf Adding "-n", "-p" and "-w" flags to the lldb command-line tool to
allow attaching from the command line.

llvm-svn: 139665
2011-09-13 23:25:31 +00:00
Jim Ingham e37d605e7d SBSourceManager now gets the real source manager either from the Debugger or Target. Also, move the SourceManager file cache into the debugger
so it can be shared amongst the targets.

llvm-svn: 139564
2011-09-13 00:29:56 +00:00
Johnny Chen 67b20bbbee Reset the debug status register, only if necessary, before we resume,
which saves unnecessary traffic to the kernel.

llvm-svn: 139410
2011-09-09 21:11:25 +00:00
Enrico Granata 13f1d56170 Basic infrastructure code to exploit malloc stack logging as available on Mac OS X to track the allocation history of pointers on the target process
llvm-svn: 139337
2011-09-09 00:04:24 +00:00
Johnny Chen f8f68a132a Added comments about exception code.
llvm-svn: 139294
2011-09-08 17:07:22 +00:00
Johnny Chen af3d4af4eb Add logic to the DNBArchImplX86_64/DNBArchImplI386::NotifyException() callback method
in order to distinguish the real single step exception from a watchpoint exception
which uses the same exc_type of EXC_BREAKPOINT and exc_code of EXC_I386_SGL.

This is done by checking the debug status register to find out whether the watchpoint
data break event has fired, and, if yes, stuff the data break address into the exception's
exc_sub_code field on the debugserver side for lldb to consume on the other end.

llvm-svn: 139274
2011-09-08 01:16:50 +00:00
Johnny Chen ec6a2d3160 Add logic to MachThreadList::GetThreadID() for the use case of setting a watchpoint
(MachThreadList::EnableHardwareWatchpoint()) where the watchpoint is not associated
with a thread and the current thread, if set, is returned, otherwise we return the
first thread.

Plus minor change to RNBRemote::HandlePacket_z() to use the existing macros to check
the validity of break_id/watch_id.

llvm-svn: 139246
2011-09-07 19:03:50 +00:00
Johnny Chen 9d814e0dd2 Minor change: compare the return val of DNBWatchpointSet() against INVALID_NUB_WATCH_ID
to determine its validity.

llvm-svn: 139209
2011-09-07 00:09:23 +00:00
Johnny Chen 86f97a417d DNBBreakpoint::SetEnabled() should take a bool, not a uint32_t, as its input argument.
Plus for watchpoint related functions, add new macros INVALID_NUB_WATCH_ID and
NUB_WATCH_ID_IS_VALID and use them, instead.

llvm-svn: 139163
2011-09-06 19:52:49 +00:00
Johnny Chen 1bd08dd878 Watchpoint work in progress:
Add a virtual method GetHardwareWatchpointHit() to the DNBArchProtocol base class
which consults the architecture to return the watchpoint hit; otherwise return an
invalid index.

Add impl. of the method to X86_64 and I386 subclasses, plus reset the debug status
register before we resume execution of the inferior thread.

llvm-svn: 139034
2011-09-02 21:13:07 +00:00
Johnny Chen 8d31e5eac5 Renaming: from IsVacantWatchpoint() to IsWatchpointVacant().
llvm-svn: 138907
2011-08-31 21:44:56 +00:00
Johnny Chen a18460635a Renamed the helper method to ClearWatchpointHits() for clarity of its purpose.
llvm-svn: 138899
2011-08-31 21:19:39 +00:00
Johnny Chen e0d4208a8b Add a couple of helper methods to check/clear the debug status register
which contains the watchpoint hit information.

llvm-svn: 138881
2011-08-31 19:05:55 +00:00
Johnny Chen 205395e7e0 Fix the shift amount applied to size_and_rw_bits() for debug control register,
which did not take into account the hardware index.

llvm-svn: 138867
2011-08-31 17:51:43 +00:00
Johnny Chen edce1f3f7d Update comments.
llvm-svn: 138863
2011-08-31 17:29:29 +00:00
Johnny Chen 0399ec26c0 Watchpoint work in progress: add helper methods to DNB arch impl for I386 to implment Enable/DisableHardwareWatchpoint.
llvm-svn: 138847
2011-08-31 00:50:10 +00:00
Johnny Chen ebb9bb4175 Watchpoint work in progress: add helper methods to DNB arch impl for X86_64 to implment Enable/DisableHardwareWatchpoint.
llvm-svn: 138844
2011-08-31 00:27:53 +00:00
Johnny Chen 2cf3222029 Add stubs of incomplete watchpoint implementation with "FIXME" markers.
llvm-svn: 138790
2011-08-30 01:30:03 +00:00
Greg Clayton 9414a367a1 Added the debug registers for i386 and x86_64 in preparation for watchpoints.
llvm-svn: 138770
2011-08-29 21:49:22 +00:00
Johnny Chen c0705f0b4f Remove an extra break statement.
llvm-svn: 138763
2011-08-29 21:01:50 +00:00
Jim Ingham a9deaf971d Better help string for "lldb -- file arg1 arg2..."
llvm-svn: 137789
2011-08-16 23:57:58 +00:00
Jim Ingham 556e653b6a Document how to pass program args to lldb command-line.
llvm-svn: 137784
2011-08-16 23:15:02 +00:00
Greg Clayton 3c503e1347 Bumped Xcode project versions for lldb-73 and debugserver-144.
llvm-svn: 137782
2011-08-16 23:11:03 +00:00
Greg Clayton 98fcc4e60f Bumped Xcode project versions for lldb-72 and debugserver-143.
llvm-svn: 137547
2011-08-13 01:48:45 +00:00
Jim Ingham 06942690b1 Add a version of SBDebugger::Create which allows us to specify whether to source
in the init files or not.

llvm-svn: 137541
2011-08-13 00:22:20 +00:00
Jason Molenda 7efc7e949c Fixes the occasional crash on exit when quitting lldb with control-D.
If the IOChannel has already freed out its m_driver member, and
there's still a character to be read/written (that is, the ^D
character), just skip that char instead of trying to write through
a null object pointer.

llvm-svn: 137421
2011-08-12 02:40:17 +00:00
Johnny Chen 64503c8168 To silence the static analyzer.
llvm-svn: 137326
2011-08-11 19:03:44 +00:00
Johnny Chen d14651afaf To silence the static analyzer.
llvm-svn: 137319
2011-08-11 18:21:06 +00:00
Johnny Chen 3c24a17c7c Incremental fixes of issues found by Xcode static analyzer.
llvm-svn: 137288
2011-08-11 00:43:20 +00:00
Jim Ingham 478235d882 In the case where we are trying to resume a thread all the way to 0, if we get
llvm-svn: 137287
2011-08-11 00:38:52 +00:00
Johnny Chen 119fd6c03b Ignore the static analyzer, instead; and add comment why.
llvm-svn: 137275
2011-08-10 23:19:32 +00:00
Johnny Chen 2fe7dd445b Incremental fixes of issues found by Xcode static analyzer.
llvm-svn: 137267
2011-08-10 23:01:39 +00:00
Johnny Chen 25f3a3cde2 Incremental fixes of issues found by Xcode static analyzer.
llvm-svn: 137257
2011-08-10 22:06:24 +00:00
Sean Callanan 677f2a263a Fixed a problem where the HasAVX() code in
debugserver did not back up %ebx/%rbx, even
though it was being clobbered by the CPUID
instruction.

llvm-svn: 137131
2011-08-09 18:10:15 +00:00
Greg Clayton dee205a31e The "bool HasAVX()" function doesn't backup and restore the
cpu registers it uses and it crashes the release version of 
debugserver. We just get lucky in Debug builds. Until this 
is fixed I am disabling AVX detection to avoid the crashes. 

llvm-svn: 137113
2011-08-09 05:27:14 +00:00
Greg Clayton c235ac763f Added some logging and did some member renaming.
llvm-svn: 137112
2011-08-09 05:20:29 +00:00
Jim Ingham 7d6811d60e Remove some commented out code that doesn't connect to anything yet...
llvm-svn: 137081
2011-08-09 00:26:56 +00:00