diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -178,7 +178,7 @@ for (auto root : roots) { SmallString<261> buffer(root); path::append(buffer, path); - if (warnIfNotDirectory(optionLetter, buffer)) + if (fs::is_directory(buffer)) paths.push_back(saver.save(buffer.str())); } } diff --git a/lld/test/MachO/syslibroot.test b/lld/test/MachO/syslibroot.test --- a/lld/test/MachO/syslibroot.test +++ b/lld/test/MachO/syslibroot.test @@ -6,8 +6,9 @@ CHECK-NONEXISTENT-SYSLIBROOT-NEXT: Framework search paths: RUN: mkdir -p %t/usr/lib -RUN: lld -flavor darwinnew -v -syslibroot %t | FileCheck %s -check-prefix CHECK-SYSLIBROOT -DROOT=%t +RUN: lld -flavor darwinnew -v -syslibroot %t 2>&1 | FileCheck %s -check-prefix CHECK-SYSLIBROOT -DROOT=%t +CHECK-SYSLIBROOT-NOT: directory not found{{.*}}usr/local/lib CHECK-SYSLIBROOT: Library search paths: CHECK-SYSLIBROOT-NEXT: [[ROOT]]/usr/lib @@ -22,14 +23,6 @@ CHECK-PATH-WITHOUT-REROOT: Library search paths: CHECK-PATH-WITHOUT-REROOT-NEXT: [[PATH]] -# NOTE: the match here is fuzzy because the default search paths exist on Linux -# and macOS, but not on Windows (that is we ignore `/var/empty`). This allows -# us to run the test uniformly on all the platforms. -RUN: lld -flavor darwinnew -v -syslibroot /var/empty -syslibroot / 2>&1 | FileCheck %s -check-prefix CHECK-SYSLIBROOT-IGNORED - -CHECK-SYSLIBROOT-IGNORED: /usr/lib -CHECK-SYSLIBROOT-IGNORED: /usr/local/lib - RUN: mkdir -p %t.2/usr/lib RUN: lld -flavor darwinnew -v -syslibroot %t -syslibroot %t.2 | FileCheck %s -check-prefix CHECK-SYSLIBROOT-MATRIX -DROOT=%t @@ -37,19 +30,18 @@ CHECK-SYSLIBROOT-MATRIX: [[ROOT]]/usr/lib CHECK-SYSLIBROOT-MATRIX: [[ROOT]].2/usr/lib +RUN: lld -flavor darwinnew -v -syslibroot %t -syslibroot %t.2 -syslibroot / | FileCheck %s -check-prefix CHECK-SYSLIBROOT-IGNORED -DROOT=%t + +CHECK-SYSLIBROOT-IGNORED: Library search paths: +CHECK-SYSLIBROOT-IGNORED-NOT: [[ROOT]]/usr/lib +CHECK-SYSLIBROOT-IGNORED-NOT: [[ROOT]].2/usr/lib + RUN: mkdir -p %t/System/Library/Frameworks RUN: lld -flavor darwinnew -v -syslibroot %t | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK -DROOT=%t CHECK-SYSLIBROOT-FRAMEWORK: Framework search paths: CHECK-SYSLIBROOT-FRAMEWORK: [[ROOT]]/System/Library/Frameworks -# NOTE: the match here is fuzzy because the default search paths exist on Linux -# and macOS, but not on Windows (that is we ignore `/var/empty`). This allows -# us to run the test uniformly on all the platforms. -RUN: lld -flavor darwinnew -v -syslibroot /var/empty -syslibroot / 2>&1 | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-IGNORED - -CHECK-SYSLIBROOT-FRAMEWORK-IGNORED: /System/Library/Framework - RUN: mkdir -p %t/Library/Frameworks RUN: mkdir -p %t.2/Library/Frameworks RUN: lld -flavor darwinnew -v -syslibroot %t -syslibroot %t.2 -F /Library/Frameworks | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-MATRIX -DROOT=%t @@ -57,3 +49,9 @@ CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: Framework search paths: CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: [[ROOT]]/Library/Frameworks CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: [[ROOT]].2/Library/Frameworks + +RUN: lld -flavor darwinnew -v -syslibroot %t -syslibroot %t.2 -syslibroot / -F /Library/Frameworks | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-IGNORED -DROOT=%t + +CHECK-SYSLIBROOT-FRAMEWORK-IGNORED: Framework search paths: +CHECK-SYSLIBROOT-FRAMEWORK-IGNORED-NOT: [[ROOT]]/Library/Frameworks +CHECK-SYSLIBROOT-FRAMEWORK-IGNORED-NOT: [[ROOT]].2/Library/Frameworks