Skip to content
  1. Mar 14, 2012
    • Greg Clayton's avatar
      <rdar://problem/10434005> · d64afba5
      Greg Clayton authored
      Prepare LLDB to be built with C++11 by hiding all accesses to std::tr1 behind
      macros that allows us to easily compile for either C++.
      
      llvm-svn: 152698
      d64afba5
  2. Mar 10, 2012
  3. 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
  4. Mar 07, 2012
    • Greg Clayton's avatar
      <rdar://problem/10997402> · e7612134
      Greg Clayton authored
      This fix really needed to happen as a previous fix I had submitted for
      calculating symbol sizes made many symbols appear to have zero size since
      the function that was calculating the symbol size was calling another function
      that would cause the calculation to happen again. This resulted in some symbols
      having zero size when they shouldn't. This could then cause infinite stack
      traces and many other side affects.
      
      llvm-svn: 152244
      e7612134
  5. Mar 06, 2012
  6. Mar 05, 2012
  7. Mar 02, 2012
  8. Mar 01, 2012
  9. Feb 29, 2012
  10. Feb 28, 2012
  11. Feb 27, 2012
  12. Feb 24, 2012
    • Greg Clayton's avatar
      <rdar://problem/10103468> · e72dfb32
      Greg Clayton authored
      I started work on being able to add symbol files after a debug session
      had started with a new "target symfile add" command and quickly ran into
      problems with stale Address objects in breakpoint locations that had 
      lldb_private::Section pointers into modules that had been removed or 
      replaced. This also let to grabbing stale modules from those sections. 
      So I needed to thread harded the Address, Section and related objects.
      
      To do this I modified the ModuleChild class to now require a ModuleSP
      on initialization so that a weak reference can created. I also changed
      all places that were handing out "Section *" to have them hand out SectionSP.
      All ObjectFile, SymbolFile and SymbolVendors were inheriting from ModuleChild
      so all of the find plug-in, static creation function and constructors now
      require ModuleSP references instead of Module *. 
      
      Address objects now have weak references to their sections which can
      safely go stale when a module gets destructed. 
      
      This checkin doesn't complete the "target symfile add" command, but it
      does get us a lot clioser to being able to do such things without a high
      risk of crashing or memory corruption.
      
      llvm-svn: 151336
      e72dfb32
  13. Feb 23, 2012
    • Sean Callanan's avatar
      Added support for looking up the complete type for · 7277284f
      Sean Callanan authored
      Objective-C classes.  This allows LLDB to find
      ivars declared in class extensions in modules other
      than where the debugger is currently stopped (we
      already supported this when the debugger was
      stopped in the same module as the definition).
      
      This involved the following main changes:
      
      - The ObjCLanguageRuntime now knows how to hunt
        for the authoritative version of an Objective-C
        type.  It looks for the symbol indicating a
        definition, and then gets the type from the
        module containing that symbol.
      
      - ValueObjects now report their type with a
        potential override, and the override is set if
        the type of the ValueObject is an Objective-C
        class or pointer type that is defined somewhere
        other than the original reported type.  This
        means that "frame variable" will always use the
        complete type if one is available.
      
      - The ClangASTSource now looks for the complete
        type when looking for ivars.  This means that
        "expr" will always use the complete type if one
        is available.
      
      - I added a testcase that verifies that both
        "frame variable" and "expr" work.
      
      llvm-svn: 151214
      7277284f
  14. Feb 18, 2012
    • Greg Clayton's avatar
      The second part in thread hardening the internals of LLDB where we make · d9e416c0
      Greg Clayton authored
      the lldb_private::StackFrame objects hold onto a weak pointer to the thread
      object. The lldb_private::StackFrame objects the the most volatile objects
      we have as when we are doing single stepping, frames can often get lost or
      thrown away, only to be re-created as another object that still refers to the
      same frame. We have another bug tracking that. But we need to be able to 
      have frames no longer be able to get the thread when they are not part of
      a thread anymore, and this is the first step (this fix makes that possible
      but doesn't implement it yet).
      
      Also changed lldb_private::ExecutionContextScope to return shared pointers to
      all objects in the execution context to further thread harden the internals.
      
      llvm-svn: 150871
      d9e416c0
    • Sean Callanan's avatar
      Ignore the constness of the object pointer when · 5056ab04
      Sean Callanan authored
      fetching it.
      
      llvm-svn: 150861
      5056ab04
  15. Feb 15, 2012
  16. Feb 10, 2012
    • Sean Callanan's avatar
      Extended function lookup to allow the user to · 9df05fbb
      Sean Callanan authored
      indicate whether inline functions are desired.
      This allows the expression parser, for instance,
      to filter out inlined functions when looking for
      functions it can call.
      
      llvm-svn: 150279
      9df05fbb
    • Sean Callanan's avatar
      Fixed a bunch of ownership problems with the expression · 933693b6
      Sean Callanan authored
      parser.  Specifically:
      
      - ClangUserExpression now keeps weak pointers to the
        structures it needs and then locks them when needed.
        This ensures that they continue to be valid without
        leaking memory if the ClangUserExpression is long
        lived.
      
      - ClangExpressionDeclMap, instead of keeping a pointer
        to an ExecutionContext, now contains an
        ExecutionContext.  This prevents bugs if the pointer
        or its contents somehow become stale.  It also no
        longer requires that ExecutionContexts be passed
        into any function except its initialization function,
        since it can count on the ExecutionContext still
        being around.
      
      There's a lot of room for improvement (specifically,
      ClangExpressionDeclMap should also use weak pointers
      insetad of shared pointers) but this is an important
      first step that codifies assumptions that already
      existed in the code.
      
      llvm-svn: 150217
      933693b6
  17. Feb 09, 2012
  18. Feb 08, 2012
  19. Feb 06, 2012
  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
  21. Jan 29, 2012
    • Greg Clayton's avatar
      Switching back to using std::tr1::shared_ptr. We originally switched away · e1cd1be6
      Greg Clayton authored
      due to RTTI worries since llvm and clang don't use RTTI, but I was able to 
      switch back with no issues as far as I can tell. Once the RTTI issue wasn't
      an issue, we were looking for a way to properly track weak pointers to objects
      to solve some of the threading issues we have been running into which naturally
      led us back to std::tr1::weak_ptr. We also wanted the ability to make a shared 
      pointer from just a pointer, which is also easily solved using the 
      std::tr1::enable_shared_from_this class. 
      
      The main reason for this move back is so we can start properly having weak
      references to objects. Currently a lldb_private::Thread class has a refrence
      to its parent lldb_private::Process. This doesn't work well when we now hand
      out a SBThread object that contains a shared pointer to a lldb_private::Thread
      as this SBThread can be held onto by external clients and if they end up
      using one of these objects we can easily crash.
      
      So the next task is to start adopting std::tr1::weak_ptr where ever it makes
      sense which we can do with lldb_private::Debugger, lldb_private::Target,
      lldb_private::Process, lldb_private::Thread, lldb_private::StackFrame, and
      many more objects now that they are no longer using intrusive ref counted
      pointer objects (you can't do std::tr1::weak_ptr functionality with intrusive
      pointers).
      
      llvm-svn: 149207
      e1cd1be6
  22. Jan 24, 2012
  23. Jan 19, 2012
    • Sean Callanan's avatar
      Fixed a problem where maintaining the ObjCInterfaceMap · a9bc0656
      Sean Callanan authored
      for each ObjCInterfaceDecl was imposing performance
      penalties for Objective-C apps.  Instead, we now use
      the normal function query mechanisms, which use the
      relevant accelerator tables.
      
      This fix also includes some modifications to the
      SymbolFile which allow us to find Objective-C methods
      and report their Clang Decls correctly.
      
      llvm-svn: 148457
      a9bc0656
  24. Jan 13, 2012
  25. Jan 11, 2012
  26. Jan 06, 2012
    • Sean Callanan's avatar
      Fixed a bug where the DWARF location expression · d1a5e01f
      Sean Callanan authored
      parser was creating malformed resuls.  When the
      location of a variable is computed by reading a
      register and adding an offset, we shouldn't say
      that the variable's value is located in that
      register.  This was confusing the expression
      parser when trying to read a variable captured
      by a block.
      
      llvm-svn: 147668
      d1a5e01f
    • Johnny Chen's avatar
      http://llvm.org/bugs/show_bug.cgi?id=11618 · b49440fa
      Johnny Chen authored
      lldb::SBValue::AddressOf does not work on dereferenced registers in synthetic children provider
      
      Patch submitted by Enrico Granata.
      
      llvm-svn: 147637
      b49440fa
  27. Jan 04, 2012
  28. Dec 22, 2011
Loading