Skip to content
  1. Nov 28, 2011
  2. Nov 21, 2011
    • Greg Clayton's avatar
      Many GDB users always want to display disassembly when they stop by using · e372b98d
      Greg Clayton authored
      something like "display/4i $pc" (or something like this). With LLDB we already
      were showing 3 lines of source before and 3 lines of source after the current
      source line when showing a stop context. We now improve this by allowing the
      user to control the number of lines with the new "stop-line-count-before" and
      "stop-line-count-after" settings. Also, there is a new setting for how many
      disassembly lines to show: "stop-disassembly-count". This will control how many
      source lines are shown when there is no source or when we have no source line
      info. 
      
      settings set stop-line-count-before 3
      settings set stop-line-count-after 3
      settings set stop-disassembly-count 4
      settings set stop-disassembly-display no-source
      
      The default values are set as shown above and allow 3 lines of source before 
      and after (what we used to do) the current stop location, and will display 4 
      lines of disassembly if the source is not available or if we have no debug
      info. If both "stop-source-context-before" and "stop-source-context-after" are
      set to zero, this will disable showing any source when stopped. The 
      "stop-disassembly-display" setting is an enumeration that allows you to control
      when to display disassembly. It has 3 possible values:
      
      "never" - never show disassembly no matter what
      "no-source" - only show disassembly when there is no source line info or the source files are missing
      "always" - always show disassembly.
      
      llvm-svn: 145050
      e372b98d
  3. Nov 19, 2011
    • Jim Ingham's avatar
      Handle stepping through a trampoline where the jump target is calculated a... · 9683ff12
      Jim Ingham authored
      Handle stepping through a trampoline where the jump target is calculated a runtime - and so doesn't match
      the name of the PLT entry.  This solution assumes a naming convention agreed upon by us and the system folks,
      and isn't general.  The general solution requires actually finding & calling the resolver function if it
      hasn't been called yet.  That's more tricky.
      
      llvm-svn: 144981
      9683ff12
  4. Nov 17, 2011
    • Greg Clayton's avatar
      Fixed the issue that was causing our monitor process threads to crash, it · e24c4acf
      Greg Clayton authored
      turned out to be unitialized data in the ProcessLaunchInfo default constructor. 
      Turning on MallocScribble in the environment helped track this down. 
      
      When we launch and attach using the host layer, we now inform the process that
      it shouldn't detach when by calling an accessor.
      
      llvm-svn: 144882
      e24c4acf
    • Greg Clayton's avatar
      Fixed an issue with the pthread_setspecific() where we weren't NULL-ing out · 2637f825
      Greg Clayton authored
      the thread specific data and were destroying the thread specfic data more
      than once.
      
      Also added the ability to ask a lldb::StateType if it is stopped with an
      additional paramter of "must_exist" which means that the state must be a
      stopped state for a process that still exists. This means that eStateExited
      and eStateUnloaded will no longer return true if "must_exist" is set to true.
      
      llvm-svn: 144875
      2637f825
  5. Nov 16, 2011
    • Greg Clayton's avatar
      Made the darwin host layer properly reap any child processes that it spawns. · e4e45924
      Greg Clayton authored
      After recent changes we weren't reaping child processes resulting in many
      zombie processes. 
      
      This was fixed by adding more settings to the ProcessLaunchOptions class
      that allow clients to specify a callback function and baton to be notified
      when their process dies. If one is not supplied a default callback will be
      used that "does the right thing". 
      
      Cleaned up a race condition in the ProcessGDBRemote class that would attempt
      to monitor when debugserver died. 
      
      Added an extra boolean to the process monitor callbacks that indicate if a
      process exited or not. If your process exited with a zero exit status and no
      signal, both items could be zero.
      
      Modified the process monitor functions to not require a callback function
      in order to reap the child process.
      
      llvm-svn: 144780
      e4e45924
  6. Nov 14, 2011
  7. Nov 10, 2011
  8. Nov 08, 2011
  9. Nov 04, 2011
    • Sean Callanan's avatar
      Updated LLVM/Clang to pick up a fix for imports of · bfb237bc
      Sean Callanan authored
      C++ vtables, fixing a record layout problem in the
      expression parser.
      
      Also fixed various problems with the generation 
      and unpacking of llvm.zip given our new better
      handling of multiple architectures in the LLVM
      build.
      
      (And added a log message that will hopefully catch
      record layout problems in the future.)
      
      llvm-svn: 143741
      bfb237bc
    • 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
  10. Nov 01, 2011
  11. Oct 31, 2011
  12. Oct 29, 2011
  13. 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
  14. Oct 26, 2011
  15. Oct 23, 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. Oct 14, 2011
    • Greg Clayton's avatar
      Added the ability to run expressions in any command. Expressions can be · 5a31471e
      Greg Clayton authored
      inserted in commands by using backticks:
      
      (lldb) memory read `$rsp-16` `$rsp+16`
      (lldb) memory read  -c `(int)strlen(argv[0])` `argv[0]`
      
      The result of the expression will be inserted into the command as a sort of
      preprocess stage where this gets done first. We might need to tweak where this
      preprocess stage goes, but it is very functional already.
      
      Added ansi color support to the Debugger::FormatPrompt() so you can use things
      like "${ansi.fg.blue}" and "${ansi.bold}" many more. This helps in adding 
      colors to your prompts without needing to know the ANSI color code strings.
      
      llvm-svn: 141948
      5a31471e
  18. Oct 13, 2011
  19. Oct 12, 2011
  20. Oct 08, 2011
  21. Oct 07, 2011
    • Greg Clayton's avatar
      Re-organized the contents of RangeMap.h to be more concise and also allow for... · cf0e4f0d
      Greg Clayton authored
      Re-organized the contents of RangeMap.h to be more concise and also allow for a Range, RangeArray, RangeData (range + data), or a RangeDataArray. We have many range implementations in LLDB and I will be converting over to using the classes in RangeMap.h so we can have one set of code that does ranges and searching  of ranges.
      
      Fixed up DWARFDebugAranges to use the new range classes.
      
      Fixed the enumeration parsing to take a lldb_private::Error to avoid a lot of duplicated code. Now when an invalid enumeration is supplied, an error will be returned and that error will contain a list of the valid enumeration values.
      
      llvm-svn: 141382
      cf0e4f0d
  22. Oct 06, 2011
  23. Oct 01, 2011
    • Greg Clayton's avatar
      Fixed an issue where a variable whose value is in a register might end up · bdf3162f
      Greg Clayton authored
      not saying that its children are load addresses.
      
      llvm-svn: 140921
      bdf3162f
    • Greg Clayton's avatar
      Cleaned up the the code that figures out the inlined stack frames given a · 1ed54f50
      Greg Clayton authored
      symbol context that represents an inlined function. This function has been
      renamed internally to:
      
      bool
      SymbolContext::GetParentOfInlinedScope (const Address &curr_frame_pc, 
                                              SymbolContext &next_frame_sc, 
                                              Address &next_frame_pc) const;
                                              
      And externally to:
      
      SBSymbolContext
      SBSymbolContext::GetParentOfInlinedScope (const SBAddress &curr_frame_pc, 
                                                SBAddress &parent_frame_addr) const;
      
      The correct blocks are now correctly calculated.
      
      Switched the stack backtracing engine (in StackFrameList) and the address
      context printing over to using the internal SymbolContext::GetParentOfInlinedScope(...) 
      so all inlined callstacks will match exactly.
      
      llvm-svn: 140910
      1ed54f50
  24. Sep 26, 2011
    • Greg Clayton's avatar
      Added more functionality to the public API to allow for better · 8f7180b1
      Greg Clayton authored
      symbolication. Also improved the SBInstruction API to allow
      access to the instruction opcode name, mnemonics, comment and
      instruction data.
      
      Added the ability to edit SBLineEntry objects (change the file,
      line and column), and also allow SBSymbolContext objects to be
      modified (set module, comp unit, function, block, line entry
      or symbol). 
      
      The SymbolContext and SBSymbolContext can now generate inlined
      call stack infomration for symbolication much easier using the
      SymbolContext::GetParentInlinedFrameInfo(...) and 
      SBSymbolContext::GetParentInlinedFrameInfo(...) methods.
      
      llvm-svn: 140518
      8f7180b1
  25. Sep 24, 2011
    • Greg Clayton's avatar
      Added to the public API to allow symbolication: · cac9c5f9
      Greg Clayton authored
      - New SBSection objects that are object file sections which can be accessed
        through the SBModule classes. You can get the number of sections, get a 
        section at index, and find a section by name.
      - SBSections can contain subsections (first find "__TEXT" on darwin, then
        us the resulting SBSection to find "__text" sub section).
      - Set load addresses for a SBSection in the SBTarget interface
      - Set the load addresses of all SBSection in a SBModule in the SBTarget interface
      - Add a new module the an existing target in the SBTarget interface
      - Get a SBSection from a SBAddress object
      
      This should get us a lot closer to being able to symbolicate using LLDB through
      the public API.
      
      llvm-svn: 140437
      cac9c5f9
  26. Sep 23, 2011
  27. Sep 22, 2011
    • Greg Clayton's avatar
      Converted the lldb_private::Process over to use the intrusive · c14ee32d
      Greg Clayton authored
      shared pointers.
      
      Changed the ExecutionContext over to use shared pointers for
      the target, process, thread and frame since these objects can
      easily go away at any time and any object that was holding onto
      an ExecutionContext was running the risk of using a bad object.
      
      Now that the shared pointers for target, process, thread and
      frame are just a single pointer (they all use the instrusive
      shared pointers) the execution context is much safer and still
      the same size. 
      
      Made the shared pointers in the the ExecutionContext class protected
      and made accessors for all of the various ways to get at the pointers,
      references, and shared pointers.
      
      llvm-svn: 140298
      c14ee32d
Loading