llvm-symbolizer: Recognize a drive letter on win32. Then "REQUIRES: shell" can be...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Mon, 1 Jul 2013 09:51:42 +0000 (09:51 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Mon, 1 Jul 2013 09:51:42 +0000 (09:51 +0000)
FIXME: Could we use llvm::sys::Path here?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185322 91177308-0d34-0410-b5e6-96231b3b80d8

test/DebugInfo/llvm-symbolizer.test
tools/llvm-symbolizer/LLVMSymbolize.cpp

index 11ba66428371eba1f7187d1dca472a293562534b..4dc369948fde5a7f2c8e5fd6da627386b0e62b5f 100644 (file)
@@ -10,8 +10,6 @@ RUN: echo "%p/Inputs/macho-universal:x86_64 0x100000f05" >> %t.input
 RUN: llvm-symbolizer --functions --inlining --demangle=false \
 RUN:    --default-arch=i386 < %t.input | FileCheck %s
 
-REQUIRES: shell
-
 CHECK:       main
 CHECK-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16
 
index 57f34c247291c77db13377208e8796175f92a74b..1945d689dee4d8d7365093d8850d0c5f15c2e421 100644 (file)
@@ -279,6 +279,11 @@ LLVMSymbolizer::getOrCreateModuleInfo(const std::string &ModuleName) {
   std::string BinaryName = ModuleName;
   std::string ArchName = Opts.DefaultArch;
   size_t ColonPos = ModuleName.find(':');
+#if defined(_WIN32)
+  // Recognize a drive letter on win32.
+  if (ColonPos == 1 && isalpha(ModuleName[0]))
+    ColonPos = ModuleName.find(':', 2);
+#endif
   if (ColonPos != std::string::npos) {
     BinaryName = ModuleName.substr(0, ColonPos);
     ArchName = ModuleName.substr(ColonPos + 1);