diff options
| author | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2018-04-10 01:50:25 +0000 | 
|---|---|---|
| committer | Alexandre Ganea <alexandre.ganea@ubisoft.com> | 2018-04-10 01:50:25 +0000 | 
| commit | 76a0154ce5cd60172ded3479bddfdf198b1dddf9 (patch) | |
| tree | 5a6b629f99f3e40d0430de1846910378ad868c89 | |
| parent | 19618fc639978ac15086ab7448e529d4e3fbb49f (diff) | |
| download | bcm5719-llvm-76a0154ce5cd60172ded3479bddfdf198b1dddf9.tar.gz bcm5719-llvm-76a0154ce5cd60172ded3479bddfdf198b1dddf9.zip  | |
[llvm-ar] Fix lib.exe detection when running within MSVC toolchain
Differential Revision: https://reviews.llvm.org/D44808
llvm-svn: 329658
| -rw-r--r-- | llvm/test/tools/llvm-ar/case-detection.test | 11 | ||||
| -rw-r--r-- | llvm/tools/llvm-ar/llvm-ar.cpp | 12 | 
2 files changed, 17 insertions, 6 deletions
diff --git a/llvm/test/tools/llvm-ar/case-detection.test b/llvm/test/tools/llvm-ar/case-detection.test new file mode 100644 index 00000000000..30f9c45e15f --- /dev/null +++ b/llvm/test/tools/llvm-ar/case-detection.test @@ -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) diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp index 0775aff00d2..0a8d59c7ee2 100644 --- a/llvm/tools/llvm-ar/llvm-ar.cpp +++ b/llvm/tools/llvm-ar/llvm-ar.cpp @@ -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!");  }  | 

