Skip to content
  1. Oct 06, 2012
  2. Oct 05, 2012
  3. Oct 04, 2012
  4. Oct 03, 2012
  5. Oct 02, 2012
  6. Oct 01, 2012
  7. Sep 29, 2012
    • Jason Molenda's avatar
      Add the RelocateOrLoadKernel and LoadKernel methods to ProcessGDBRemote::DoRemoteConnect(). · d1fae144
      Jason Molenda authored
      When attaching to a remote system that does not look like a typical vendor system, and no
      executable binary was specified to lldb, check a couple of fixed locations where kernels
      running in ASLR mode (slid in memory to a random address) store their load addr when booted
      in debug mode, and relocate the symbols or load the kernel wholesale from the host computer
      if we can find it.  
      
      <rdar://problem/7714201>
      
      llvm-svn: 164888
      d1fae144
    • Jason Molenda's avatar
      Add support for debugging KASLR kernels via kdp (the kernel being · 4bd4e7e3
      Jason Molenda authored
      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>
      
      llvm-svn: 164881
      4bd4e7e3
    • Sean Callanan's avatar
      Now in the presence of an Objective-C version 2 · eb918cd7
      Sean Callanan authored
      runtime, we read method signatures for both class
      and instance methods out of the runtime data.
      
      (lldb) fr var str
      (NSString *) str = 0x0000000105000180 @"Hello from '/Volumes/Data/projects/lldb/test/lang/objc/foundation/a.out'"
      (lldb) expr str.length
      (unsigned long long) $0 = 72
      (lldb) expr [NSString stringWithCString:"Hello world!" encoding:1]
      (id) $1 = 0x0000000105100050
      (lldb) po $1
      $1 = 0x0000000105100050 Hello world!
      
      (lldb) fr var array1
      (NSArray *) array1 = 0x000000010010a6e0 @"3 objects"
      (lldb) expr array1.count
      (unsigned long long) $0 = 3
      (lldb) expr [array1 objectAtIndex:2]
      (id) $1 = 0x00000001000025d0
      (lldb) po $1
      $1 = 0x00000001000025d0 array1 object3
      
      Notice that both regular and property-style notation
      work.  I still need to add explicit support for
      properties with non-default setters/getters.
      
      This information is only queried if an Objective-C
      object does not have debug information for a complete
      type available.  Otherwise we query debug information
      as usual.
      
      llvm-svn: 164878
      eb918cd7
    • Enrico Granata's avatar
    • Enrico Granata's avatar
      <rdar://problem/12378910> Fixing a potential crasher in the data formatters... · 60b81dff
      Enrico Granata authored
      <rdar://problem/12378910> Fixing a potential crasher in the data formatters where we fail to check for NULL or empty class name
      
      llvm-svn: 164870
      60b81dff
    • Enrico Granata's avatar
      Implementing plugins that provide commands. · 21dfcd9d
      Enrico Granata authored
      This checkin adds the capability for LLDB to load plugins from external dylibs that can provide new commands
      It exports an SBCommand class from the public API layer, and a new SBCommandPluginInterface
      
      There is a minimal load-only plugin manager built into the debugger, which can be accessed via Debugger::LoadPlugin.
      
      Plugins are loaded from two locations at debugger startup (LLDB.framework/Resources/PlugIns and ~/Library/Application Support/LLDB/PlugIns) and more can be (re)loaded via the "plugin load" command
      
      For an example of how to make a plugin, refer to the fooplugin.cpp file in examples/plugins/commands
      
      Caveats:
      	Currently, the new API objects and features are not exposed via Python.
      	The new commands can only be "parsed" (i.e. not raw) and get their command line via a char** parameter (we do not expose our internal Args object)
      	There is no unloading feature, which can potentially lead to leaks if you overwrite the commands by reloading the same or different plugins
      	There is no API exposed for option parsing, which means you may need to use getopt or roll-your-own
      
      llvm-svn: 164865
      21dfcd9d
  8. Sep 28, 2012
  9. Sep 27, 2012
Loading