Skip to content
  1. Oct 09, 2012
  2. Apr 26, 2012
  3. Feb 21, 2012
  4. 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
  5. Sep 30, 2011
    • Greg Clayton's avatar
      Fixed an issue where a lexical block or inlined function might have bad debug · 6c7f5619
      Greg Clayton authored
      information generated for it. Say we have a concrete function "foo" which
      has inlined function "a" which calls another inlined function "b":
      
          foo
      1   {
      2       {
                  a ()
      3           {
                      b ()
      4               {
                      
                      }
                  }
              }
          }
          
      Sometimes we see the compiler generate an address range in the DWARF for "foo"
      (block 1 above) as say [0x1000-0x1100). Then the range for "a" is something
      like [0x1050-0x1060) (note that it is correctly scoped within the "foo" 
      address range). And then we get "b" which is a child of "a", yet the debug
      info says it has a range of [0x1060-0x1080) (not contained within "a"). We now
      detect this issue when making our blocks and add an extra range to "a".
      
      Also added a new "lldb" logging category named "symbol" where we can find out
      about symbol file errors and warnings.
      
      llvm-svn: 140822
      6c7f5619
  6. Sep 12, 2011
  7. Aug 25, 2011
  8. Jul 22, 2011
  9. May 07, 2011
  10. May 06, 2011
  11. Feb 04, 2011
  12. Jan 08, 2011
  13. Dec 07, 2010
    • Caroline Tice's avatar
      · d9d63369
      Caroline Tice authored
      - Fix alias-building & resolving to properly handle optional arguments for command options.
      - Add logging for command resolution ('log enable lldb commands')
      - Fix alias resolution to properly handle commands that take raw input (resolve the alias, but
        don't muck up the raw arguments).
      
      Net result:  Among other things, 'expr' command can now take strings with escaped characters and
      not have the command handling & alias resolution code muck up the escaped characters. E.g.
       'expr printf ("\n\n\tHello there!")' should now work properly.
      
      
      Not working yet:  Creating aliases with raw input for commands that take raw input.  Working on that.
      e.g. 'command alias print_hi expr printf ("\n\tHi!")' does not work yet.
      
      llvm-svn: 121171
      d9d63369
  14. Nov 19, 2010
    • Greg Clayton's avatar
      Cleaned up code that wasn't using the Initialize and Terminate paradigm by · 99d0faf2
      Greg Clayton authored
      changing it to use it. There was an extra parameter added to the static
      accessor global user settings controllers that wasn't needed. A bool was being
      used as a parameter to the accessor just so it could be used to clean up 
      the global user settings controller which is now fixed by splitting up the
      initialization into the "static void Class::Initialize()", access into the
      "static UserSettingsControllerSP & Class::GetSettingsController()", and
      cleanup into "static void Class::Terminate()".
      
      Also added initialize and terminate calls to the logging code to avoid issues
      when LLDB is shutting down. There were cases after the logging was switched
      over to use shared pointers where we could crash if the global destructor
      chain was being run and it causes the log to be destroyed and any any logging
      occurred.
      
      llvm-svn: 119757
      99d0faf2
  15. Nov 10, 2010
  16. Nov 06, 2010
    • Greg Clayton's avatar
      Modified all logging calls to hand out shared pointers to make sure we · 2d4edfbc
      Greg Clayton authored
      don't crash if we disable logging when some code already has a copy of the
      logger. Prior to this fix, logs were handed out as pointers and if they were
      held onto while a log got disabled, then it could cause a crash. Now all logs
      are handed out as shared pointers so this problem shouldn't happen anymore.
      We are also using our new shared pointers that put the shared pointer count
      and the object into the same allocation for a tad better performance.
      
      llvm-svn: 118319
      2d4edfbc
  17. Nov 05, 2010
  18. Nov 03, 2010
    • Greg Clayton's avatar
      Fixed shared library unloads when the unloaded library doesn't come off · 6ba50850
      Greg Clayton authored
      the end of the list. We had an issue in the MacOSX dynamic loader where if
      we had shlibs:
      1 - a.out
      2 - a.dylib
      3 - b.dylib
      
      And then a.dylib got unloaded, we would unload b.dylib due to the assumption
      that only shared libraries could come off the end of the list. We now properly
      search and find which ones get loaded.
      
      Added a new internal logging category for the "lldb" log channel named "dyld".
      This should allow all dynamic loaders to use this as a generic log channel so
      we can track shared library loads and unloads in the logs without having to 
      have each plug-in make up its own logging channel.
      
      llvm-svn: 118147
      6ba50850
  19. Oct 29, 2010
  20. Oct 27, 2010
    • Greg Clayton's avatar
      Updated the lldb_private::Flags class to have better method names and made · 73b472d4
      Greg Clayton authored
      all of the calls inlined in the header file for better performance.
      
      Fixed the summary for C string types (array of chars (with any combo if
      modifiers), and pointers to chars) work in all cases.
      
      Fixed an issue where a forward declaration to a clang type could cause itself
      to resolve itself more than once if, during the resolving of the type itself
      it caused something to try and resolve itself again. We now remove the clang
      type from the forward declaration map in the DWARF parser when we start to 
      resolve it and avoid this additional call. This should stop any duplicate
      members from appearing and throwing all the alignment of structs, unions and
      classes.
      
      llvm-svn: 117437
      73b472d4
  21. Oct 26, 2010
    • Caroline Tice's avatar
      First pass at adding logging capabilities for the API functions. At the moment · ceb6b139
      Caroline Tice authored
      it logs the function calls, their arguments and the return values.  This is not
      complete or polished, but I am committing it now, at the request of someone who
      really wants to use it, even though it's not really done.  It currently does not
      attempt to log all the functions, just the most important ones.  I will be 
      making further adjustments to the API logging code over the next few days/weeks.
      (Suggestions for improvements are welcome).
      
      
      Update the Python build scripts to re-build the swig C++ file whenever 
      the python-extensions.swig file is modified.
      
      Correct the help for 'log enable' command (give it the correct number & type of
      arguments).
      
      llvm-svn: 117349
      ceb6b139
  22. Oct 25, 2010
    • Jason Molenda's avatar
      Check in the native lldb unwinder. · ab4f1924
      Jason Molenda authored
      Not yet enabled as the default unwinder but there are no known
      backtrace problems with the code at this point.
      
      Added 'log enable lldb unwind' to help diagnose backtrace problems;
      this output needs a little refining but it's a good first step.
      
      eh_frame information is currently read unconditionally - the code
      is structured to allow this to be delayed until it's actually needed.
      There is a performance hit when you have to parse the eh_frame
      information for any largeish executable/library so it's necessary
      to avoid if possible.
      
      It's confusing having both the UnwindPlan::RegisterLocation struct
      and the RegisterConextLLDB::RegisterLocation struct, I need to rename
      one of them.
      
      The writing of registers isn't done in the RegisterConextLLDB subclass
      yet; neither is the running of complex DWARF expressions from eh_frame
      (e.g. used for _sigtramp on Mac OS X).
      
      llvm-svn: 117256
      ab4f1924
  23. Aug 31, 2010
  24. Jun 15, 2010
  25. Jun 10, 2010
  26. Jun 08, 2010
Loading