diff options
Diffstat (limited to 'source/Plugins/SymbolFile')
| -rw-r--r-- | source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp | 18 | ||||
| -rw-r--r-- | source/Plugins/SymbolFile/DWARF/NameToDIE.cpp | 12 | ||||
| -rw-r--r-- | source/Plugins/SymbolFile/DWARF/NameToDIE.h | 3 | ||||
| -rw-r--r-- | source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 6 | ||||
| -rw-r--r-- | source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h | 2 | 
5 files changed, 24 insertions, 17 deletions
diff --git a/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index 1d8b759d2fa8..8aec35d09ce5 100644 --- a/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -3900,10 +3900,9 @@ bool DWARFASTParserClang::CopyUniqueClassMethodTypes(          if (src_name) {            ConstString src_const_name(src_name);            if (src_die.GetAttributeValueAsUnsigned(DW_AT_artificial, 0)) -            src_name_to_die_artificial.Append(src_const_name.GetStringRef(), -                                              src_die); +            src_name_to_die_artificial.Append(src_const_name, src_die);            else -            src_name_to_die.Append(src_const_name.GetStringRef(), src_die); +            src_name_to_die.Append(src_const_name, src_die);          }        }      } @@ -3920,10 +3919,9 @@ bool DWARFASTParserClang::CopyUniqueClassMethodTypes(          if (dst_name) {            ConstString dst_const_name(dst_name);            if (dst_die.GetAttributeValueAsUnsigned(DW_AT_artificial, 0)) -            dst_name_to_die_artificial.Append(dst_const_name.GetStringRef(), -                                              dst_die); +            dst_name_to_die_artificial.Append(dst_const_name, dst_die);            else -            dst_name_to_die.Append(dst_const_name.GetStringRef(), dst_die); +            dst_name_to_die.Append(dst_const_name, dst_die);          }        }      } @@ -4036,7 +4034,7 @@ bool DWARFASTParserClang::CopyUniqueClassMethodTypes(        src_name_to_die.Sort();        for (idx = 0; idx < dst_size; ++idx) { -        llvm::StringRef dst_name = dst_name_to_die.GetCStringAtIndex(idx); +        ConstString dst_name = dst_name_to_die.GetCStringAtIndex(idx);          dst_die = dst_name_to_die.GetValueAtIndexUnchecked(idx);          src_die = src_name_to_die.Find(dst_name, DWARFDIE()); @@ -4091,7 +4089,7 @@ bool DWARFASTParserClang::CopyUniqueClassMethodTypes(      dst_name_to_die_artificial.Sort();      for (idx = 0; idx < src_size_artificial; ++idx) { -      llvm::StringRef src_name_artificial = +      ConstString src_name_artificial =            src_name_to_die_artificial.GetCStringAtIndex(idx);        src_die = src_name_to_die_artificial.GetValueAtIndexUnchecked(idx);        dst_die = @@ -4135,13 +4133,13 @@ bool DWARFASTParserClang::CopyUniqueClassMethodTypes(    if (dst_size_artificial) {      for (idx = 0; idx < dst_size_artificial; ++idx) { -      llvm::StringRef dst_name_artificial = +      ConstString dst_name_artificial =            dst_name_to_die_artificial.GetCStringAtIndex(idx);        dst_die = dst_name_to_die_artificial.GetValueAtIndexUnchecked(idx);        if (log)          log->Printf("warning: need to create artificial method for 0x%8.8x for "                      "method '%s'", -                    dst_die.GetOffset(), dst_name_artificial.str().c_str()); +                    dst_die.GetOffset(), dst_name_artificial.GetCString());        failures.Append(dst_die);      } diff --git a/source/Plugins/SymbolFile/DWARF/NameToDIE.cpp b/source/Plugins/SymbolFile/DWARF/NameToDIE.cpp index f5f979caa38e..c97680eda0fe 100644 --- a/source/Plugins/SymbolFile/DWARF/NameToDIE.cpp +++ b/source/Plugins/SymbolFile/DWARF/NameToDIE.cpp @@ -28,11 +28,11 @@ void NameToDIE::Finalize() {  }  void NameToDIE::Insert(const ConstString &name, const DIERef &die_ref) { -  m_map.Append(name.GetStringRef(), die_ref); +  m_map.Append(name, die_ref);  }  size_t NameToDIE::Find(const ConstString &name, DIEArray &info_array) const { -  return m_map.GetValues(name.GetStringRef(), info_array); +  return m_map.GetValues(name, info_array);  }  size_t NameToDIE::Find(const RegularExpression ®ex, @@ -55,15 +55,15 @@ size_t NameToDIE::FindAllEntriesForCompileUnit(dw_offset_t cu_offset,  void NameToDIE::Dump(Stream *s) {    const uint32_t size = m_map.GetSize();    for (uint32_t i = 0; i < size; ++i) { -    llvm::StringRef cstr = m_map.GetCStringAtIndex(i); +    ConstString cstr = m_map.GetCStringAtIndex(i);      const DIERef &die_ref = m_map.GetValueAtIndexUnchecked(i); -    s->Printf("%p: {0x%8.8x/0x%8.8x} \"%s\"\n", (const void *)cstr.data(), -              die_ref.cu_offset, die_ref.die_offset, cstr.str().c_str()); +    s->Printf("%p: {0x%8.8x/0x%8.8x} \"%s\"\n", (const void *)cstr.GetCString(), +              die_ref.cu_offset, die_ref.die_offset, cstr.GetCString());    }  }  void NameToDIE::ForEach( -    std::function<bool(llvm::StringRef name, const DIERef &die_ref)> const +    std::function<bool(ConstString name, const DIERef &die_ref)> const          &callback) const {    const uint32_t size = m_map.GetSize();    for (uint32_t i = 0; i < size; ++i) { diff --git a/source/Plugins/SymbolFile/DWARF/NameToDIE.h b/source/Plugins/SymbolFile/DWARF/NameToDIE.h index e3fe321338a2..bba44fda3c04 100644 --- a/source/Plugins/SymbolFile/DWARF/NameToDIE.h +++ b/source/Plugins/SymbolFile/DWARF/NameToDIE.h @@ -43,7 +43,8 @@ public:                                        DIEArray &info_array) const;    void -  ForEach(std::function<bool(llvm::StringRef name, const DIERef &die_ref)> const +  ForEach(std::function<bool(lldb_private::ConstString name, +                             const DIERef &die_ref)> const                &callback) const;  protected: diff --git a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 973b5ef9fb46..8c2fc3d3aa42 100644 --- a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -1917,6 +1917,12 @@ uint32_t SymbolFileDWARF::ResolveSymbolContext(const FileSpec &file_spec,    return sc_list.GetSize() - prev_size;  } +void SymbolFileDWARF::PreloadSymbols() { +  std::lock_guard<std::recursive_mutex> guard( +      GetObjectFile()->GetModule()->GetMutex()); +  Index(); +} +  void SymbolFileDWARF::Index() {    if (m_indexed)      return; diff --git a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h index 14b29fa44fa3..9b1eb1d76fea 100644 --- a/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h +++ b/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h @@ -226,6 +226,8 @@ public:        const lldb_private::ConstString &name,        const lldb_private::CompilerDeclContext *parent_decl_ctx) override; +  void PreloadSymbols() override; +    //------------------------------------------------------------------    // PluginInterface protocol    //------------------------------------------------------------------  | 
