diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -262,6 +262,9 @@ ec = retryMb.getError(); if (!ec) mb = std::move(*retryMb); + } else { + // We've already handled this file. + return; } } if (ec) { diff --git a/lld/test/COFF/winsysroot.test b/lld/test/COFF/winsysroot.test --- a/lld/test/COFF/winsysroot.test +++ b/lld/test/COFF/winsysroot.test @@ -26,6 +26,10 @@ # RUN: lld-link %t.obj /winsysroot:%t.dir/sysroot \ # RUN: std32.lib /entry:main +Check that passing a lib from /winsysroot twice is ok +# RUN: lld-link %p/Inputs/hello64.obj /winsysroot:%t.dir/sysroot \ +# RUN: std64.lib std64.lib /entry:main + If winsysroot lib appears before we can detect arch we don't find it # RUN: not lld-link std64.lib %p/Inputs/hello64.obj /winsysroot:%t.dir/sysroot \ # RUN: /entry:main