Skip to content
  1. Jan 04, 2012
  2. Dec 30, 2011
    • Greg Clayton's avatar
      <rdar://problem/10368163> · 77ccca71
      Greg Clayton authored
      Watch for empty symbol tables by doing a lot more error checking on
      all mach-o symbol table load command values and data that is obtained.
      This avoids a crash that was happening when there was no string table.
      
      llvm-svn: 147358
      77ccca71
  3. Dec 29, 2011
    • Greg Clayton's avatar
      <rdar://problem/10551280> · 360f9a76
      Greg Clayton authored
      Fixed a crasher that can occur when parsing invalid DWARF.
      
      llvm-svn: 147350
      360f9a76
    • Greg Clayton's avatar
      <rdar://problem/10568905> · d3444848
      Greg Clayton authored
      Fixed an issue where our new accelerator tables could cause a crash
      when we got a full 32 bit hash match, yet a C string mismatch.
      
      We had a member variable in DWARFMappedHash::Prologue named 
      "min_hash_data_byte_size" the would compute the byte size of HashData
      so we could skip hash data efficiently. It started out with a byte size
      value of 4. When we read the table in from disk, we would clear the
      atom array and read it from disk, and the byte size would still be set
      to 4. We would then, as we read each atom from disk, increment this count. 
      So the byte size of the HashData was off, which means when we get a lookup
      whose 32 bit hash does matches, but the C string does NOT match (which is
      very very rare), then we try and skip the data for that hash and we would
      add an incorrect offset and get off in our parsing of the hash data and 
      cause this crash. 
      
      To fix this I added a few safeguards:
      1 - I now correctly clear the hash data size when we reset the atom array using the new DWARFMappedHash::Prologue::ClearAtoms() function. 
      2 - I now correctly always let the AppendAtom() calculate the byte size of the hash (before we were doing things manually some times, which was correct, but not good)
      3 - I also track if the size of each HashData is a fixed byte size or not, and "do the right thing" when we need to skip the data.
      4 - If we do get off in the weeds, then I make sure to return an error and stop any further parsing from happening. 
      
      llvm-svn: 147334
      d3444848
    • Greg Clayton's avatar
      <rdar://problem/10546739> · dcad5021
      Greg Clayton authored
      Fixed SBValue::GetValueAsUnsigned() and SBValue::GetValueAsSigned() calls to
      work for bitfields.
      
      llvm-svn: 147332
      dcad5021
    • Greg Clayton's avatar
      Centralize the code the reads the CFI so that we always log. · f97c5213
      Greg Clayton authored
      llvm-svn: 147330
      f97c5213
  4. Dec 28, 2011
  5. Dec 23, 2011
  6. Dec 22, 2011
  7. Dec 21, 2011
    • Sean Callanan's avatar
      The "desired result type" code in the expression · 20bb3aa5
      Sean Callanan authored
      parser has hitherto been an implementation waiting
      for a use.  I have now tied the '-o' option for
      the expression command -- which indicates that the
      result is an Objective-C object and needs to be
      printed -- to the ExpressionParser, which
      communicates the desired type to Clang.
      
      Now, if the result of an expression is determined
      by an Objective-C method call for which there is
      no type information, that result is implicitly
      cast to id if and only if the -o option is passed
      to the expression command.  (Otherwise if there
      is no explicit cast Clang will issue an error.
      This behavior is identical to what happened before
      r146756.)
      
      Also added a testcase for -o enabled and disabled.
      
      llvm-svn: 147099
      20bb3aa5
    • Sean Callanan's avatar
      I accidentally committed some changes to the · b952354d
      Sean Callanan authored
      Xcode workspace that aren't actually desirable.
      Reverted.
      
      llvm-svn: 147097
      b952354d
    • Johnny Chen's avatar
      Fix wrong test method name. · 4b730a73
      Johnny Chen authored
      llvm-svn: 147072
      4b730a73
    • Sean Callanan's avatar
      9b5eaa07
    • Jason Molenda's avatar
      Bump version number past lldb-98. · 0ffc16ce
      Jason Molenda authored
      llvm-svn: 147033
      0ffc16ce
    • Sean Callanan's avatar
      Tightened Clang against a bug in which RecordDecls · febbd63d
      Sean Callanan authored
      with incomplete definition data were being converted.
      Now Clang attempts to complete RecordDecls before
      converting them, avoiding a nasty crash.
      
      llvm-svn: 147029
      febbd63d
    • Sean Callanan's avatar
      Fixed a bug in the ASTImporter that affects · 5bc5a76d
      Sean Callanan authored
      types that have been imported multiple times.
      
      The discussion below uses this diagram:
      
      ASTContext     A      B      C
      Decl           Da     Db     Dc
      ASTImporter    \-Iab-/\-Iac-/
                     \-----Iac----/
      
      When a Decl D is imported from ASTContext A to
      ASTContext B, the ASTImporter Iab records the
      pair <Da, Db> in a DenseMap.  That way, if Iab
      ever encounters Da again (for example, as the
      DeclContext for another Decl), it can use the
      imported version.  This is not an optimization,
      it is critical: if I import the field "st_dev"
      as part of importing "struct stat," the field
      must have DeclContext equal to the parent
      structure or we end up with multiple different
      Decls containing different parts of "struct
      stat."  "struct stat" is imported once and
      recorded in the DenseMap; then the ASTImporter
      finds that same version when looking for the
      DeclContext of "st_dev."
      
      The bug arises when Db is imported into another
      ASTContext C and ASTContext B goes away.  This
      often occurs when LLDB produces result variables
      for expressions.  Ibc is aware of the transport
      of Db to Dc, but a brand new ASTImporter, Iac,
      is responsible for completing Dc from its source
      upon request.  That ASTImporter has no mappings,
      so it will produce a clone of Dc when attempting
      to import its children.  That means that type
      completion operations on Dc will fail.
      
      The solution is to create Iac as soon as Ibc
      imports D from B to C, and inform Iac of the
      mapping between Da and Dc.  This allows type
      completion to happen correctly.
      
      llvm-svn: 147016
      5bc5a76d
  8. Dec 20, 2011
Loading