History log of /external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6c32437e2255db9089ee00cd70b474676d09ab6e 10-May-2013 Jason Molenda <jmolenda@apple.com> Add an explicit check for a darwin kernel KDP_VERSIONSTRING when
starting a kdp communication session, instead of assuming darwin
kernel for any "non-EFI" kdp session.
<rdar://problem/13854098>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@181566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
cc2cffeda2a1a2c56d33459d6c36be08032b8613 01-Mar-2013 Jason Molenda <jmolenda@apple.com> Patch from Andrew Fish to add recognition of some additional
KDP packets.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176319 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
d2f3b42f70f309f548c2b618c5991a905a00ec3a 14-Feb-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13064893>

Poor network connections aren't handled well; commands fail instead of retrying.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@175198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
d06bb5007b310b5498f7c47006022561ce1ceb4d 25-Oct-2012 Jason Molenda <jmolenda@apple.com> Identify a kdp session that is connecting to an EFI monitor,
use a DynamicLoaderStatic dynamic loader for the session
instead of a kernel or user dynamic loader.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@166652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
307c7fdc58d19f734991a176db972cc61d9ada16 20-Oct-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/12491387>

Added commands to the KDP plug-in that allow sending raw commands through the KDP protocol. You specify a command byte and a payload as ASCII hex bytes, and the packet is created with a valid header/sequenceID/length and sent. The command responds with a raw ASCII hex string that contains all bytes in the reply including the header.

An example of sending a read register packet for the GPR on x86_64:

(lldb) process plugin packet send --command 0x07 --payload 0100000004000000



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@166346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
fac2e62f08719ba800a440b7ad0d5a55a26dc620 29-Sep-2012 Jason Molenda <jmolenda@apple.com> Add support for debugging KASLR kernels via kdp (the kernel being
loaded at a random offset).

To get the kernel's UUID and load address I need to send a kdp
packet so I had to implement the kernel relocation (and attempt to
find the kernel if none was provided to lldb already) in ProcessKDP
-- but this code really properly belongs in DynamicLoaderDarwinKernel.

I also had to add an optional Stream to ConnectRemote so
ProcessKDP::DoConnectRemote can print feedback about the remote kernel's
UUID, load address, and notify the user if we auto-loaded the kernel via
the UUID.

<rdar://problem/7714201>


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@164881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
3acaa926c8f0d32da48db61a5fcb95276e6a4006 25-Sep-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/9959501>

More KDP debugging process. We can not set breakpoints, hit them, resume, step and detach while running.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@164584 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
ea63601b1d4a21e46e477563f27d1b1c516136d8 21-Sep-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/9959501>

KDP -- now with rudimentary process control (continue only) and read + write registers (which means we can see stack frames) for x86_64, i386 and ARM.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@164352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
516f0849819d094d4eab39a1f27b770259103ff8 11-Apr-2012 Greg Clayton <gclayton@apple.com> No functionality changes, mostly cleanup.

Cleaned up the Mutex::Locker and the ReadWriteLock classes a bit.

Also cleaned up the GDBRemoteCommunication class to not have so many packet functions. Used the "NoLock" versions of send/receive packet functions when possible for a bit of performance.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
ae932359b80098532f3c3766fa9e6527352fbb67 10-Apr-2012 Greg Clayton <gclayton@apple.com> Trying to solve our disappearing thread issues by making thread list updates safer.

The current ProcessGDBRemote function that updates the threads could end up with an empty list if any other thread had the sequence mutex. We now don't clear the thread list when we can't access it, and we also have changed how lldb_private::Process handles the return code from the:

virtual bool
Process::UpdateThreadList (lldb_private::ThreadList &old_thread_list,
lldb_private::ThreadList &new_thread_list) = 0;

A bool is now returned to indicate if the list was actually updated or not and the lldb_private::Process class will only update the stop ID of the validity of the thread list if "true" is returned.

The ProcessGDBRemote also got an extra assertion that will hopefully assert when running debug builds so we can find the source of this issue.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154365 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
d3a86a2bad17204570577dbafc51f3b107310de8 19-Aug-2011 Enrico Granata <granata.enrico@gmail.com> Third round of code cleanups:
- reorganizing the PTS (Partial Template Specializations) in FormatManager.h
- applied a patch by Filipe Cabecinhas to make LLDB compile with GCC
Functional changes:
- fixed an issue where command type summary add for type "struct Foo" would not match any types.
currently, "struct" will be stripped off and type "Foo" will be matched.
similar behavior occurs for class, enum and union specifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@138020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
7b13922c3c6b55225fa8403762c0399e9692b730 21-Jul-2011 Greg Clayton <gclayton@apple.com> More KDP fixes and logging cleanup.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
234981a4559db084f9c90612660e40f19915b89c 20-Jul-2011 Greg Clayton <gclayton@apple.com> Added KDP resume, suspend, set/remove breakpoint, and kernel version support.
Also we now display a live update of the kexts that we are loading.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135563 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
ec15f50fdd7011fc155ab4fe71d4887ffe31df4e 20-Jul-2011 Greg Clayton <gclayton@apple.com> Added register reading support for ARM, i386 and x86_64.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135557 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
0fa512447e00da09d300fbabd18b5ce94f52fdaa 19-Jul-2011 Greg Clayton <gclayton@apple.com> Modified the LocateMacOSXFilesUsingDebugSymbols(...) function to locate
an executable file if it is right next to a dSYM file that is found using
DebugSymbols. The code also looks into a bundle if the dSYM file is right
next to a bundle.

