diff options
-rw-r--r-- | lld/include/lld/Core/Reproduce.h | 3 | ||||
-rw-r--r-- | lld/lib/Core/Reproduce.cpp | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lld/include/lld/Core/Reproduce.h b/lld/include/lld/Core/Reproduce.h index 6e1d36a5491..1b65f763ace 100644 --- a/lld/include/lld/Core/Reproduce.h +++ b/lld/include/lld/Core/Reproduce.h @@ -34,6 +34,9 @@ std::string rewritePath(StringRef S); // Returns the string form of the given argument. std::string toString(llvm::opt::Arg *Arg); + +// Replaces backslashes with slashes if Windows. +std::string convertToUnixPathSeparator(StringRef S); } #endif diff --git a/lld/lib/Core/Reproduce.cpp b/lld/lib/Core/Reproduce.cpp index 58bf2bda5a8..ab7261fa0e7 100644 --- a/lld/lib/Core/Reproduce.cpp +++ b/lld/lib/Core/Reproduce.cpp @@ -39,7 +39,7 @@ std::string lld::relativeToRoot(StringRef Path) { Res = Root.substr(2); path::append(Res, path::relative_path(Abs)); - return Res.str(); + return convertToUnixPathSeparator(Res); } // Quote a given string if it contains a space character. @@ -64,3 +64,13 @@ std::string lld::toString(opt::Arg *Arg) { return K + V; return K + " " + V; } + +std::string lld::convertToUnixPathSeparator(StringRef S) { +#ifdef LLVM_ON_WIN32 + std::string Ret = S.str(); + std::replace(Ret.begin(), Ret.end(), '\\', '/'); + return Ret; +#else + return S; +#endif +} |