Skip to content
  1. Mar 12, 2012
    • Enrico Granata's avatar
      Added formatters for libc++ (http://libcxx.llvm.org): · c7f87306
      Enrico Granata authored
       std::string has a summary provider
       std::vector std::list and std::map have both a summary and a synthetic children provider
      Given the usage of a custom namespace (std::__1::classname) for the implementation of libc++, we keep both libstdcpp and libc++ formatters enabled at the same time since that raises no conflicts and enabled for seamless transition between the two
      The formatters for libc++ reside in a libcxx category, and are loaded from libcxx.py (to be found in examples/synthetic)
      
      The formatters-stl test cases have been divided to be separate for libcxx and libstdcpp. This separation is necessary because
       (a) we need different compiler flags for libc++ than for libstdcpp
       (b) libc++ inlines a lot more than libstdcpp and some code changes were required to accommodate this difference
      
      llvm-svn: 152570
      c7f87306
  2. Mar 08, 2012
  3. Mar 03, 2012
    • Enrico Granata's avatar
      added a new formatter for CF(Mutable)BitVector · 385ad4e4
      Enrico Granata authored
      fixed a few potential NULL-pointer derefs in ValueObject
      we have a way to provide docstrings for properties we add to the SWIG layer - a few of these properties have a docstring already, more will come in future commits
      added a new bunch of properties to SBData to make it more natural and Python-like to access the data they contain
      
      llvm-svn: 151962
      385ad4e4
  4. Mar 02, 2012
  5. Mar 01, 2012
    • Enrico Granata's avatar
      (a) adding an introspection formatter for NS(Mutable)IndexSet · 896cd1d3
      Enrico Granata authored
      (b) fixes and improvements to the formatters for NSDate and NSString
      (c) adding an introspection formatter for NSCountedSet
      (d) making the Objective-C formatters test cases pass on both 64 and 32 bit
          one of the test cases is marked as expected failure on i386 - support needs to be added to the LLDB core for it to pass
      
      llvm-svn: 151826
      896cd1d3
  6. Feb 29, 2012
    • Enrico Granata's avatar
      This commit: · 7bc0ec3a
      Enrico Granata authored
       a) adds a Python summary provider for NSDate
       b) changes the initialization for ScriptInterpreter so that we are not passing a bulk of Python-specific function pointers around
       c) provides a new ScriptInterpreterObject class that allows for ref-count safe wrapping of scripting objects on the C++ side
       d) contains much needed performance improvements:
          1) the pointer to the Python function generating a scripted summary is now cached instead of looked up every time
          2) redundant memory reads in the Python ObjC runtime wrapper are eliminated
          3) summaries now use the m_summary_str in ValueObject to store their data instead of passing around ( == copying) an std::string object
       e) contains other minor fixes, such as adding descriptive error messages for some cases of summary generation failure
      
      llvm-svn: 151703
      7bc0ec3a
  7. Feb 24, 2012
    • Enrico Granata's avatar
      This patch provides a set of formatters for most of the commonly used Cocoa classes. · d3d444f8
      Enrico Granata authored
      The formatter for NSString is an improved version of the one previously shipped as an example, the others are new in design and implementation.
      A more robust and OO-compliant Objective-C runtime wrapper is provided for runtime versions 1 and 2 on 32 and 64 bit.
      The formatters are contained in a category named "AppKit", which is not enabled at startup.
      
      llvm-svn: 151299
      d3d444f8
  8. Feb 21, 2012
  9. Feb 17, 2012
    • Enrico Granata's avatar
      Adding formatters for several useful Objective-C/Cocoa data types. The new... · 864e3e84
      Enrico Granata authored
      Adding formatters for several useful Objective-C/Cocoa data types. The new categories are not enabled at startup, but can be manually activated if desired.
      Adding new API calls to SBValue to be able to retrieve the associated formatters
      Some refactoring to FormatNavigator::Get() in order to shrink its size down to more manageable terms (a future, massive, refactoring effort will still be needed)
      Test cases added for the above
      
      llvm-svn: 150784
      864e3e84
  10. Feb 15, 2012
    • Enrico Granata's avatar
      <rdar://problem/10062621> · 061858ce
      Enrico Granata authored
      New public API for handling formatters: creating, deleting, modifying categories, and formatters, and managing type/formatter association.
      This provides SB classes for each of the main object types involved in providing formatter support:
       SBTypeCategory
       SBTypeFilter
       SBTypeFormat
       SBTypeSummary
       SBTypeSynthetic
      plus, an SBTypeNameSpecifier class that is used on the public API layer to abstract the notion that formatters can be applied to plain type-names as well as to regular expressions
      For naming consistency, this patch also renames a lot of formatters-related classes.
      Plus, the changes in how flags are handled that started with summaries is now extended to other classes as well. A new enum (lldb::eTypeOption) is meant to support this on the public side.
      The patch also adds several new calls to the formatter infrastructure that are used to implement by-index accessing and several other design changes required to accommodate the new API layer.
      An architectural change is introduced in that backing objects for formatters now become writable. On the public API layer, CoW is implemented to prevent unwanted propagation of changes.
      Lastly, there are some modifications in how the "default" category is constructed and managed in relation to other categories.
      
      llvm-svn: 150558
      061858ce
  11. Feb 03, 2012
    • Enrico Granata's avatar
      Added a new --omit-names (-O, uppercase letter o) option to "type summary add". · a6a60d0d
      Enrico Granata authored
      When used in conjunction with --inline-children, this option will cause the names of the values to be omitted from the output. This can be beneficial in cases such as vFloat, where it will compact the representation from
      ([0]=1,[1]=2,[2]=3,[3]=4) to (1, 2, 3, 4).
      Added a test case to check that the new option works correctly.
      Also took some time to revisit SummaryFormat and related classes and tweak them for added readability and maintainability.
      Finally, added a new class name to which the std::string summary should be applied.
      
      llvm-svn: 149644
      a6a60d0d
  12. Jan 31, 2012
  13. Nov 04, 2011
    • Greg Clayton's avatar
      Fixed the Xcode project building of LLVM to be a bit more user friendly: · dce502ed
      Greg Clayton authored
      - If you download and build the sources in the Xcode project, x86_64 builds
        by default using the "llvm.zip" checkpointed LLVM.
      - If you delete the "lldb/llvm.zip" and the "lldb/llvm" folder, and build the
        Xcode project will download the right LLVM sources and build them from 
        scratch
      - If you have a "lldb/llvm" folder already that contains a "lldb/llvm/lib"
        directory, we will use the sources you have placed in the LLDB directory.
        
      Python can now be disabled for platforms that don't support it. 
      
      Changed the way the libllvmclang.a files get used. They now all get built into
      arch specific directories and never get merged into universal binaries as this
      was causing issues where you would have to go and delete the file if you wanted
      to build an extra architecture slice.
      
      llvm-svn: 143678
      dce502ed
  14. Oct 27, 2011
    • Greg Clayton's avatar
      Added support for the new ".apple_objc" accelerator tables. These tables are · 5009f9d5
      Greg Clayton authored
      in the same hashed format as the ".apple_names", but they map objective C
      class names to all of the methods and class functions. We need to do this 
      because in the DWARF the methods for Objective C are never contained in the
      class definition, they are scattered about at the translation unit level and
      they don't even have attributes that say the are contained within the class
      itself. 
      
      Added 3 new formats which can be used to display data:
      
          eFormatAddressInfo
          eFormatHexFloat
          eFormatInstruction
          
      eFormatAddressInfo describes an address such as function+offset and file+line,
      or symbol + offset, or constant data (c string, 2, 4, 8, or 16 byte constants).
      The format character for this is "A", the long format is "address".
      
      eFormatHexFloat will print out the hex float format that compilers tend to use.
      The format character for this is "X", the long format is "hex float".
      
      eFormatInstruction will print out disassembly with bytes and it will use the
      current target's architecture. The format character for this is "i" (which
      used to be being used for the integer format, but the integer format also has
      "d", so we gave the "i" format to disassembly), the long format is 
      "instruction".
      
      Mate the lldb::FormatterChoiceCriterion enumeration private as it should have
      been from the start. It is very specialized and doesn't belong in the public 
      API.
      
      llvm-svn: 143114
      5009f9d5
  15. Oct 12, 2011
  16. Sep 07, 2011
    • Enrico Granata's avatar
      Refactoring of Get() methods in FormatManager/FormatCategory to have... · 855cd901
      Enrico Granata authored
      Refactoring of Get() methods in FormatManager/FormatCategory to have explicative names and return shared-pointers instead of bools
      Reduced the amount of memory required to avoid loops in DumpPrintableRepresentation() from 32 bits down to 1 bit
       - Additionally, disallowed creating summary strings of the form ${var%S} which did nothing but cause endless loops by definition
      
      llvm-svn: 139201
      855cd901
  17. Sep 06, 2011
    • Enrico Granata's avatar
      Redesign of the interaction between Python and frozen objects: · 9128ee2f
      Enrico Granata authored
       - introduced two new classes ValueObjectConstResultChild and ValueObjectConstResultImpl: the first one is a ValueObjectChild obtained from
         a ValueObjectConstResult, the second is a common implementation backend for VOCR and VOCRCh of method calls meant to read through pointers stored
         in frozen objects ; now such reads transparently move from host to target as required
       - as a consequence of the above, removed code that made target-memory copies of expression results in several places throughout LLDB, and also
         removed code that enabled to recognize an expression result VO as such
       - introduced a new GetPointeeData() method in ValueObject that lets you read a given amount of objects of type T from a VO
         representing a T* or T[], and doing dereferences transparently
         in private layer it returns a DataExtractor ; in public layer it returns an instance of a newly created lldb::SBData
       - as GetPointeeData() does the right thing for both frozen and non-frozen ValueObject's, reimplemented ReadPointedString() to use it
         en lieu of doing the raw read itself
       - introduced a new GetData() method in ValueObject that lets you get a copy of the data that backs the ValueObject (for pointers,
         this returns the address without any previous dereferencing steps ; for arrays it actually reads the whole chunk of memory)
         in public layer this returns an SBData, just like GetPointeeData()
       - introduced a new CreateValueFromData() method in SBValue that lets you create a new SBValue from a chunk of data wrapped in an SBData
         the limitation to remember for this kind of SBValue is that they have no address: extracting the address-of for these objects (with any
         of GetAddress(), GetLoadAddress() and AddressOf()) will return invalid values
       - added several tests to check that "p"-ing objects (STL classes, char* and char[]) will do the right thing
      Solved a bug where global pointers to global variables were not dereferenced correctly for display
      New target setting "max-string-summary-length" gives the maximum number of characters to show in a string when summarizing it, instead of the hardcoded 128
      Solved a bug where the summary for char[] and char* would not be shown if the ValueObject's were dumped via the "p" command
      Removed m_pointers_point_to_load_addrs from ValueObject. Introduced a new m_address_type_of_children, which each ValueObject can set to tell the address type
       of any pointers and/or references it creates. In the current codebase, this is load address most of the time (the only notable exception being file
       addresses that generate file address children UNLESS we have a live process)
      Updated help text for summary-string
      Fixed an issue in STL formatters where std::stlcontainer::iterator would match the container's synthetic children providers
      Edited the syntax and help for some commands to have proper argument types
      
      llvm-svn: 139160
      9128ee2f
  18. Aug 23, 2011
  19. Aug 22, 2011
    • Enrico Granata's avatar
      Code cleanup and refactoring (round 4): · 1d887499
      Enrico Granata authored
       - FormatCategories now are directly mapped by ConstString objects instead of going through
         const char* -> ConstString -> const char*
       - FormatCategory callback does not pass category name anymore. This is not necessary because
         FormatCategory objects themselves hold their name as a member variable
      
      llvm-svn: 138254
      1d887499
    • Enrico Granata's avatar
      - Support for Python namespaces: · def5391a
      Enrico Granata authored
        If you have a Python module foo, in order to use its contained objects in LLDB you do not need to use
        'from foo import *'. You can use 'import foo', and then refer to items in foo as 'foo.bar', and LLDB
        will know how to resolve bar as a member of foo.
        Accordingly, GNU libstdc++ formatters have been moved from the global namespace to gnu_libstdcpp and a few
        test cases are also updated to reflect the new convention. Python docs suggest using a plain 'import' en lieu of
        'from-import'.
      
      llvm-svn: 138244
      def5391a
  20. Aug 19, 2011
    • Enrico Granata's avatar
      Third round of code cleanups: · 02b6676d
      Enrico Granata authored
       - 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.
      
      llvm-svn: 138020
      02b6676d
  21. Aug 18, 2011
    • Enrico Granata's avatar
      Second round of code cleanups: · 85933ed4
      Enrico Granata authored
       - reorganizing classes layout to have public part first
         Typedefs that we want to keep private, but must be defined for some public code to work correctly are an exception
       - avoiding methods in the form T foo() { code; } all on one-line
       - moving method implementations from .h to .cpp whenever feasible
         Templatized code is an exception and so are very small methods
       - generally, adhering to coding conventions followed project-wide
      Functional changes:
       - fixed an issue where using ${var} in a summary for an aggregate, and then displaying a pointer-to-aggregate would lead to no summary being displayed
         The issue was not a major one because all ${var} was meant to do in that context was display an error for invalid use of pointer
         Accordingly fixed test cases and added a new test case
      
      llvm-svn: 137944
      85933ed4
    • Enrico Granata's avatar
      First round of code cleanups: · c482a192
      Enrico Granata authored
       - all instances of "vobj" have been renamed to "valobj"
       - class Debugger::Formatting has been renamed to DataVisualization (defined in FormatManager.h/cpp)
         The interface to this class has not changed
       - FormatCategory now uses ConstString's as keys to the navigators instead of repeatedly casting
         from ConstString to const char* and back all the time
         Next step is making the same happen for categories themselves
       - category gnu-libstdc++ is defined in the constructor for a FormatManager
         The source code for it is defined in gnu_libstdcpp.py, drawn from examples/synthetic at compile time
         All references to previous 'osxcpp' name have been removed from both code and file names
      Functional changes:
       - the name of the option to use a summary string for 'type summary add' has changed from the previous --format-string
         to the new --summary-string. It is expected that the short option will change from -f to -s, and -s for --python-script
         will become -o
      
      llvm-svn: 137886
      c482a192
  22. Aug 12, 2011
    • Enrico Granata's avatar
      *Some more optimizations in usage of ConstString · 22c55d18
      Enrico Granata authored
      *New setting target.max-children-count gives an upper-bound to the number of child objects that will be displayed at each depth-level
        This might be a breaking change in some scenarios. To override the new limit you can use the --show-all-children (-A) option
        to frame variable or increase the limit in your lldbinit file
      *Command "type synthetic" has been split in two:
        - "type synthetic" now only handles Python synthetic children providers
        - the new command "type filter" handles filters
        Because filters and synthetic providers are both ways to replace the children of a ValueObject, only one can be effective at any given time.
      
      llvm-svn: 137416
      22c55d18
  23. Aug 10, 2011
    • Greg Clayton's avatar
      While tracking down memory consumption issue a few things were needed: the · 3418c857
      Greg Clayton authored
      ability to dump more information about modules in "target modules list". We
      can now dump the shared pointer reference count for modules, the pointer to
      the module itself (in case performance tools can help track down who has
      references to said pointer), and the modification time.
      
      Added "target delete [target-idx ...]" to be able to delete targets when they
      are no longer needed. This will help track down memory usage issues and help 
      to resolve when module ref counts keep getting incremented. If the command gets
      no arguments, the currently selected target will be deleted. If any arguments 
      are given, they must all be valid target indexes (use the "target list" 
      command to get the current target indexes).
      
      Took care of a bunch of "no newline at end of file" warnings.
      
      TimeValue objects can now dump their time to a lldb_private::Stream object.
      
      Modified the "target modules list --global" command to not error out if there
      are no targets since it doesn't require a target.
      
      Fixed an issue in the MacOSX DYLD dynamic loader plug-in where if a shared 
      library was updated on disk, we would keep using the older one, even if it was
      updated.
      
      Don't allow the ModuleList::GetSharedModule(...) to return an empty module.
      Previously we could specify a valid path on disc to a module, and specify an
      architecture that wasn't contained in that module and get a shared pointer to
      a module that wouldn't be able to return an object file or a symbol file. We
      now make sure an object file can be extracted prior to adding the shared pointer
      to the module to get added to the shared list.
      
      llvm-svn: 137196
      3418c857
  24. Aug 04, 2011
    • Enrico Granata's avatar
      New formatting symbol %# can be used in summary strings to get the "count of... · 5dfd49cc
      Enrico Granata authored
      New formatting symbol %# can be used in summary strings to get the "count of children" of a variable
       - accordingly, the test cases for the synthetic providers for the std:: containers have been edited to use
         ${svar%#} instead of ${svar.len} to print out the count of elements ; the .len synthetic child has been
         removed from the synthetic providers
      The synthetic children providers for the std:: containers now return None when asked for children indexes >= num_children()
      Basic code to support filter names based on regular expressions (WIP)
      
      llvm-svn: 136862
      5dfd49cc
  25. 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
    • 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
  26. Jul 15, 2011
    • 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
  27. Jul 13, 2011
    • Enrico Granata's avatar
      smarter summary strings: · f4efecd9
      Enrico Granata authored
       - formats %s %char[] %c and %a now work to print 0-terminated c-strings if they are applied to a char* or char[] even without the [] operator (e.g. ${var%s})
       - array formats (char[], intN[], ..) now work when applied to an array of a scalar type even without the [] operator (e.g. ${var%int32_t[]})
      LLDB will not crash because of endless loop when trying to obtain a summary for an object that has no value and references itself in its summary string
      In many cases, a wrong summary string will now display an "<error>" message instead of giving out an empty string
      
      llvm-svn: 135007
      f4efecd9
  28. Jul 12, 2011
    • Enrico Granata's avatar
      named summaries: · f9fa6ee5
      Enrico Granata authored
       - a new --name option for "type summary add" lets you give a name to a summary
       - a new --summary option for "frame variable" lets you bind a named summary to one or more variables
      ${var%s} now works for printing the value of 0-terminated CStrings
      type format test case now tests for cascading
       - this is disabled on GCC because GCC may end up stripping typedef chains, basically breaking cascading
      new design for the FormatNavigator class
      new template class CleanUp2 meant to support cleanup routines with 1 additional parameter beyond resource handle
      
      llvm-svn: 134943
      f9fa6ee5
  29. Jul 06, 2011
  30. Jul 02, 2011
    • Enrico Granata's avatar
      several improvements to "type summary": · 0a3958e0
      Enrico Granata authored
       - type names can now be regular expressions (exact matching is done first, and is faster)
       - integral (and floating) types can be printed as bitfields, i.e. ${var[low-high]} will extract bits low thru high of the value and print them
       - array subscripts are supported, both for arrays and for pointers. the syntax is ${*var[low-high]}, or ${*var[]} to print the whole array (the latter only works for statically sized arrays)
       - summary is now printed by default when a summary string references a variable. if that variable's type has no summary, value is printed instead. to force value, you can use %V as a format specifier
       - basic support for ObjectiveC:
        - ObjectiveC inheritance chains are now walked through
        - %@ can be specified as a summary format, to print the ObjectiveC runtime description for an object
       - some bug fixes
      
      llvm-svn: 134293
      0a3958e0
  31. Jun 30, 2011
    • Enrico Granata's avatar
      This commit adds a new top subcommand "summary" to command type named "type".... · 4becb37e
      Enrico Granata authored
      This commit adds a new top subcommand "summary" to command type named "type". Currently this command
      implements three commands:
      
      type summary add <format> <typename1> [<typename2> ...]
      type summary delete <typename1> [<typename2> ...]
      type summary list [<typename1> [<typename2>] ...]
      type summary clear
      
      This allows you to specify the default format that will be used to display
      summaries for variables, shown when you use "frame variable" or "expression", or the SBValue classes.
      
      Examples:
      type summary add "x = ${var.x}" Point
      
      type summary list
      
      type summary add --one-liner SimpleType
      
      llvm-svn: 134108
      4becb37e
  32. Jun 23, 2011
    • Greg Clayton's avatar
      Centralized all of the format to c-string and to format character code inside · bb7f31fa
      Greg Clayton authored
      the FormatManager class. Modified the format arguments in any commands to be
      able to use a single character format, or a full format name, or a partial 
      format name if no full format names match.
      
      Modified any code that was displaying formats to use the new FormatManager
      calls so that our help text and errors never get out of date.
      
      Modified the display of the "type format list" command to be a bit more
      human readable by showing the format as a format string rather than the single
      character format char.
      
      llvm-svn: 133765
      bb7f31fa
    • Greg Clayton's avatar
      Committing type format code for Enrico Granata. · 4a33d318
      Greg Clayton authored
      This commit adds a new top level command named "type". Currently this command
      implements three commands:
      
      type format add <format> <typename1> [<typename2> ...]
      type format delete <typename1> [<typename2> ...]
      type format list [<typename1> [<typename2>] ...]
      
      This allows you to specify the default format that will be used to display
      types when you use "frame variable" or "expression", or the SBValue classes.
      
      Examples:
      
      // Format uint*_t as hex
      type format add x uint16_t uint32_t uint64_t
      
      // Format intptr_t as a pointer
      type format add p intptr_t
      
      The format characters are the same as "printf" for the most part with many
      additions. These format character specifiers are also used in many other 
      commands ("frame variable" for one). The current list of format characters
      include:
      
      a - char buffer
      b - binary
      B - boolean
      c - char
      C - printable char
      d - signed decimal
      e - float
      f - float
      g - float
      i - signed decimal
      I - complex integer
      o - octal
      O - OSType
      p - pointer
      s - c-string
      u - unsigned decimal
      x - hex
      X - complex float
      y - bytes
      Y - bytes with ASCII
      
      llvm-svn: 133728
      4a33d318
Loading