Skip to content
  1. May 15, 2013
  2. May 10, 2013
    • Greg Clayton's avatar
      <rdar://problem/13854277> · 57abc5d6
      Greg Clayton authored
      <rdar://problem/13594769>
      
      Main changes in this patch include:
      - cleanup plug-in interface and use ConstStrings for plug-in names
      - Modfiied the BSD Archive plug-in to be able to pick out the correct .o file when .a files contain multiple .o files with the same name by using the timestamp
      - Modified SymbolFileDWARFDebugMap to properly verify the timestamp on .o files it loads to ensure we don't load updated .o files and cause problems when debugging
      
      The plug-in interface changes:
      
      Modified the lldb_private::PluginInterface class that all plug-ins inherit from:
      
      Changed:
      
      virtual const char * GetPluginName() = 0;
      
      To: 
      
      virtual ConstString GetPluginName() = 0;
      
      Removed:
      
      virtual const char * GetShortPluginName() = 0;
      
      - Fixed up all plug-in to adhere to the new interface and to return lldb_private::ConstString values for the plug-in names. 
      - Fixed all plug-ins to return simple names with no prefixes. Some plug-ins had prefixes and most ones didn't, so now they all don't have prefixed names, just simple names like "linux", "gdb-remote", etc.
      
      llvm-svn: 181631
      57abc5d6
  3. May 08, 2013
    • Enrico Granata's avatar
      <rdar://problem/13621080> · cc7f9bf5
      Enrico Granata authored
      This commit changes the ${function.name-with-args} prompt keyword to also tackle structs
      Previously, since aggregates have no values, this would show up as foo=(null)
      This checkin changes that to instead print foo=(Foo at 0x123) (i.e. typename at address)
      There are other potential choices here (summary, one-liner printout of all members, ...) and I would love to hear feedback about better options, if any
      
      llvm-svn: 181462
      cc7f9bf5
  4. May 02, 2013
  5. May 01, 2013
    • Greg Clayton's avatar
      <rdar://problem/13776113> · 83633259
      Greg Clayton authored
      Dynamic type resolution not working for typedef's such as the __ptr_ member in the C++11 std::shared_ptr.
      
      llvm-svn: 180818
      83633259
  6. Apr 30, 2013
  7. Apr 29, 2013
    • Greg Clayton's avatar
      Cleanup logging to use the new "std::string FileSpec::GetPath()" function.... · b5ad4ec7
      Greg Clayton authored
      Cleanup logging to use the new "std::string FileSpec::GetPath()" function. Also added a similar function for modules:
      
      std::string
      Module::GetSpecificationDescription () const;
      
      This returns the module as "/usr/lib/libfoo.dylib" for normal files (calls "std::string FileSpec::GetPath()" on m_file) but it also might include the object name in case the module is for a .o file in a BSD archive ("/usr/lib/libfoo.a(bar.o)"). Cleaned up necessary logging code to use it.
      
      llvm-svn: 180717
      b5ad4ec7
  8. Apr 25, 2013
    • Greg Clayton's avatar
      Added the ability to extract a ModuleSpecList (a new class) from an... · f4d6de6a
      Greg Clayton authored
      Added the ability to extract a ModuleSpecList (a new class) from an ObjectFile. This is designed to be used when you have an object file that contains one or more architectures (MacOSX universal (fat) files) and/or one or more objects (BSD archive (.a files)).
      
      There is a new static ObjectFile function you can call:
      
      size_t
      ObjectFile::GetModuleSpecifications (const FileSpec &file,
                                           lldb::offset_t file_offset,
                                           ModuleSpecList &specs)
      
      This will fill in "specs" which the details of all the module specs (file + arch + UUID (if there is one) + object name (for BSD archive objects eventually) + file offset to the object in question).
      
      This helps us when a user specifies a file that contains a single architecture, and also helps us when we are given a debug symbol file (like a dSYM file on MacOSX) that contains one or more architectures and we need to be able to match it up to an existing Module that has no debug info.
      
      llvm-svn: 180224
      f4d6de6a
  9. Apr 24, 2013
    • Greg Clayton's avatar
      <rdar://problem/13298695> · 283b2653
      Greg Clayton authored
      Fixed LLDB to be able to correctly parse template parameters that have no name and no type. This can be triggered by the following LLVM/Clang code:
      
      template <typename T, typename = void>
      class SmallVectorTemplateCommon : public SmallVectorBase {
      
      The “typename = void” was emitting DWARF with an empty DW_AT_name and no DW_AT_type. We now correctly infer that no DW_AT_type means “void” and that an empty name is ok.
      
      This means you can now call functions on things that inherit from SmallVectorTemplateCommon.
      
      llvm-svn: 180155
      283b2653
  10. Apr 22, 2013
  11. Apr 19, 2013
  12. Apr 18, 2013
    • Greg Clayton's avatar
      Since we use C++11, we should switch over to using std::unique_ptr when C++11... · e01e07b6
      Greg Clayton authored
      Since we use C++11, we should switch over to using std::unique_ptr when C++11 is being used. To do this, we follow what we have done for shared pointers and we define a STD_UNIQUE_PTR macro that can be used and it will "do the right thing". Due to some API differences in std::unique_ptr and due to the fact that we need to be able to compile without C++11, we can't use move semantics so some code needed to change so that it can compile with either C++.
      
      Anyone wanting to use a unique_ptr or auto_ptr should now use the "STD_UNIQUE_PTR(TYPE)" macro.
      
      llvm-svn: 179779
      e01e07b6
  13. Apr 17, 2013
  14. Apr 14, 2013
    • Greg Clayton's avatar
      Fixed issues with the way ELF symbols are parsed: · 9594f4c8
      Greg Clayton authored
      - Do not add symbols with no names
      - Make sure that symbols from ELF symbol tables know that the byte size is correct. Previously the symbols would calculate their sizes by looking for the next symbol and take symbols that had zero size and make them have invalid sizes.
      - Added the ability to dump raw ELF symbols by adding a Dump method to ELFSymbol
      
      Also removed some unused code from lldb_private::Symtab.
      
      llvm-svn: 179466
      9594f4c8
  15. Apr 11, 2013
  16. Apr 06, 2013
  17. Apr 03, 2013
    • Greg Clayton's avatar
      <rdar://problem/13384801> · bc43cab5
      Greg Clayton authored
      Make lldb_private::RegularExpression thread safe everywhere. This was done by removing the m_matches array from the lldb_private::RegularExpression class and putting it into the new lldb_private::RegularExpression::Match class. When executing a regular expression you now have the option to create a lldb_private::RegularExpression::Match object and pass a pointer in if you want to get parenthesized matching. If you don't want any matching, you pass in NULL. The lldb_private::RegularExpression::Match object is initialized with the number of matches you desire. Any matching strings are now extracted from the lldb_private::RegularExpression::Match objects. This makes the regular expression objects thread safe and as a result many more regex objects were turned into static objects that end up using a local lldb_private::RegularExpression::Match object when executing.
      
      llvm-svn: 178702
      bc43cab5
    • Rafael Espindola's avatar
      Fix build. · f24933f6
      Rafael Espindola authored
      This should fix the build breakage caused by the api change in 178663.
      
      llvm-svn: 178700
      f24933f6
    • Greg Clayton's avatar
      <rdar://problem/13506727> · 43fe217b
      Greg Clayton authored
      Symbol table function names should support lookups like symbols with debug info. 
      
      To fix this I:
      - Gutted the way FindFunctions is used, there used to be way too much smarts only in the DWARF plug-in
      - Made it more efficient by chopping the name up once and using simpler queries so that SymbolFile and Symtab plug-ins don't need to do as much
      - Filter the results at a higher level
      - Make the lldb_private::Symtab able to chop up C++ mangled names and make as much sense out of them as possible and also be able to search by basename, fullname, method name, and selector name.
      
      llvm-svn: 178608
      43fe217b
  18. Mar 30, 2013
    • Sean Callanan's avatar
      Elide all artificial copy constructors, because · 6447c475
      Sean Callanan authored
      they are probably trivial.  This means that we
      don't confuse Clang about whether a class is
      trivially copy constructible.  It can figure
      that out itself as long as we don't explicitly
      feed it the constructors.
      
      If the class is trivially copy-constructible,
      this can change the ABI that Clang uses to call
      functions that return that class (e.g., by making
      the object be returned in a register), so this
      is quite important for correctness.
      
      <rdar://problem/13457741>
      
      llvm-svn: 178411
      6447c475
    • Sean Callanan's avatar
      Fixed the way ClangASTImporter deports types from · e55bc8a9
      Sean Callanan authored
      ASTContexts that will not stay around.  Before, we
      did this in a very half-hearted way.  Now we maintain
      work queues of all Decls that need to be completed
      before the source ASTContext can go away; we then
      expunge their origins completely.
      
      <rdar://problem/13511875>
      
      llvm-svn: 178410
      e55bc8a9
  19. Mar 28, 2013
    • Greg Clayton's avatar
      <rdar://problem/13521159> · 5160ce5c
      Greg Clayton authored
      LLDB is crashing when logging is enabled from lldb-perf-clang. This has to do with the global destructor chain as the process and its threads are being torn down.
      
      All logging channels now make one and only one instance that is kept in a global pointer which is never freed. This guarantees that logging can correctly continue as the process tears itself down.
      
      llvm-svn: 178191
      5160ce5c
  20. Mar 27, 2013
  21. Mar 26, 2013
  22. Mar 23, 2013
  23. Mar 22, 2013
  24. Mar 21, 2013
    • Sean Callanan's avatar
      Modified the way we report fields of records. · 6b200d0b
      Sean Callanan authored
      Clang requires them to have complete types, but
      we were previously only completing them if they
      were of tag or Objective-C object types.
      
      I have implemented a method on the ASTImporter
      whose job is to complete a type.  It handles not
      only the cases mentioned above, but also array
      and atomic types.
      
      <rdar://problem/13446777>
      
      llvm-svn: 177672
      6b200d0b
    • Jason Molenda's avatar
      Add a new method GetFunctionAddressAndSizeVector to DWARFCallFrameInfo. · 5635f77a
      Jason Molenda authored
      This returns a vector of <file address, size> entries for all of
      the functions in the module that have an eh_frame FDE.
      
      Update ObjectFileMachO to use the eh_frame FDE function addresses if
      the LC_FUNCTION_STARTS section is missing, to fill in the start 
      addresses of any symbols that have been stripped from the binary.
      
      Generally speaking, lldb works best if it knows the actual start
      address of every function in a module - it's especially important
      for unwinding, where lldb inspects the instructions in the prologue
      of the function.  In a stripped binary, it is deprived of this
      information and it reduces the quality of our unwinds and saved
      register retrieval.  
      
      Other ObjectFile users may want to use the function addresses from 
      DWARFCallFrameInfo to fill in any stripped symbols like ObjectFileMachO
      does already.
      <rdar://problem/13365659> 
      
      llvm-svn: 177624
      5635f77a
  25. Mar 20, 2013
  26. Mar 19, 2013
  27. Mar 16, 2013
  28. Mar 14, 2013
    • Greg Clayton's avatar
      <rdar://problem/13421412> · faac1118
      Greg Clayton authored
      Many "byte size" members and variables were using a mixture of uint32_t and size_t. Switching over to using uint64_t everywhere.
      
      llvm-svn: 177091
      faac1118
    • Greg Clayton's avatar
      <rdar://problem/13413693> · 617995c0
      Greg Clayton authored
      Fixed a crasher in the new DWARF in .o files line table linking function where "back()" could end up being called on an empty std::vector.
      
      llvm-svn: 177082
      617995c0
  29. Mar 12, 2013
  30. Mar 09, 2013
  31. Mar 08, 2013
    • Sean Callanan's avatar
      Added very lightweight, statically-allocated · 8106d808
      Sean Callanan authored
      counters for a variety of metrics associated
      with expression parsing.  This should give some
      idea of how much work the expression parser is
      doing on Clang's behalf, and help with hopefully
      reducing that load over time.
      
      <rdar://problem/13210748> Audit type search/import for expressions
      
      llvm-svn: 176714
      8106d808
Loading