Skip to content
  1. Jan 09, 2013
  2. Dec 14, 2012
  3. Dec 12, 2012
    • Jim Ingham's avatar
      Fixed a few bugs in the "step in" thread plan logic. · c627682e
      Jim Ingham authored
      Added a "step-in-target" flag to "thread step-in" so if you have something like:
      
      Process 28464 stopped
      * thread #1: tid = 0x1c03, function: main , stop reason = breakpoint 1.1
          frame #0: 0x0000000100000e08 a.out`main at main.c:62
         61         
      -> 62         int A6 = complex (a(4), b(5), c(6)); // Stop here to step targetting b and hitting breakpoint.
         63             
      
      and you want to get into "complex" skipping a, b and c, you can do:
      
      (lldb) step -t complex
      Process 28464 stopped
      * thread #1: tid = 0x1c03, function: complex , stop reason = step in
          frame #0: 0x0000000100000d0d a.out`complex at main.c:44
         41     
         42     int complex (int first, int second, int third)
         43     {
      -> 44         return first + second + third;  // Step in targetting complex should stop here
         45     }
         46         
         47     int main (int argc, char const *argv[])
      
      llvm-svn: 170008
      c627682e
  4. Dec 06, 2012
    • Jim Ingham's avatar
      b58671ec
    • Greg Clayton's avatar
      <rdar://problem/12560257> · 4ef877f5
      Greg Clayton authored
      Fixed zero sized arrays to work correctly. This will only happen once we get a clang that emits correct debug info for zero sized arrays. For now I have marked the TestStructTypes.py as an expected failure.
      
      llvm-svn: 169465
      4ef877f5
    • Sean Callanan's avatar
      Rewrote the bitfield logic. Major changes include: · faa0bb3f
      Sean Callanan authored
      - Removed the BitfieldMap class because it is unnecessary.
        We now just track the most recently added field.
      
      - Moved the code that calculates bitfield widths so it
        can also be used to determine whether it's necessary
        to insert anonymous fields.
      
      - Simplified the anonymous field calculation code into
        three cases (two of which are resolved identically).
      
      - Beefed up the bitfield testcase.
      
      llvm-svn: 169449
      faa0bb3f
  5. Dec 04, 2012
    • Greg Clayton's avatar
      <rdar://problem/12798131> · 3bcdfc0e
      Greg Clayton authored
      Cleaned up the option parsing code to always pass around the short options as integers. Previously we cast this down to "char" and lost some information. I recently added an assert that would detect duplicate short character options which was firing during the test suite.
      
      This fix does the following:
      - make sure all short options are treated as "int"
      - make sure that short options can be non-printable values when a short option is not required or when an option group is mixed into many commands and a short option is not desired
      - fix the help printing to "do the right thing" in all cases. Previously if there were duplicate short character options, it would just not emit help for the duplicates
      - fix option parsing when there are duplicates to parse options correctly. Previously the option parsing, when done for an OptionGroup, would just start parsing options incorrectly by omitting table entries and it would end up setting the wrong option value
      
      llvm-svn: 169189
      3bcdfc0e
  6. Nov 27, 2012
  7. Nov 26, 2012
    • Daniel Malea's avatar
      Improvement to TestGlobalVariables fix · b0916015
      Daniel Malea authored
      - use lldb settings command instead of os.environ
      - use dyldPath fixture variable instead of hardcoding LD_LIBRARY_PATH
      - add tear-down hook to restore environment after testcase is run
      
      llvm-svn: 168613
      b0916015
    • Daniel Malea's avatar
      Fix for TestSharedLib.py (on Linux) · 179ff298
      Daniel Malea authored
      - use lldb 'settings' command to help testcase find shared library
      - pull up dyldPath variable from TestLoadUnload.py to fixture base class (applicable in multiple cases)
      
      llvm-svn: 168612
      179ff298
    • Daniel Malea's avatar
      Fix TestGlobalVariables.py (on Linux) · bdf0fef0
      Daniel Malea authored
      - setting LD_LIBRARY_PATH required for the test program to run correctly
      
      llvm-svn: 168595
      bdf0fef0
  8. Nov 09, 2012
  9. Nov 06, 2012
  10. Oct 23, 2012
  11. Sep 22, 2012
  12. Jul 18, 2012
  13. May 12, 2012
  14. Apr 06, 2012
  15. Mar 30, 2012
  16. Mar 27, 2012
    • Greg Clayton's avatar
      <rdar://problem/11113279> · 84db9105
      Greg Clayton authored
      Fixed type lookups to "do the right thing". Prior to this fix, looking up a type using "foo::bar" would result in a type list that contains all types that had "bar" as a basename unless the symbol file was able to match fully qualified names (which our DWARF parser does not). 
      
      This fix will allow type matches to be made based on the basename and then have the types that don't match filtered out. Types by name can be fully qualified, or partially qualified with the new "bool exact_match" parameter to the Module::FindTypes() method.
      
      This fixes some issue that we discovered with dynamic type resolution as well as improves the overall type lookups in LLDB.
      
      llvm-svn: 153482
      84db9105
  17. Mar 08, 2012
    • Sean Callanan's avatar
      Updated the revision of LLVM/Clang used by LLDB. · 226b70c1
      Sean Callanan authored
      This takes two important changes:
      
      - Calling blocks is now supported.  You need to
        cast their return values, but that works fine.
      
      - We now can correctly run JIT-compiled
        expressions that use floating-point numbers.
      
      Also, we have taken a fix that allows us to
      ignore access control in Objective-C as in C++.
      
      llvm-svn: 152286
      226b70c1
  18. Mar 06, 2012
  19. Mar 02, 2012
    • Sean Callanan's avatar
      Improved the type's handling of anonymous structs, · e8c0cfbb
      Sean Callanan authored
      so that the expression parser can look up members
      of anonymous structs correctly.  This meant creating
      all the proper IndirectFieldDecls in each Record
      after it has been completely populated with members.
      
      llvm-svn: 151868
      e8c0cfbb
  20. Feb 04, 2012
    • Sean Callanan's avatar
      I have brought LLDB up-to-date with top of tree · 5b26f27f
      Sean Callanan authored
      LLVM/Clang.  This brings in several fixes, including:
      
      - Improvements in the Just-In-Time compiler's
        allocation of memory: the JIT now allocates
        memory in chunks of sections, improving its
        ability to generate relocations.  I have
        revamped the RecordingMemoryManager to reflect
        these changes, as well as to get the memory
        allocation and data copying out fo the
        ClangExpressionParser code.  Jim Grosbach wrote
        the updates to the JIT on the LLVM side.
      
      - A new ExternalASTSource interface to allow LLDB to
        report accurate structure layout information to
        Clang.  Previously we could only report the sizes
        of fields, not their offsets.  This meant that if
        data structures included field alignment
        directives, we could not communicate the necessary
        alignment to Clang and accesses to the data would
        fail.  Now we can (and I have update the relevant
        test case).  Thanks to Doug Gregor for implementing
        the Clang side of this fix.
      
      - The way Objective-C interfaces are completed by
        Clang has been made consistent with RecordDecls;
        with help from Doug Gregor and Greg Clayton I have
        ensured that this still works.
      
      - I have eliminated all local LLVM and Clang patches,
        committing the ones that are still relevant to LLVM
        and Clang as needed.
      
      I have tested the changes extensively locally, but
      please let me know if they cause any trouble for you.
      
      llvm-svn: 149775
      5b26f27f
    • Greg Clayton's avatar
      Convert all python objects in our API to use overload the __str__ method · 81e871ed
      Greg Clayton authored
      instead of the __repr__. __repr__ is a function that should return an
      expression that can be used to recreate an python object and we were using
      it to just return a human readable string.
      
      Fixed a crasher when using the new implementation of SBValue::Cast(SBType).
      
      Thread hardened lldb::SBValue and lldb::SBWatchpoint and did other general
      improvements to the API.
      
      Fixed a crasher in lldb::SBValue::GetChildMemberWithName() where we didn't
      correctly handle not having a target.
      
      llvm-svn: 149743
      81e871ed
  21. Dec 09, 2011
    • Sean Callanan's avatar
      If the expression parser is unable to complete a TagDecl · 12014a04
      Sean Callanan authored
      in the context in which it was originally found, the
      expression parser now goes hunting for it in all modules
      (in the appropriate namespace, if applicable).  This means
      that forward-declared types that exist in another shared
      library will now be resolved correctly.
      
      Added a test case to cover this.  The test case also tests
      "frame variable," which does not have this functionality
      yet.
      
      llvm-svn: 146204
      12014a04
  22. Nov 13, 2011
    • Greg Clayton's avatar
      <rdar://problem/10338439> · 2fc93eab
      Greg Clayton authored
      This is the actual fix for the above radar where global variables that weren't
      initialized were not being shown correctly when leaving the DWARF in the .o 
      files. Global variables that aren't intialized have symbols in the .o files
      that specify they are undefined and external to the .o file, yet document the
      size of the variable. This allows the compiler to emit a single copy, but makes
      it harder for our DWARF in .o files with the executable having a debug map
      because the symbol for the global in the .o file doesn't exist in a section
      that we can assign a fixed up linked address to, and also the DWARF contains
      an invalid address in the "DW_OP_addr" location (always zero). This means that
      the DWARF is incorrect and actually maps all such global varaibles to the
      first file address in the .o file which is usually the first function. So we
      can fix this in either of two ways: make a new fake section in the .o file
      so that we have a file address in the .o file that we can relink, or fix the 
      the variable as it is created in the .o file DWARF parser and actually give it
      the file address from the executable. Each variable contains a 
      SymbolContextScope, or a single pointer that helps us to recreate where the
      variables came from (which module, file, function, etc). This context helps
      us to resolve any file addresses that might be in the location description of
      the variable by pointing us to which file the file address comes from, so we
      can just replace the SymbolContextScope and also fix up the location, which we
      would have had to do for the other case as well, and update the file address.
      Now globals display correctly.
      
      The above changes made it possible to determine if a variable is a global
      or static variable when parsing DWARF. The DWARF emits a DW_TAG_variable tag
      for each variable (local, global, or static), yet DWARF provides no way for
      us to classify these variables into these categories. We can now detect when
      a variable has a simple address expressions as its location and this will help
      us classify these correctly.
      
      While making the above changes I also noticed that we had two symbol types:
      eSymbolTypeExtern and eSymbolTypeUndefined which mean essentially the same
      thing: the symbol is not defined in the current object file. Symbol objects
      also have a bit that specifies if a symbol is externally visible, so I got
      rid of the eSymbolTypeExtern symbol type and moved all code locations that
      used it to use the eSymbolTypeUndefined type.
       
      
      llvm-svn: 144489
      2fc93eab
  23. Sep 15, 2011
  24. 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
  25. Aug 23, 2011
    • Sean Callanan's avatar
      Restored the version of LLVM that we previously · 60dbc63a
      Sean Callanan authored
      rolled back, and the testcase that the rollback
      broke.
      
      The new LLVM has a new ARM disassembler, which
      may cause instability.  Keeping the old one would
      force us into a contorted position vis-a-vis the
      LLVM sources we bring in, so we will address
      issues on the new one rather than keeping the old
      one around.
      
      llvm-svn: 138284
      60dbc63a
  26. Aug 19, 2011
  27. Aug 16, 2011
  28. Aug 11, 2011
    • Johnny Chen's avatar
      Fix the expect patterns to work for both OSX SnowLeopard and Lion. · d5e00ba6
      Johnny Chen authored
      On Lion, printf is defined in libsystem_c.dylib.
      
      llvm-svn: 137348
      d5e00ba6
    • Sean Callanan's avatar
      Updated LLVM/Clang to to pick up fixes for a · 793d6330
      Sean Callanan authored
      problem in which the following cast:
      –
      expr (int (*)(const char*, ...))printf
      -
      caused a crash.  This had several causes:
      
        - First, Clang did not support implicit
          casts of a function of unknown type to
          a function pointer.
      
        - Second, after this was fixed, the
          Clang AST importer did not support
          importing function pointer types
          produced by resolving these casts.
      
      These two problems are now resolved, and
      I have added a test case to verify that
      they work.  I also did a little bit of
      build-system cleanup because we now use
      libEnhancedDisassembly.a instead of the
      .dylib.
      
      llvm-svn: 137338
      793d6330
  29. Aug 10, 2011
    • Sean Callanan's avatar
      Fixed a problem that prevented access to members · 5207a340
      Sean Callanan authored
      of string literals ("hello"[2]).  Also fixed a
      problem in which empty string literals were not
      being compiled correctly ((int)printf("") would
      print garbage).
      
      Added a testcase that covers both.
      
      llvm-svn: 137247
      5207a340
  30. Aug 09, 2011
  31. Aug 04, 2011
  32. Jul 11, 2011
Loading