[lld] 9db61c3 - [LLD][COFF] Convert file name to lowercase when inserting it into visitedLibs

Pengxuan Zheng via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 15 09:39:46 PDT 2022


Author: Pengxuan Zheng
Date: 2022-06-15T09:39:35-07:00
New Revision: 9db61c3fe18aa5b717765745fd3287660fad571d

URL: https://github.com/llvm/llvm-project/commit/9db61c3fe18aa5b717765745fd3287660fad571d
DIFF: https://github.com/llvm/llvm-project/commit/9db61c3fe18aa5b717765745fd3287660fad571d.diff

LOG: [LLD][COFF] Convert file name to lowercase when inserting it into visitedLibs

It seems to be a bug in `LinkerDriver::findFile`, the file name is not converted
to lowercase when being inserted into `visitedLibs`. This is the only exception
in the file and all other places always convert file names to lowercase when
inserting them into `visitedLibs` (or `visitedFiles`).

Reviewed By: thieta, hans

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

Added: 
    lld/test/COFF/visitedlibs.test

Modified: 
    lld/COFF/Driver.cpp

Removed: 
    


################################################################################
diff  --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index d1c68d1ba125f..2843a9dde09bc 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -473,7 +473,7 @@ Optional<StringRef> LinkerDriver::findFile(StringRef filename) {
   }
 
   if (path.endswith_insensitive(".lib"))
-    visitedLibs.insert(std::string(sys::path::filename(path)));
+    visitedLibs.insert(std::string(sys::path::filename(path).lower()));
   return path;
 }
 

diff  --git a/lld/test/COFF/visitedlibs.test b/lld/test/COFF/visitedlibs.test
new file mode 100644
index 0000000000000..639a465d0ccc2
--- /dev/null
+++ b/lld/test/COFF/visitedlibs.test
@@ -0,0 +1,10 @@
+# RUN: rm -rf %t && mkdir -p %t
+# RUN: cp %S/Inputs/hello64.obj %t
+# RUN: cp %S/Inputs/std64.lib %t/STD64.lib
+
+# RUN: lld-link %t/STD64.lib /out:%t.exe /entry:main \
+# RUN:   /subsystem:console %t/hello64.obj /defaultlib:STD64.lib \
+# RUN:   /verbose 2>&1 | FileCheck %s
+
+CHECK: Reading {{.*}}/STD64.lib
+CHECK-NOT: could not open 'STD64.lib'


        


More information about the llvm-commits mailing list