[llvm] r329658 - [llvm-ar] Fix lib.exe detection when running within MSVC toolchain

Alexandre Ganea via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 9 18:50:25 PDT 2018


Author: aganea
Date: Mon Apr  9 18:50:25 2018
New Revision: 329658

URL: http://llvm.org/viewvc/llvm-project?rev=329658&view=rev
Log:
[llvm-ar] Fix lib.exe detection when running within MSVC toolchain

Differential Revision: https://reviews.llvm.org/D44808

Added:
    llvm/trunk/test/tools/llvm-ar/case-detection.test
Modified:
    llvm/trunk/tools/llvm-ar/llvm-ar.cpp

Added: llvm/trunk/test/tools/llvm-ar/case-detection.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-ar/case-detection.test?rev=329658&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-ar/case-detection.test (added)
+++ llvm/trunk/test/tools/llvm-ar/case-detection.test Mon Apr  9 18:50:25 2018
@@ -0,0 +1,11 @@
+-- Test CamelCase tool name to ensure detection works properly
+
+RUN: yaml2obj %S/Inputs/coff.yaml -o %t.obj
+RUN: rm -rf %t1
+RUN: mkdir %t1
+RUN: cp llvm-ar %t1/Lib
+RUN: %t1/Lib /OUT:%t.lib %t.obj | FileCheck %s -allow-empty
+RUN: cp llvm-ar %t1/Ar
+RUN: %t1/Ar crs %t.ar %t.obj | FileCheck %s -allow-empty
+
+CHECK-NOT: OVERVIEW: LLVM Archiver (llvm-ar)

Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=329658&r1=329657&r2=329658&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Mon Apr  9 18:50:25 2018
@@ -109,9 +109,9 @@ MODIFIERS (generic):
 )";
 
 void printHelpMessage() {
-  if (Stem.find("ranlib") != StringRef::npos)
+  if (Stem.find_lower("ranlib") != StringRef::npos)
     outs() << RanlibHelp;
-  else if (Stem.find("ar") != StringRef::npos)
+  else if (Stem.find_lower("ar") != StringRef::npos)
     outs() << ArHelp;
 }
 
@@ -960,16 +960,16 @@ int main(int argc, char **argv) {
   llvm::InitializeAllAsmParsers();
 
   Stem = sys::path::stem(ToolName);
-  if (Stem.find("dlltool") != StringRef::npos)
+  if (Stem.find_lower("dlltool") != StringRef::npos)
     return dlltoolDriverMain(makeArrayRef(argv, argc));
 
-  if (Stem.find("ranlib") != StringRef::npos)
+  if (Stem.find_lower("ranlib") != StringRef::npos)
     return ranlib_main(argc, argv);
 
-  if (Stem.find("lib") != StringRef::npos)
+  if (Stem.find_lower("lib") != StringRef::npos)
     return libDriverMain(makeArrayRef(argv, argc));
 
-  if (Stem.find("ar") != StringRef::npos)
+  if (Stem.find_lower("ar") != StringRef::npos)
     return ar_main(argc, argv);
   fail("Not ranlib, ar, lib or dlltool!");
 }




More information about the llvm-commits mailing list