From 0d356ec0eebb3fbbb2de0a12743457d44341a047 Mon Sep 17 00:00:00 2001 From: Yaron Keren Date: Fri, 16 May 2014 13:16:30 +0000 Subject: [PATCH] Fix hardcoded slash to native path seperator which was exposed from llvm::sys::path. http://reviews.llvm.org/D3687 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208980 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/Path.h | 5 +++++ lib/MC/MCDwarf.cpp | 2 +- lib/Support/Path.cpp | 6 ++++++ lib/Support/SourceMgr.cpp | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/llvm/Support/Path.h b/include/llvm/Support/Path.h index ba18529b48a..cf821f0ef4a 100644 --- a/include/llvm/Support/Path.h +++ b/include/llvm/Support/Path.h @@ -295,6 +295,11 @@ const StringRef extension(StringRef path); /// @result true if \a value is a path separator character on the host OS bool is_separator(char value); +/// @brief Return the preferred separator for this platform. +/// +/// @result StringRef of the preferred separator, null-terminated. +const StringRef get_separator(); + /// @brief Get the typical temporary directory for the system, e.g., /// "/var/tmp" or "C:/TEMP" /// diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index 3ccc23f7d9e..be6731abedd 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -689,7 +689,7 @@ static void EmitGenDwarfInfo(MCStreamer *MCOS, const SmallVectorImpl &MCDwarfDirs = context.getMCDwarfDirs(); if (MCDwarfDirs.size() > 0) { MCOS->EmitBytes(MCDwarfDirs[0]); - MCOS->EmitBytes("/"); + MCOS->EmitBytes(sys::path::get_separator()); } const SmallVectorImpl &MCDwarfFiles = MCOS->getContext().getMCDwarfFiles(); diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp index d345829d4dd..b8d676f286c 100644 --- a/lib/Support/Path.cpp +++ b/lib/Support/Path.cpp @@ -569,6 +569,12 @@ bool is_separator(char value) { } } +static const char preferred_separator_string[] = { preferred_separator, '\0' }; + +const StringRef get_separator() { + return preferred_separator_string; +} + void system_temp_directory(bool erasedOnReboot, SmallVectorImpl &result) { result.clear(); diff --git a/lib/Support/SourceMgr.cpp b/lib/Support/SourceMgr.cpp index ca682897968..acd75fbbd19 100644 --- a/lib/Support/SourceMgr.cpp +++ b/lib/Support/SourceMgr.cpp @@ -18,6 +18,7 @@ #include "llvm/ADT/Twine.h" #include "llvm/Support/Locale.h" #include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/system_error.h" using namespace llvm; @@ -60,7 +61,7 @@ size_t SourceMgr::AddIncludeFile(const std::string &Filename, // If the file didn't exist directly, see if it's in an include path. for (unsigned i = 0, e = IncludeDirectories.size(); i != e && !NewBuf; ++i) { - IncludedFile = IncludeDirectories[i] + "/" + Filename; + IncludedFile = IncludeDirectories[i] + sys::path::get_separator().data() + Filename; MemoryBuffer::getFile(IncludedFile.c_str(), NewBuf); } -- 2.34.1