Modified the MacOSX kernel dynamic loader plug-in to correctly set the load
address for kext sections. This is a tad tricky because of how LLDB chooses
to treat mach-o segments with no name. Also modified the loader to properly
handle the older version 1 kext summary info.

Fixed a crasher in the Mach-o object file parser when it is trying to set
the section size correctly for dSYM sections.

Added packet dumpers to the CommunicationKDP class. We now also properly
detect address byte sizes based on the cpu type and subtype that is provided.
Added a read memory and read register support to CommunicationKDP. Added a
ThreadKDP class that now uses subclasses of the RegisterContextDarwin_XXX for
arm, i386 and x86_64.

Fixed some register numbering issues in the RegisterContextDarwin_arm class
and added ARM GDB numbers to the ARM_GCC_Registers.h file.

Change the RegisterContextMach_XXX classes over to subclassing their
RegisterContextDarwin_XXX counterparts so we can share the mach register
contexts between the user and kernel plug-ins.




git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135466 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
8d2ea2888a4acb7f140f9af64ddd2b16b2dee870 17-Jul-2011 Greg Clayton <gclayton@apple.com> Added a boolean to the pure virtual lldb_private::Process::CanDebug(...)
method so process plug-ins that are requested by name can answer yes when
asked if they can debug a target that might not have any file in the target.

Modified the ConnectionFileDescriptor to have both a read and a write file
descriptor. This allows us to support UDP, and eventually will allow us to
support pipes. The ConnectionFileDescriptor class also has a file descriptor
type for each of the read and write file decriptors so we can use the correct
read/recv/recvfrom call when reading, or write/send/sendto for writing.

Finished up an initial implementation of UDP where you can use the "udp://"
URL to specify a host and port to connect to:

(lldb) process connect --plugin kdp-remote udp://host:41139

This will cause a ConnectionFileDescriptor to be created that can send UDP
packets to "host:41139", and it will also bind to a localhost port that can
be given out to receive the connectionless UDP reply.

Added the ability to get to the IPv4/IPv6 socket port number from a
ConnectionFileDescriptor instance if either file descriptor is a socket.

The ProcessKDP can now successfully connect to a remote kernel and detach
using the above "processs connect" command!!! So far we have the following
packets working:
KDP_CONNECT
KDP_DISCONNECT
KDP_HOSTINFO
KDP_VERSION
KDP_REATTACH

Now that the packets are working, adding new packets will go very quickly.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
d52d00f4edb746ba458a3e659699160952dc925e 16-Jul-2011 Greg Clayton <gclayton@apple.com> Completed more work on the KDP darwin kernel debugging Process plug-in.
Implemented connect, disconnect, reattach, version, and hostinfo.

Modified the ConnectionFileDescriptor class to be able to handle UDP.

Added a new Stream subclass called StreamBuffer that is backed by a
llvm::SmallVector for better efficiency.

Modified the DataExtractor class to have a static function that can
dump hex bytes into a stream. This is currently being used to dump incoming
binary packet data in the KDP plug-in.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
269f91e066c5991a4d4aa2945ea2c285f8589b12 15-Jul-2011 Greg Clayton <gclayton@apple.com> Fixed the comment lines in the file comment headers.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
1e5b02176d6952d0679479926fa557534313472b 15-Jul-2011 Greg Clayton <gclayton@apple.com> Added the ability to connect using "tcp://<host>:<port>" which is the
same as the old "connect://<host>:<port>". Also added the ability to
connect using "udp://<host>:<port>" which will open a connected
datagram socket. I need to find a way to specify a non connected
datagram socket as well.

We might need to start setting some settings in the URL itself,
maybe something like:

udp://<host>:<port>?connected=yes
udp://<host>:<port>?connected=no

I am open to suggestions for URL settings.

Also did more work on the KDP darwin kernel plug-in.





git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
363be3fc515bea8baf2c5031f3c62f6326d9e1b8 15-Jul-2011 Greg Clayton <gclayton@apple.com> Hollowed out process plug-in to do KDP darwin kernel debugging.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h