Skip to content
  1. Dec 07, 2012
    • Andrew Kaylor's avatar
      Set ThreadPlanCallFunction to private in ConstructorSetup. This fixes a... · 327c267a
      Andrew Kaylor authored
      Set ThreadPlanCallFunction to private in ConstructorSetup.  This fixes a problem on Linux where 'continue' was misfiring after an expression evaluation when stopped at a breakpoint.  The problem was that InferiorCallMmap was not setting its ThreadPlanCallFunction to private and so the completion of that thread plan appeared to be the stop reason and therefore the 'continue' operation failed to step over the breakpoint.  The SetPrivate call is being put in ThreadPlanCallFunction rather than InferiorCallMmap to make the solution more general.
      
      llvm-svn: 169618
      327c267a
  2. Nov 29, 2012
  3. Nov 27, 2012
  4. Sep 11, 2012
  5. Aug 29, 2012
    • Greg Clayton's avatar
      <rdar://problem/11757916> · 1f746071
      Greg Clayton authored
      Make breakpoint setting by file and line much more efficient by only looking for inlined breakpoint locations if we are setting a breakpoint in anything but a source implementation file. Implementing this complex for a many reasons. Turns out that parsing compile units lazily had some issues with respect to how we need to do things with DWARF in .o files. So the fixes in the checkin for this makes these changes:
      - Add a new setting called "target.inline-breakpoint-strategy" which can be set to "never", "always", or "headers". "never" will never try and set any inlined breakpoints (fastest). "always" always looks for inlined breakpoint locations (slowest, but most accurate). "headers", which is the default setting, will only look for inlined breakpoint locations if the breakpoint is set in what are consudered to be header files, which is realy defined as "not in an implementation source file". 
      - modify the breakpoint setting by file and line to check the current "target.inline-breakpoint-strategy" setting and act accordingly
      - Modify compile units to be able to get their language and other info lazily. This allows us to create compile units from the debug map and not have to fill all of the details in, and then lazily discover this information as we go on debuggging. This is needed to avoid parsing all .o files when setting breakpoints in implementation only files (no inlines). Otherwise we would need to parse the .o file, the object file (mach-o in our case) and the symbol file (DWARF in the object file) just to see what the compile unit was.
      - modify the "SymbolFileDWARFDebugMap" to subclass lldb_private::Module so that the virtual "GetObjectFile()" and "GetSymbolVendor()" functions can be intercepted when the .o file contenst are later lazilly needed. Prior to this fix, when we first instantiated the "SymbolFileDWARFDebugMap" class, we would also make modules, object files and symbol files for every .o file in the debug map because we needed to fix up the sections in the .o files with information that is in the executable debug map. Now we lazily do this in the DebugMapModule::GetObjectFile()
      
      Cleaned up header includes a bit as well.
      
      llvm-svn: 162860
      1f746071
  6. Aug 09, 2012
  7. May 12, 2012
  8. May 11, 2012
  9. May 10, 2012
    • Jim Ingham's avatar
      If the ObjC Step Through Trampoline plan causes a target crash, properly... · 18de2fdc
      Jim Ingham authored
      If the ObjC Step Through Trampoline plan causes a target crash, properly propagate the error back to
      the controlling plans so that they don't lose control.
      
      Also change "ThreadPlanStepThrough" to take the return StackID for its backstop breakpoint as an argument
      to the constructor rather than having it try to figure it out itself, since it might get it wrong whereas
      the caller always knows where it is coming from.
      
      rdar://problem/11402287
      
      llvm-svn: 156529
      18de2fdc
  10. Apr 14, 2012
  11. Apr 13, 2012
  12. Apr 10, 2012
  13. Feb 21, 2012
    • Greg Clayton's avatar
      Thread hardening part 3. Now lldb_private::Thread objects have std::weak_ptr · 1ac04c30
      Greg Clayton authored
      objects for the backlink to the lldb_private::Process. The issues we were
      running into before was someone was holding onto a shared pointer to a 
      lldb_private::Thread for too long, and the lldb_private::Process parent object
      would get destroyed and the lldb_private::Thread had a "Process &m_process"
      member which would just treat whatever memory that used to be a Process as a
      valid Process. This was mostly happening for lldb_private::StackFrame objects
      that had a member like "Thread &m_thread". So this completes the internal
      strong/weak changes.
      
      Documented the ExecutionContext and ExecutionContextRef classes so that our
      LLDB developers can understand when and where to use ExecutionContext and 
      ExecutionContextRef objects.
      
      llvm-svn: 151009
      1ac04c30
  14. Dec 22, 2011
  15. Nov 01, 2011
  16. Oct 19, 2011
    • Greg Clayton's avatar
      Moved lldb::user_id_t values to be 64 bit. This was going to be needed for · 81c22f61
      Greg Clayton authored
      process IDs, and thread IDs, but was mainly needed for for the UserID's for
      Types so that DWARF with debug map can work flawlessly. With DWARF in .o files
      the type ID was the DIE offset in the DWARF for the .o file which is not
      unique across all .o files, so now the SymbolFileDWARFDebugMap class will
      make the .o file index part (the high 32 bits) of the unique type identifier
      so it can uniquely identify the types.
      
      llvm-svn: 142534
      81c22f61
  17. Aug 13, 2011
    • Jim Ingham's avatar
      Make ValueObject::SetValueFromCString work correctly. · 16e0c686
      Jim Ingham authored
      Also change the SourceInitFile to look for .lldb-<APPNAME> and source that
      preferentially if it exists.
      Also made the breakpoint site report its address as well as its breakpoint number
      when it gets hit and can't find any the associated locations (usually because the
      breakpoint got disabled or deleted programmatically between the time it was hit
      and reported.)
      Changed ThreadPlanCallFunction to initialize the ivar m_func in the initializers of the
      constructor, rather than waiting to initialize till later on in the function.
      Fixed a bug where if you make an SBError and the ask it Success, it returns false.
      Fixed ValueObject::ResolveValue so that it resolves a temporary value, rather than
      overwriting the one in the value object.
      
      llvm-svn: 137536
      16e0c686
  18. Aug 11, 2011
  19. Aug 10, 2011
  20. 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
  21. Jun 03, 2011
  22. May 19, 2011
    • Greg Clayton's avatar
      Fixed a crasher that was happened when a log shared pointer wasn't valid. · af247d7b
      Greg Clayton authored
      Fixed ThreadPlanCallFunction::ReportRegisterState(...) to only dump when
      verbose logging is enabled and fixed the function to use the new
      RegisterValue method of reading registers.
      
      Fixed the GDB remote client to not send a continue packet after receiving
      stdout or stderr from the inferior process.
      
      llvm-svn: 131628
      af247d7b
  23. May 17, 2011
  24. May 15, 2011
    • Greg Clayton's avatar
      Added the ability to get the return value from a ThreadPlanCallFunction · 70b57657
      Greg Clayton authored
      thread plan. In order to get the return value, you can call:
      
              void
              ThreadPlanCallFunction::RequestReturnValue (lldb::ValueSP &return_value_sp);
              
      This registers a shared pointer to a return value that will get filled in if
      everything goes well. After the thread plan is run the return value will be
      extracted for you.
      
      Added an ifdef to be able to switch between the LLVM MCJIT and the standand JIT.
      We currently have the standard JIT selected because we have some work to do to
      get the MCJIT fuctioning properly.
      
      Added the ability to call functions with 6 argument in the x86_64 ABI.
      
      Added the ability for GDBRemoteCommunicationClient to detect if the allocate
      and deallocate memory packets are supported and to not call allocate memory 
      ("_M") or deallocate ("_m") if we find they aren't supported.
      
      Modified the ProcessGDBRemote::DoAllocateMemory(...) and ProcessGDBRemote::DoDeallocateMemory(...) 
      to be able to deal with the allocate and deallocate memory packets not being 
      supported. If they are not supported, ProcessGDBRemote will switch to calling
      "mmap" and "munmap" to allocate and deallocate memory instead using our 
      trivial function call support.
      
      Modified the "void ProcessGDBRemote::DidLaunchOrAttach()" to correctly ignore 
      the qHostInfo triple information if any was specified in the target. Currently 
      if the target only specifies an architecture when creating the target:
      
      (lldb) target create --arch i386 a.out
      
      Then the vendor, os and environemnt will be adopted by the target.
      
      If the target was created with any triple that specifies more than the arch:
      
      (lldb) target create --arch i386-unknown-unknown a.out
      
      Then the target will maintain its triple and not adopt any new values. This
      can be used to help force bare board debugging where the dynamic loader for
      static files will get used and users can then use "target modules load ..."
      to set addressses for any files that are desired.
      
      Added back some convenience functions to the lldb_private::RegisterContext class
      for writing registers with unsigned values. Also made all RegisterContext
      constructors explicit to make sure we know when an integer is being converted
      to a RegisterValue. 
      
      llvm-svn: 131370
      70b57657
  25. May 14, 2011
  26. May 12, 2011
    • Greg Clayton's avatar
      Cleaned up the ABI::PrepareTrivialCall() function to take three argument · fdeb1563
      Greg Clayton authored
      pointers:
      
              virtual bool
              PrepareTrivialCall (Thread &thread, 
                                  lldb::addr_t sp,
                                  lldb::addr_t functionAddress,
                                  lldb::addr_t returnAddress, 
                                  lldb::addr_t *arg1_ptr,
                                  lldb::addr_t *arg2_ptr,
                                  lldb::addr_t *arg3_ptr) const = 0;
      
      Prior to this it was:
      
              virtual bool
              PrepareTrivialCall (Thread &thread, 
                                  lldb::addr_t sp,
                                  lldb::addr_t functionAddress,
                                  lldb::addr_t returnAddress, 
                                  lldb::addr_t arg,
                                  lldb::addr_t *this_arg,
                                  lldb::addr_t *cmd_arg) const = 0;
      
      This was because the function that called this slowly added more features to
      be able to call a C++ member function that might have a "this" pointer, and 
      then later added "self + cmd" support for objective C. Cleaning this code up
      and the code that calls it makes it easier to implement the functions for
      new targets.
      
      The MacOSX_arm::PrepareTrivialCall() is now filled in and ready for testing.
      
      llvm-svn: 131221
      fdeb1563
  27. May 11, 2011
    • Greg Clayton's avatar
      Moved all code from ArchDefaultUnwindPlan and ArchVolatileRegs into their · 31f1d2f5
      Greg Clayton authored
      respective ABI plugins as they were plug-ins that supplied ABI specfic info.
      
      Also hookep up the UnwindAssemblyInstEmulation so that it can generate the
      unwind plans for ARM.
      
      Changed the way ABI plug-ins are handed out when you get an instance from
      the plug-in manager. They used to return pointers that would be mananged
      individually by each client that requested them, but now they are handed out
      as shared pointers since there is no state in the ABI objects, they can be
      shared.
      
      llvm-svn: 131193
      31f1d2f5
  28. May 10, 2011
    • Sean Callanan's avatar
      Fixed a bug in which expression-local variables were · e359d9b7
      Sean Callanan authored
      treated as being permanently resident in target
      memory.  In fact, since the expression's stack frame
      is deleted and potentially re-used after the
      expression completes, the variables need to be treated
      as being freeze-dried.
      
      llvm-svn: 131104
      e359d9b7
  29. Mar 08, 2011
    • Jim Ingham's avatar
      Add a method "GetEntryPoint" to the ObjectFile class, and implement it on... · 672e6f59
      Jim Ingham authored
      Add a method "GetEntryPoint" to the ObjectFile class, and implement it on MachO & ELF - though the ELF implementation is probably a little weak.  Then use this method in place of directly looking for "start" in the ThreadPlanCallFunction constructor to find the stopping point for our function evaluation.
      
      llvm-svn: 127194
      672e6f59
  30. Jan 26, 2011
  31. Jan 22, 2011
  32. Jan 20, 2011
  33. Jan 18, 2011
    • Jim Ingham's avatar
      In ThreadPlanCallFunction, do the Takedown right when the thread plan gets... · bda4e5eb
      Jim Ingham authored
      In ThreadPlanCallFunction, do the Takedown right when the thread plan gets popped.  When the function call is discarded (e.g. when it crashes and discard_on_error is true) the plan gets discarded.  You need to make sure that the stack gets restored right then, and not wait till you start again and the thread plan stack is cleared.
      
      llvm-svn: 123716
      bda4e5eb
  34. Jan 06, 2011
    • Greg Clayton's avatar
      Fixed issues with RegisterContext classes and the subclasses. There was · 5ccbd294
      Greg Clayton authored
      an issue with the way the UnwindLLDB was handing out RegisterContexts: it
      was making shared pointers to register contexts and then handing out just
      the pointers (which would get put into shared pointers in the thread and
      stack frame classes) and cause double free issues. MallocScribble helped to
      find these issues after I did some other cleanup. To help avoid any
      RegisterContext issue in the future, all code that deals with them now
      returns shared pointers to the register contexts so we don't end up with
      multiple deletions. Also now that the RegisterContext class doesn't require
      a stack frame, we patched a memory leak where a StackFrame object was being
      created and leaked.
      
      Made the RegisterContext class not have a pointer to a StackFrame object as
      one register context class can be used for N inlined stack frames so there is
      not a 1 - 1 mapping. Updates the ExecutionContextScope part of the 
      RegisterContext class to never return a stack frame to indicate this when it
      is asked to recreate the execution context. Now register contexts point to the
      concrete frame using a concrete frame index. Concrete frames are all of the
      frames that are actually formed on the stack of a thread. These concrete frames
      can be turned into one or more user visible frames due to inlining. Each 
      inlined stack frame has the exact same register context (shared via shared
      pointers) as any parent inlined stack frames all the way up to the concrete 
      frame itself.
      
      So now the stack frames and the register contexts should behave much better.
      
      llvm-svn: 122976
      5ccbd294
  35. Dec 13, 2010
    • Sean Callanan's avatar
      Added support for generating expressions that have · 17827830
      Sean Callanan authored
      access to the members of the Objective-C self object.
      
      The approach we take is to generate the method as a
      @category on top of the self object, and to pass the
      "self" pointer to it.  (_cmd is currently NULL.)
      
      Most changes are in ClangExpressionDeclMap, but the
      change that adds support to the ABIs to pass _cmd
      touches a fair amount of code.
      
      llvm-svn: 121722
      17827830
  36. Nov 12, 2010
  37. Nov 11, 2010
Loading