Skip to content
  1. Nov 21, 2011
  2. Nov 15, 2011
    • Greg Clayton's avatar
      Added a new class to Process.h: ProcessAttachInfo. This class contains enough · 144f3a9c
      Greg Clayton authored
      info for us to attach by pid, or by name and will also allow us to eventually
      do a lot more powerful attaches. If you look at the options for the "platform
      process list" command, there are many options which we should be able to
      specify. This will allow us to do things like "attach to a process named 'tcsh'
      that has a parent process ID of 123", or "attach to a process named 'x' which
      has an effective user ID of 345". 
      
      I finished up the --shell implementation so that it can be used without the
      --tty option in "process launch". The "--shell" option now can take an 
      optional argument which is the path to the shell to use (or a partial name
      like "sh" which we will find using the current PATH environment variable).
      
      Modified the Process::Attach to use the new ProcessAttachInfo as the sole
      argument and centralized a lot of code that was in the "process attach"
      Execute function so that everyone can take advantage of the powerful new
      attach functionality.
      
      llvm-svn: 144615
      144f3a9c
  3. Nov 12, 2011
    • Greg Clayton's avatar
      Added the ability to run a process in a shell on MacOSX currently when using · c9ed478a
      Greg Clayton authored
      the --tty option. So you can now get shell expansion and file redirection:
      
      (lldb) process launch --tty --shell -- *.jpg < in.txt > out.txt
      
      Again, the "--tty" is mandatory for now until we hook this up to other 
      functions. The shell is also currently hard coded to "/bin/bash" and not the
      "SHELL" variable. "/bin/tcsh" was causing problems which I need to dig into.
      
      llvm-svn: 144443
      c9ed478a
  4. Oct 29, 2011
  5. Oct 26, 2011
    • Greg Clayton's avatar
      Cleaned up many error codes. For any who is filling in error strings into · 86edbf41
      Greg Clayton authored
      lldb_private::Error objects the rules are:
      - short strings that don't start with a capitol letter unless the name is a
        class or anything else that is always capitolized
      - no trailing newline character
      - should be one line if possible
      
      Implemented a first pass at adding "--gdb-format" support to anything that
      accepts format with optional size/count.
      
      llvm-svn: 142999
      86edbf41
  6. Sep 24, 2011
    • Greg Clayton's avatar
      Added to the public API to allow symbolication: · cac9c5f9
      Greg Clayton authored
      - New SBSection objects that are object file sections which can be accessed
        through the SBModule classes. You can get the number of sections, get a 
        section at index, and find a section by name.
      - SBSections can contain subsections (first find "__TEXT" on darwin, then
        us the resulting SBSection to find "__text" sub section).
      - Set load addresses for a SBSection in the SBTarget interface
      - Set the load addresses of all SBSection in a SBModule in the SBTarget interface
      - Add a new module the an existing target in the SBTarget interface
      - Get a SBSection from a SBAddress object
      
      This should get us a lot closer to being able to symbolicate using LLDB through
      the public API.
      
      llvm-svn: 140437
      cac9c5f9
  7. Sep 20, 2011
  8. Sep 09, 2011
  9. Aug 29, 2011
  10. Aug 05, 2011
  11. Aug 02, 2011
    • Johnny Chen's avatar
      Patch by David Forsythe to build lldb on FreeBSD! · 8f3d8384
      Johnny Chen authored
      I did not take the patch for ClangExpressionParser.cpp since there was a
      recent change by Peter for the same line.  Feel free to disagree. :-)
      
      Reference:
      ----------------------------------------------------------------------
      r136580 | pcc | 2011-07-30 15:42:24 -0700 (Sat, 30 Jul 2011) | 3 lines
      
      Add reloc arg to standard JIT createJIT()
      
      Fixes non-__APPLE__ build.  Patch by Matt Johnson!
      ----------------------------------------------------------------------
      
      Also, I ignore the part of the patch to remove the RegisterContextDarwin*.h/.cpp.
      
      llvm-svn: 136720
      8f3d8384
  12. Jul 19, 2011
    • Greg Clayton's avatar
      Modified the LocateMacOSXFilesUsingDebugSymbols(...) function to locate · a63d08c9
      Greg Clayton authored
      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.
      
      llvm-svn: 135466
      a63d08c9
  13. Jun 17, 2011
    • Greg Clayton's avatar
      Added the notion of an system root for SDKs. This is a directory where all · f3dd93c8
      Greg Clayton authored
      libraries and headers exist. This can be specified using the platform select
      function:
      
      platform select --sysroot /Volumes/remote-root remote-macosx
      
      Each platform subclass is free to interpret the sysroot as needed.
      
      Expose the new SDK root directory through the SBDebugger class. 
      
      Fixed an issue with the GDB remote protocol where unimplemented packets were
      not being handled correctly.
      
      llvm-svn: 133231
      f3dd93c8
  14. May 13, 2011
    • Johnny Chen's avatar
      This patch add a "fake" attach waiting for a real implementation and · 13e8e1c3
      Johnny Chen authored
      solve the build break due to the lack of this method.
      
      It also propose a solution to the API changes in RegisterContext.
      
      I upgraded also the the python version in the makefile. My linux
      installation has python2.7 and AFAIK also the latest ubuntu
      has this version of python so maybe is worth upgrading.
      
      Patch by Marco Minutoli <mminutoli@gmail.com>
      
      [Note: I had to hand merge in the diffs since patch thinks it is a corrupt patch.]
      
      llvm-svn: 131313
      13e8e1c3
  15. Apr 18, 2011
    • Greg Clayton's avatar
      Centralized a lot of the status information for processes, · 7260f620
      Greg Clayton authored
      threads, and stack frame down in the lldb_private::Process,
      lldb_private::Thread, lldb_private::StackFrameList and the 
      lldb_private::StackFrame classes. We had some command line
      commands that had duplicate versions of the process status
      output ("thread list" and "process status" for example). 
      
      Removed the "file" command and placed it where it should
      have been: "target create". Made an alias for "file" to
      "target create" so we stay compatible with GDB commands.
      
      We can now have multple usable targets in lldb at the
      same time. This is nice for comparing two runs of a program
      or debugging more than one binary at the same time. The
      new command is "target select <target-idx>" and also to see
      a list of the current targets you can use the new "target list"
      command. The flow in a debug session can be:
      
      (lldb) target create /path/to/exe/a.out
      (lldb) breakpoint set --name main
      (lldb) run
      ... hit breakpoint
      (lldb) target create /bin/ls
      (lldb) run /tmp
      Process 36001 exited with status = 0 (0x00000000) 
      (lldb) target list
      Current targets:
        target #0: /tmp/args/a.out ( arch=x86_64-apple-darwin, platform=localhost, pid=35999, state=stopped )
      * target #1: /bin/ls ( arch=x86_64-apple-darwin, platform=localhost, pid=36001, state=exited )
      (lldb) target select 0
      Current targets:
      * target #0: /tmp/args/a.out ( arch=x86_64-apple-darwin, platform=localhost, pid=35999, state=stopped )
        target #1: /bin/ls ( arch=x86_64-apple-darwin, platform=localhost, pid=36001, state=exited )
      (lldb) bt
      * thread #1: tid = 0x2d03, 0x0000000100000b9a a.out`main + 42 at main.c:16, stop reason = breakpoint 1.1
        frame #0: 0x0000000100000b9a a.out`main + 42 at main.c:16
        frame #1: 0x0000000100000b64 a.out`start + 52
      
      Above we created a target for "a.out" and ran and hit a
      breakpoint at "main". Then we created a new target for /bin/ls
      and ran it. Then we listed the targest and selected our original
      "a.out" program, so we showed two concurent debug sessions
      going on at the same time.
      
      llvm-svn: 129695
      7260f620
  16. Apr 14, 2011
    • Greg Clayton's avatar
      Added auto completion for architecture names and for platforms. · ab65b34f
      Greg Clayton authored
      Modified the OptionGroupOptions to be able to specify only some of the options
      that should be appended by using the usage_mask in the group defintions and
      also provided a way to remap them to a new usage mask after the copy. This 
      allows options to be re-used and also targetted for specific option groups.
      
      Modfied the CommandArgumentType to have a new eArgTypePlatform enumeration.
      Taught the option parser to be able to automatically use the appropriate
      auto completion for a given options if nothing is explicitly specified
      in the option definition. So you don't have to specify it in the option
      definition tables.
      
      Renamed the default host platform name to "host", and the default platform
      hostname to be "localhost".
      
      Modified the "file" and "platform select" commands to make sure all options
      and args are good prior to creating a new platform. Also defer the computation
      of the architecture in the file command until all options are parsed and the
      platform has either not been specified or reset to a new value to avoid
      computing the arch more than once.
      
      Switch the PluginManager code over to using llvm::StringRef for string
      comparisons and got rid of all the AccessorXXX functions in lieu of the newer
      mutex + collection singleton accessors.
      
      llvm-svn: 129483
      ab65b34f
  17. Apr 12, 2011
    • Greg Clayton's avatar
      Moved the execution context that was in the Debugger into · 8b82f087
      Greg Clayton authored
      the CommandInterpreter where it was always being used.
      
      Make sure that Modules can track their object file offsets correctly to
      allow opening of sub object files (like the "__commpage" on darwin).
      
      Modified the Platforms to be able to launch processes. The first part of this
      move is the platform soon will become the entity that launches your program
      and when it does, it uses a new ProcessLaunchInfo class which encapsulates
      all process launching settings. This simplifies the internal APIs needed for
      launching. I want to slowly phase out process launching from the process
      classes, so for now we can still launch just as we used to, but eventually
      the platform is the object that should do the launching.
      
      Modified the Host::LaunchProcess in the MacOSX Host.mm to correctly be able
      to launch processes with all of the new eLaunchFlag settings. Modified any
      code that was manually launching processes to use the Host::LaunchProcess
      functions.
      
      Fixed an issue where lldb_private::Args had implicitly defined copy 
      constructors that could do the wrong thing. This has now been fixed by adding
      an appropriate copy constructor and assignment operator.
      
      Make sure we don't add empty ModuleSP entries to a module list.
      
      Fixed the commpage module creation on MacOSX, but we still need to train
      the MacOSX dynamic loader to not get rid of it when it doesn't have an entry
      in the all image infos.
      
      Abstracted many more calls from in ProcessGDBRemote down into the 
      GDBRemoteCommunicationClient subclass to make the classes cleaner and more
      efficient.
      
      Fixed the default iOS ARM register context to be correct and also added support
      for targets that don't support the qThreadStopInfo packet by selecting the
      current thread (only if needed) and then sending a stop reply packet.
      
      Debugserver can now start up with a --unix-socket (-u for short) and can 
      then bind to port zero and send the port it bound to to a listening process
      on the other end. This allows the GDB remote platform to spawn new GDB server
      instances (debugserver) to allow platform debugging.
      
      llvm-svn: 129351
      8b82f087
  18. Apr 08, 2011
    • Greg Clayton's avatar
      Modified the ArchSpec to take an optional "Platform *" when setting the triple. · eb0103f2
      Greg Clayton authored
      This allows you to have a platform selected, then specify a triple using
      "i386" and have the remaining triple items (vendor, os, and environment) set
      automatically.
      
      Many interpreter commands take the "--arch" option to specify an architecture
      triple, so now the command options needed to be able to get to the current
      platform, so the Options class now take a reference to the interpreter on
      construction.
      
      Modified the build LLVM building in the Xcode project to use the new
      Xcode project level user definitions:
      
      LLVM_BUILD_DIR - a path to the llvm build directory
      LLVM_SOURCE_DIR - a path to the llvm sources for the llvm that will be used to build lldb
      LLVM_CONFIGURATION - the configuration that lldb is built for (Release, 
      Release+Asserts, Debug, Debug+Asserts).
      
      I also changed the LLVM build to not check if "lldb/llvm" is a symlink and
      then assume it is a real llvm build directory versus the unzipped llvm.zip
      package, so now you can actually have a "lldb/llvm" directory in your lldb
      sources.
      
      llvm-svn: 129112
      eb0103f2
  19. Apr 07, 2011
    • Stephen Wilson's avatar
      linux: remove ProcessLinux::FindProcesses · 0682ba2f
      Stephen Wilson authored
      This method only needs to be overridden in the remote debugging case,  the
      base class handles the host case.  Since we do not do remote debugging on
      Linux yet and there is a typo that causes a build issue, just remove this
      method for now.
       
      
      llvm-svn: 129069
      0682ba2f
  20. Apr 06, 2011
  21. Apr 04, 2011
    • Greg Clayton's avatar
      Added a speed test to the GDBRemoteCommunicationClient and · 9b1e1cdf
      Greg Clayton authored
      GDBRemoteCommunicationServer classes. This involved adding a new packet
      named "qSpeedTest" which can test the speed of a packet send/response pairs
      using a wide variety of send/recv packet sizes.
      
      Added a few new connection classes: one for shared memory, and one for using
      mach messages (Apple only). The mach message stuff is experimental and not 
      working yet, but added so I don't lose the code. The shared memory stuff
      uses pretty standard calls to setup shared memory.
      
      llvm-svn: 128837
      9b1e1cdf
  22. Mar 30, 2011
    • Greg Clayton's avatar
      Many improvements to the Platform base class and subclasses. The base Platform · 32e0a750
      Greg Clayton authored
      class now implements the Host functionality for a lot of things that make 
      sense by default so that subclasses can check:
      
      int
      PlatformSubclass::Foo ()
      {
          if (IsHost())
              return Platform::Foo (); // Let the platform base class do the host specific stuff
          
          // Platform subclass specific code...
          int result = ...
          return result;
      }
      
      Added new functions to the platform:
      
          virtual const char *Platform::GetUserName (uint32_t uid);
          virtual const char *Platform::GetGroupName (uint32_t gid);
      
      The user and group names are cached locally so that remote platforms can avoid
      sending packets multiple times to resolve this information.
      
      Added the parent process ID to the ProcessInfo class. 
      
      Added a new ProcessInfoMatch class which helps us to match processes up
      and changed the Host layer over to using this new class. The new class allows
      us to search for processs:
      1 - by name (equal to, starts with, ends with, contains, and regex)
      2 - by pid
      3 - And further check for parent pid == value, uid == value, gid == value, 
          euid == value, egid == value, arch == value, parent == value.
          
      This is all hookup up to the "platform process list" command which required
      adding dumping routines to dump process information. If the Host class 
      implements the process lookup routines, you can now lists processes on 
      your local machine:
      
      machine1.foo.com % lldb
      (lldb) platform process list 
      PID    PARENT USER       GROUP      EFF USER   EFF GROUP  TRIPLE                   NAME
      ====== ====== ========== ========== ========== ========== ======================== ============================
      99538  1      username   usergroup  username   usergroup  x86_64-apple-darwin      FileMerge
      94943  1      username   usergroup  username   usergroup  x86_64-apple-darwin      mdworker
      94852  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Safari
      94727  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Xcode
      92742  92710  username   usergroup  username   usergroup  i386-apple-darwin        debugserver
      
      
      This of course also works remotely with the lldb-platform:
      
      machine1.foo.com % lldb-platform --listen 1234
      
      machine2.foo.com % lldb
      (lldb) platform create remote-macosx
        Platform: remote-macosx
       Connected: no
      (lldb) platform connect connect://localhost:1444
        Platform: remote-macosx
          Triple: x86_64-apple-darwin
      OS Version: 10.6.7 (10J869)
          Kernel: Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386
        Hostname: machine1.foo.com
       Connected: yes
      (lldb) platform process list 
      PID    PARENT USER       GROUP      EFF USER   EFF GROUP  TRIPLE                   NAME
      ====== ====== ========== ========== ========== ========== ======================== ============================
      99556  244    username   usergroup  username   usergroup  x86_64-apple-darwin      trustevaluation
      99548  65539  username   usergroup  username   usergroup  x86_64-apple-darwin      lldb
      99538  1      username   usergroup  username   usergroup  x86_64-apple-darwin      FileMerge
      94943  1      username   usergroup  username   usergroup  x86_64-apple-darwin      mdworker
      94852  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Safari
      
      The lldb-platform implements everything with the Host:: layer, so this should
      "just work" for linux. I will probably be adding more stuff to the Host layer
      for launching processes and attaching to processes so that this support should
      eventually just work as well.
      
      Modified the target to be able to be created with an architecture that differs
      from the main executable. This is needed for iOS debugging since we can have
      an "armv6" binary which can run on an "armv7" machine, so we want to be able
      to do:
      
      % lldb
      (lldb) platform create remote-ios
      (lldb) file --arch armv7 a.out
      
      Where "a.out" is an armv6 executable. The platform then can correctly decide
      to open all "armv7" images for all dependent shared libraries.
      
      Modified the disassembly to show the current PC value. Example output:
      
      (lldb) disassemble --frame
      a.out`main:
         0x1eb7:  pushl  %ebp
         0x1eb8:  movl   %esp, %ebp
         0x1eba:  pushl  %ebx
         0x1ebb:  subl   $20, %esp
         0x1ebe:  calll  0x1ec3                   ; main + 12 at test.c:18
         0x1ec3:  popl   %ebx
      -> 0x1ec4:  calll  0x1f12                   ; getpid
         0x1ec9:  movl   %eax, 4(%esp)
         0x1ecd:  leal   199(%ebx), %eax
         0x1ed3:  movl   %eax, (%esp)
         0x1ed6:  calll  0x1f18                   ; printf
         0x1edb:  leal   213(%ebx), %eax
         0x1ee1:  movl   %eax, (%esp)
         0x1ee4:  calll  0x1f1e                   ; puts
         0x1ee9:  calll  0x1f0c                   ; getchar
         0x1eee:  movl   $20, (%esp)
         0x1ef5:  calll  0x1e6a                   ; sleep_loop at test.c:6
         0x1efa:  movl   $12, %eax
         0x1eff:  addl   $20, %esp
         0x1f02:  popl   %ebx
         0x1f03:  leave
         0x1f04:  ret
         
      This can be handy when dealing with the new --line options that was recently
      added:
      
      (lldb) disassemble --line
      a.out`main + 13 at test.c:19
         18  	{
      -> 19  		printf("Process: %i\n\n", getpid());
         20  	    puts("Press any key to continue..."); getchar();
      -> 0x1ec4:  calll  0x1f12                   ; getpid
         0x1ec9:  movl   %eax, 4(%esp)
         0x1ecd:  leal   199(%ebx), %eax
         0x1ed3:  movl   %eax, (%esp)
         0x1ed6:  calll  0x1f18                   ; printf
      
      Modified the ModuleList to have a lookup based solely on a UUID. Since the
      UUID is typically the MD5 checksum of a binary image, there is no need
      to give the path and architecture when searching for a pre-existing
      image in an image list.
      
      Now that we support remote debugging a bit better, our lldb_private::Module
      needs to be able to track what the original path for file was as the platform
      knows it, as well as where the file is locally. The module has the two 
      following functions to retrieve both paths:
      
      const FileSpec &Module::GetFileSpec () const;
      const FileSpec &Module::GetPlatformFileSpec () const;
      
      llvm-svn: 128563
      32e0a750
  23. Mar 26, 2011
  24. Mar 24, 2011
    • Greg Clayton's avatar
      Fixed the LLDB build so that we can have private types, private enums and · e0d378b3
      Greg Clayton authored
      public types and public enums. This was done to keep the SWIG stuff from
      parsing all sorts of enums and types that weren't needed, and allows us to
      abstract our API better.
      
      llvm-svn: 128239
      e0d378b3
    • Greg Clayton's avatar
      Did a lot more work on abtracting and organizing the platforms. · 1cb6496e
      Greg Clayton authored
      On Mac OS X we now have 3 platforms:
      PlatformDarwin - must be subclassed to fill in the missing pure virtual funcs
                       but this implements all the common functionality between
                       remote-macosx and remote-ios. It also allows for another
                       platform to be used (remote-gdb-server for now) when doing
                       remote connections. Keeping this pluggable will allow for
                       flexibility.
      PlatformMacOSX - Now implements both local and remote macosx desktop platforms.
      PlatformRemoteiOS - Remote only iOS that knows how to locate SDK files in the
                          cached SDK locations on the host.
      
      A new agnostic platform has been created:
      PlatformRemoteGDBServer - this implements the platform using the GDB remote 
                                protocol and uses the built in lldb_private::Host
                                static functions to implement many queries.
      
      llvm-svn: 128193
      1cb6496e
  25. Mar 23, 2011
    • Stephen Wilson's avatar
      linux: PlatformLinux improvements · ecc11474
      Stephen Wilson authored
          
      Add a few missing virtual methods to PlatformLinux and have it register itself
      with PluginManager.
      
      llvm-svn: 128128
      ecc11474
    • Greg Clayton's avatar
      Added new platform commands: · d314e810
      Greg Clayton authored
      platform connect <args>
      platform disconnect
      
      Each platform can decide the args they want to use for "platform connect". I 
      will need to add a function that gets the connect options for the current
      platform as each one can have different options and argument counts.
      
      Hooked up more functionality in the PlatformMacOSX and PlatformRemoteiOS.
      Also started an platform agnostic PlatformRemoteGDBServer.cpp which can end
      up being used by one or more actual platforms. It can also be specialized and
      allow for platform specific commands.
      
      llvm-svn: 128123
      d314e810
  26. Mar 20, 2011
    • Greg Clayton's avatar
      Split all of the core of LLDB.framework/lldb.so into a · 7a5388bf
      Greg Clayton authored
      static archive that can be linked against. LLDB.framework/lldb.so
      exports a very controlled API. Splitting the API into a static
      library allows other tools (debugserver for now) to use the power
      of the LLDB debugger core, yet not export it as its API is not
      portable or maintainable. The Host layer and many of the other
      internal only APIs can now be statically linked against.
      
      Now LLDB.framework/lldb.so links against "liblldb-core.a" instead
      of compiling the .o files only for the shared library. This fix
      is only for compiling with Xcode as the Makefile based build already
      does this.
      
      The Xcode projecdt compiler has been changed to LLVM. Anyone using
      Xcode 3 will need to manually change the compiler back to GCC 4.2,
      or update to Xcode 4.
      
      llvm-svn: 127963
      7a5388bf
  27. Mar 19, 2011
    • Greg Clayton's avatar
      Added more platform support. There are now some new commands: · ded470d3
      Greg Clayton authored
      platform status -- gets status information for the selected platform
      platform create <platform-name> -- creates a new instance of a remote platform
      platform list -- list all available platforms
      platform select -- select a platform instance as the current platform (not working yet)
      
      When using "platform create" it will create a remote platform and make it the
      selected platform. For instances for iPhone OS debugging on Mac OS X one can 
      do:
      
      (lldb) platform create remote-ios --sdk-version=4.0
      Remote platform: iOS platform
      SDK version: 4.0
      SDK path: "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0"
      Not connected to a remote device.
      (lldb) file ~/Documents/a.out
      Current executable set to '~/Documents/a.out' (armv6).
      (lldb) image list
      [  0] /Volumes/work/gclayton/Documents/devb/attach/a.out
      [  1] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/dyld
      [  2] /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.0/Symbols/usr/lib/libSystem.B.dylib
      
      
      Note that this is all happening prior to running _or_ connecting to a remote
      platform. Once connected to a remote platform the OS version might change which
      means we will need to update our dependecies. Also once we run, we will need
      to match up the actualy binaries with the actualy UUID's to files in the
      SDK, or download and cache them locally.
      
      This is just the start of the remote platforms, but this modification is the
      first iteration in getting the platforms really doing something.
      
      llvm-svn: 127934
      ded470d3
  28. Mar 10, 2011
    • Stephen Wilson's avatar
      Add Makefile support for the Platform plugins. · 16362652
      Stephen Wilson authored
      This patch supports building the Linux platform plugin, and should also support
      the MacOSX plugin as well (the MacOSX side has not been tested, unfortunately).
      A small typo was corrected in lldb.cpp to initialize the new platform code on
      Linux.
      
      llvm-svn: 127393
      16362652
  29. Mar 08, 2011
    • Greg Clayton's avatar
      LLDB now has "Platform" plug-ins. Platform plug-ins are plug-ins that provide · e996fd30
      Greg Clayton authored
      an interface to a local or remote debugging platform. By default each host OS
      that supports LLDB should be registering a "default" platform that will be
      used unless a new platform is selected. Platforms are responsible for things
      such as:
      - getting process information by name or by processs ID
      - finding platform files. This is useful for remote debugging where there is 
        an SDK with files that might already or need to be cached for debug access.
      - getting a list of platform supported architectures in the exact order they
        should be selected. This helps the native x86 platform on MacOSX select the
        correct x86_64/i386 slice from universal binaries.
      - Connect to remote platforms for remote debugging
      - Resolving an executable including finding an executable inside platform
        specific bundles (macosx uses .app bundles that contain files) and also
        selecting the appropriate slice of universal files for a given platform.
      
      So by default there is always a local platform, but remote platforms can be
      connected to. I will soon be adding a new "platform" command that will support
      the following commands:
      (lldb) platform connect --name machine1 macosx connect://host:port
      Connected to "machine1" platform.
      (lldb) platform disconnect macosx
      
      This allows LLDB to be well setup to do remote debugging and also once 
      connected process listing and finding for things like:
      (lldb) process attach --name x<TAB>
      
      The currently selected platform plug-in can now auto complete any available
      processes that start with "x". The responsibilities for the platform plug-in
      will soon grow and expand.
      
      llvm-svn: 127286
      e996fd30
Loading