summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Core/Module.h5
-rw-r--r--lldb/include/lldb/Target/PathMappingList.h3
-rw-r--r--lldb/source/Core/Module.cpp3
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp2
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp2
-rw-r--r--lldb/source/Target/PathMappingList.cpp19
6 files changed, 20 insertions, 14 deletions
diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h
index 55182ca7919..9d9a60b5eeb 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 048f44a360b..4e5a5693235 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 765f71598f4..1c3ab6da52a 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<std::recursive_mutex> 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 d3f4d24e4ce..bce21c44b73 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 92e513d856f..36f316245d2 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 4df3a185471..90fff57d59b 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;
}
OpenPOWER on IntegriCloud