[PATCH] D26734: [ELF] Don't replace path separators on *NIX

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 16 11:28:32 PST 2016


davide updated this revision to Diff 78231.

https://reviews.llvm.org/D26734

Files:
  lib/Core/Reproduce.cpp
  test/ELF/reproduce-backslash.s


Index: test/ELF/reproduce-backslash.s
===================================================================
--- /dev/null
+++ test/ELF/reproduce-backslash.s
@@ -0,0 +1,9 @@
+# REQUIRES: x86, cpio, shell
+
+# Test that we don't erroneously replace \ with / on UNIX, as it's
+# legal for a filename to contain backslashes.
+# RUN: llvm-mc %s -o foo\\.o -filetype=obj -triple=x86_64-pc-linux
+# RUN: ld.lld foo\\.o --reproduce repro
+# RUN: cpio -t < repro.cpio | FileCheck %s
+
+# CHECK: repro/{{.*}}/foo\.o
Index: lib/Core/Reproduce.cpp
===================================================================
--- lib/Core/Reproduce.cpp
+++ lib/Core/Reproduce.cpp
@@ -53,7 +53,9 @@
 // Converts path to use unix path separators so the cpio can be extracted on
 // both unix and windows.
 static void convertToUnixPathSeparator(SmallString<128> &Path) {
+#ifdef LLVM_ON_WIN32
   std::replace(Path.begin(), Path.end(), '\\', '/');
+#endif
 }
 
 void CpioFile::append(StringRef Path, StringRef Data) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26734.78231.patch
Type: text/x-patch
Size: 991 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161116/3ff7b92b/attachment.bin>


More information about the llvm-commits mailing list