From a498f0ec934cd4f68c0b62afee2c43e110961ee4 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Fri, 23 Sep 2016 18:42:38 +0000 Subject: [PATCH] Change Module::RemapPath to use StringRef. llvm-svn: 282277 --- lldb/include/lldb/Core/Module.h | 5 ++++- lldb/include/lldb/Target/PathMappingList.h | 3 ++- lldb/source/Core/Module.cpp | 3 ++- .../Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp | 2 +- .../Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 2 +- lldb/source/Target/PathMappingList.cpp | 19 ++++++++++--------- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h index 55182ca..9d9a60b 100644 --- a/lldb/include/lldb/Core/Module.h +++ b/lldb/include/lldb/Core/Module.h @@ -27,7 +27,9 @@ #include "lldb/Symbol/TypeSystem.h" #include "lldb/Target/PathMappingList.h" #include "lldb/lldb-forward.h" + #include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/StringRef.h" namespace lldb_private { @@ -953,7 +955,8 @@ public: /// /b true if \a path was successfully located and \a new_path /// is filled in with a new source path, \b false otherwise. //------------------------------------------------------------------ - bool RemapSourceFile(const char *path, std::string &new_path) const; + bool RemapSourceFile(llvm::StringRef path, std::string &new_path) const; + bool RemapSourceFile(const char *, std::string &) const = delete; //---------------------------------------------------------------------- /// @class LookupInfo Module.h "lldb/Core/Module.h" diff --git a/lldb/include/lldb/Target/PathMappingList.h b/lldb/include/lldb/Target/PathMappingList.h index 048f44a..4e5a569 100644 --- a/lldb/include/lldb/Target/PathMappingList.h +++ b/lldb/include/lldb/Target/PathMappingList.h @@ -87,7 +87,8 @@ public: /// /b true if \a path was successfully located and \a new_path /// is filled in with a new source path, \b false otherwise. //------------------------------------------------------------------ - bool RemapPath(const char *path, std::string &new_path) const; + bool RemapPath(llvm::StringRef path, std::string &new_path) const; + bool RemapPath(const char *, std::string &) const = delete; bool ReverseRemapPath(const ConstString &path, ConstString &new_path) const; diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index 765f715..1c3ab6d 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -1635,7 +1635,8 @@ bool Module::FindSourceFile(const FileSpec &orig_spec, return m_source_mappings.FindFile(orig_spec, new_spec); } -bool Module::RemapSourceFile(const char *path, std::string &new_path) const { +bool Module::RemapSourceFile(llvm::StringRef path, + std::string &new_path) const { std::lock_guard guard(m_mutex); return m_source_mappings.RemapPath(path, new_path); } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp index d3f4d24..bce21c4 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp @@ -462,7 +462,7 @@ bool DWARFDebugLine::ParseSupportFiles( for (uint32_t file_idx = 1; prologue.GetFile(file_idx, cu_comp_dir, file_spec); ++file_idx) { - if (module_sp->RemapSourceFile(file_spec.GetCString(), remapped_file)) + if (module_sp->RemapSourceFile(file_spec.GetPath(), remapped_file)) file_spec.SetFile(remapped_file, false); support_files.Append(file_spec); } diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 92e513d..36f3162 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -746,7 +746,7 @@ lldb::CompUnitSP SymbolFileDWARF::ParseCompileUnit(DWARFCompileUnit *dwarf_cu, } std::string remapped_file; - if (module_sp->RemapSourceFile(cu_file_spec.GetCString(), + if (module_sp->RemapSourceFile(cu_file_spec.GetPath(), remapped_file)) cu_file_spec.SetFile(remapped_file, false); } diff --git a/lldb/source/Target/PathMappingList.cpp b/lldb/source/Target/PathMappingList.cpp index 4df3a18..90fff57 100644 --- a/lldb/source/Target/PathMappingList.cpp +++ b/lldb/source/Target/PathMappingList.cpp @@ -136,7 +136,8 @@ void PathMappingList::Clear(bool notify) { bool PathMappingList::RemapPath(const ConstString &path, ConstString &new_path) const { const char *path_cstr = path.GetCString(); - + // CLEANUP: Convert this function to use StringRefs internally instead + // of raw c-strings. if (!path_cstr) return false; @@ -154,19 +155,19 @@ bool PathMappingList::RemapPath(const ConstString &path, return false; } -bool PathMappingList::RemapPath(const char *path, std::string &new_path) const { - if (m_pairs.empty() || path == nullptr || path[0] == '\0') +bool PathMappingList::RemapPath(llvm::StringRef path, + std::string &new_path) const { + if (m_pairs.empty() || path.empty()) return false; const_iterator pos, end = m_pairs.end(); for (pos = m_pairs.begin(); pos != end; ++pos) { - const size_t prefix_len = pos->first.GetLength(); + if (!path.consume_front(pos->first.GetStringRef())) + continue; - if (::strncmp(pos->first.GetCString(), path, prefix_len) == 0) { - new_path = pos->second.GetCString(); - new_path.append(path + prefix_len); - return true; - } + new_path = pos->second.GetStringRef(); + new_path.append(path); + return true; } return false; } -- 2.7.4