Skip to content
  1. Jul 19, 2011
    • Enrico Granata's avatar
      The implementation of categories is now synchronization safe · 20edcdbe
      Enrico Granata authored
      Code cleanup:
       - The Format Manager implementation is now split between two files: FormatClasses.{h|cpp} where the
         actual formatter classes (ValueFormat, SummaryFormat, ...) are implemented and
         FormatManager.{h|cpp} where the infrastructure classes (FormatNavigator, FormatManager, ...)
         are contained. The wrapper code always remains in Debugger.{h|cpp}
       - Several leftover fields, methods and comments from previous design choices have been removed
      type category subcommands (enable, disable, delete) now can take a list of category names as input
       - for type category enable, saying "enable A B C" is the same as saying
          enable C
          enable B
          enable A
         (the ordering is relevant in enabling categories, and it is expected that a user typing
          enable A B C wants to look into category A, then into B, then into C and not the other
          way round)
       - for the other two commands, the order is not really relevant (however, the same inverted ordering
         is used for consistency)
      
      llvm-svn: 135494
      20edcdbe
    • Greg Clayton's avatar
      Abstract "struct sockaddr", "struct sockaddr_in", "struct sockaddr_in6" and · ad440da3
      Greg Clayton authored
      "struct sockaddr_storage" into a new host class called SocketAddress. This
      will allow us to control the host specific implementations (such as how to
      get the length) into a single Host specific class.
      
      llvm-svn: 135488
      ad440da3
    • 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
    • Enrico Granata's avatar
      Fixed a bug where deleting a regex summary would not immediately reflect in the variables display · 1490c6fd
      Enrico Granata authored
      The "systemwide summaries" feature has been removed and replaced with a more general and
      powerful mechanism.
      Categories:
       - summaries can now be grouped into buckets, called "categories" (it is expected that categories
         correspond to libraries and/or runtime environments)
       - to add a summary to a category, you can use the -w option to type summary add and give
         a category name (e.g. type summary add -f "foo" foo_t -w foo_category)
       - categories are by default disabled, which means LLDB will not look into them for summaries,
         to enable a category use "type category enable". once a category is enabled, LLDB will
         look into that category for summaries. the rules are quite trivial: every enabled category
         is searched for an exact match. if an exact match is nowhere to be found, any match is
         searched for in every enabled category (whether it involves cascading, going to base classes,
         ...). categories are searched into the order in which they were enabled (the most recently
         enabled category first, then the second most and so on..)
       - by default, most commands that deal with summaries, use a category named "default" if no
         explicit -w parameter is given (the observable behavior of LLDB should not change when
         categories are not explicitly used)
       - the systemwide summaries are now part of a "system" category
      
      llvm-svn: 135463
      1490c6fd
    • Johnny Chen's avatar
      Initialize the all important automatic variable 'lldb::ConnectionStatus status' before · 74549c82
      Johnny Chen authored
      invoking the Read(...) method to read in bytes.  This seems to fix the infinite looping
      I was seeing on SnowLeopard while running the test suite.
      
      llvm-svn: 135461
      74549c82
    • Johnny Chen's avatar
      349f0763
    • Johnny Chen's avatar
      f74cb50c
    • Johnny Chen's avatar
      Missed the interface file for SBFunction in the previous checkin. · d84a9a12
      Johnny Chen authored
      llvm-svn: 135436
      d84a9a12
    • Johnny Chen's avatar
      0eca544b
  2. Jul 18, 2011
  3. Jul 17, 2011
    • Greg Clayton's avatar
      Added a boolean to the pure virtual lldb_private::Process::CanDebug(...) · 3a29bdbe
      Greg Clayton authored
      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.
      
      llvm-svn: 135363
      3a29bdbe
  4. Jul 16, 2011
    • Johnny Chen's avatar
    • Johnny Chen's avatar
      Create an interface file for SBTarget named SBTarget.i which relieves SBTarget.h · dc7d3c12
      Johnny Chen authored
      of the duty of having SWIG docstring features and multiline string literals
      embedded within.
      
      lldb.swig now %include .../SBTarget.i, instead of .../SBTarget.h.  Will create
      other interface files and transition them over.
      
      Also update modify-python-lldb.py to better handle the trailing blank line right
      before the ending '"""' Python docstring delimiter.
      
      llvm-svn: 135355
      dc7d3c12
    • Peter Collingbourne's avatar
      Add missing #include, fixes Linux build · bac7150d
      Peter Collingbourne authored
      llvm-svn: 135346
      bac7150d
    • Greg Clayton's avatar
      Completed more work on the KDP darwin kernel debugging Process plug-in. · 4df8ddfc
      Greg Clayton authored
      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.
      
      llvm-svn: 135338
      4df8ddfc
    • Enrico Granata's avatar
      Some descriptive text for the Python script feature: · 0c5ef693
      Enrico Granata authored
       - help type summary add now gives some hints on how to use it
      frame variable and target variable now have a --no-summary-depth (-Y) option:
       - simply using -Y without an argument will skip one level of summaries, i.e.
         your aggregate types will expand their children and display no summary, even
         if they have one. children will behave normally
       - using -Y<int>, as in -Y4, -Y7, ..., will skip as many levels of summaries as
         given by the <int> parameter (obviously, -Y and -Y1 are the same thing). children
         beneath the given depth level will behave normally
       -Y0 is the same as omitting the --no-summary-depth parameter entirely
       This option replaces the defined-but-unimplemented --no-summary
      
      llvm-svn: 135336
      0c5ef693
    • Sean Callanan's avatar
      Added support for dynamic detection of AVX, and · c4ffe37c
      Sean Callanan authored
      fixed a few bugs that revealed.  Now the "register
      read" command should show AVX registers
      (ymm0-ymm15) on Mac OS X platforms that support
      them.
      
      When testing this on Mac OS X, run debugserver
      manually, like this:
      
      debugserver --native-regs localhost:1111 /path/to/executable
      
      Then
      
      lldb /path/to/executable
      ...
      (lldb) process connect connect://localhost:1111
      
      llvm-svn: 135331
      c4ffe37c
    • Enrico Granata's avatar
      System-wide summaries: · 9dd75c88
      Enrico Granata authored
       - Summaries for char*, const char* and char[] are loaded at startup as
         system-wide summaries. This means you cannot delete them unless you use
         the -a option to type summary delete/clear
       - You can add your own system-wide summaries by using the -w option to type
         summary add
      Several code improvements for the Python summaries feature
      
      llvm-svn: 135326
      9dd75c88
    • Peter Collingbourne's avatar
      Fix gcc build error · 6b917bb9
      Peter Collingbourne authored
      llvm-svn: 135325
      6b917bb9
    • Johnny Chen's avatar
      Add TestValueAPI.py to exercise the newly added/modified SBValue APIs: · 5819ab49
      Johnny Chen authored
      o GetChildAtIndex, and
      o GetValueForExpressionPath
      
      llvm-svn: 135315
      5819ab49
  5. Jul 15, 2011
    • Johnny Chen's avatar
      Add some more docstrings for SBCompileUnit and SBBreakpoint, plus incorporate... · 135f63fb
      Johnny Chen authored
      Add some more docstrings for SBCompileUnit and SBBreakpoint, plus incorporate the doxgen doc block of
      
      SBValue::GetChildAtIndex(uint32_t idx, 
                               lldb::DynamicValueType use_dynamic,
                               bool can_create_synthetic);
      
      into the SBValue docstrings.
      
      llvm-svn: 135295
      135f63fb
    • Greg Clayton's avatar
      Added the ability to get synthetic child values from SBValue objects that · f6602482
      Greg Clayton authored
      represent pointers and arrays by adding an extra parameter to the 
      
      SBValue
      SBValue::GetChildAtIndex (uint32_t idx, 
                               DynamicValueType use_dynamic, 
                               bool can_create_synthetic);
      
      The new "can_create_synthetic" will allow you to create child values that
      aren't actually a part of the original type. So if you code like:
      
      int *foo_ptr = ...
      
      And you have a SBValue that contains the value for "foo_ptr":
      
      SBValue foo_value = ...
      
      You can now get the "foo_ptr[12]" item by doing this:
      
      v = foo_value.GetChiltAtIndex (12, lldb.eNoDynamicValues, True);
      
      Normall the "foo_value" would only have one child value (an integer), but
      we can create "synthetic" child values by treating the pointer as an array.
      
      Likewise if you have code like:
      
      int array[2];
      
      array_value = ....
      
      v = array_value.GetChiltAtIndex (0);     // Success, v will be valid
      v = array_value.GetChiltAtIndex (1);     // Success, v will be valid
      v = array_value.GetChiltAtIndex (2);     // Fail, v won't be valid, "2" is not a valid zero based index in "array"
      
      But if you use the ability to create synthetic children:
      
      v = array_value.GetChiltAtIndex (0, lldb.eNoDynamicValues, True);     // Success, v will be valid
      v = array_value.GetChiltAtIndex (1, lldb.eNoDynamicValues, True);     // Success, v will be valid
      v = array_value.GetChiltAtIndex (2, lldb.eNoDynamicValues, True);     // Success, v will be valid
      
      llvm-svn: 135292
      f6602482
    • Greg Clayton's avatar
      Fixed the comment lines in the file comment headers. · 59ec512c
      Greg Clayton authored
      llvm-svn: 135284
      59ec512c
    • Greg Clayton's avatar
      Added the ability to connect using "tcp://<host>:<port>" which is the · 57508026
      Greg Clayton authored
      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.
      
       
      
      llvm-svn: 135277
      57508026
    • Greg Clayton's avatar
      Hollowed out process plug-in to do KDP darwin kernel debugging. · f9765acd
      Greg Clayton authored
      llvm-svn: 135240
      f9765acd
    • Enrico Granata's avatar
      Python summary strings: · f2bbf717
      Enrico Granata authored
       - you can use a Python script to write a summary string for data-types, in one of
         three ways:
          -P option and typing the script a line at a time
          -s option and passing a one-line Python script
          -F option and passing the name of a Python function
         these options all work for the "type summary add" command
         your Python code (if provided through -P or -s) is wrapped in a function
         that accepts two parameters: valobj (a ValueObject) and dict (an LLDB
         internal dictionary object). if you use -F and give a function name,
         you're expected to define the function on your own and with the right
         prototype. your function, however defined, must return a Python string
       - test case for the Python summary feature
       - a few quirks:
        Python summaries cannot have names, and cannot use regex as type names
        both issues will be fixed ASAP
      major redesign of type summary code:
       - type summary working with strings and type summary working with Python code
         are two classes, with a common base class SummaryFormat
       - SummaryFormat classes now are able to actively format objects rather than
         just aggregating data
       - cleaner code to print descriptions for summaries
      the public API now exports a method to easily navigate a ValueObject hierarchy
      New InputReaderEZ and PriorityPointerPair classes
      Several minor fixes and improvements
      
      llvm-svn: 135238
      f2bbf717
    • Johnny Chen's avatar
    • Johnny Chen's avatar
      Add usage docstrings to SBTarget, SBProcess, and SBThread. · e625325d
      Johnny Chen authored
      llvm-svn: 135221
      e625325d
    • Johnny Chen's avatar
      Minor change of variable name, from m to b (for breakpoint). · b3f07c19
      Johnny Chen authored
      llvm-svn: 135214
      b3f07c19
    • Johnny Chen's avatar
      Fixed a crasher where entering 'help disasm' on the command line would crash lldb. · 331eff39
      Johnny Chen authored
      The reasom of the crash is because of a missing entry in the argument table corresponding to eArgTypeUnsignedInteger.
      Add such entry and modify the call site of the crash to go through a fail-fast API to retrieve the argument table.
      
      Add a regression test to TestHelp.py.
      
      llvm-svn: 135206
      331eff39
  6. Jul 14, 2011
Loading