diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -91,14 +91,15 @@ auto doFind = [&] { if (config->searchDylibsFirst) { - if (std::optional path = findPathCombination( - "lib" + name, config->librarySearchPaths, {".tbd", ".dylib"})) + if (std::optional path = + findPathCombination("lib" + name, config->librarySearchPaths, + {".tbd", ".dylib", ".so"})) return path; return findPathCombination("lib" + name, config->librarySearchPaths, {".a"}); } return findPathCombination("lib" + name, config->librarySearchPaths, - {".tbd", ".dylib", ".a"}); + {".tbd", ".dylib", ".so", ".a"}); }; std::optional path = doFind(); diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp --- a/lld/MachO/InputFiles.cpp +++ b/lld/MachO/InputFiles.cpp @@ -1551,7 +1551,7 @@ return loadDylib(*dylibPath, umbrella); } } else if (std::optional dylibPath = findPathCombination( - stem, config->librarySearchPaths, {".tbd", ".dylib"})) + stem, config->librarySearchPaths, {".tbd", ".dylib", ".so"})) return loadDylib(*dylibPath, umbrella); } diff --git a/lld/test/MachO/link-search-order.s b/lld/test/MachO/link-search-order.s --- a/lld/test/MachO/link-search-order.s +++ b/lld/test/MachO/link-search-order.s @@ -58,6 +58,7 @@ # DYLIBSEARCH: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.tbd, not found # DYLIBSEARCH-NEXT: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.dylib, not found +# DYLIBSEARCH-NEXT: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.so, not found # DYLIBSEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.tbd, not found # DYLIBSEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.dylib, not found # DYLIBSEARCH: searched [[PATH]]{{[/\\]}}libhello.dylib, found @@ -69,9 +70,11 @@ # ARCHIVESEARCH: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.tbd, not found # ARCHIVESEARCH-NEXT: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.dylib, not found +# ARCHIVESEARCH-NEXT: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.so, not found # ARCHIVESEARCH-NEXT: searched {{.*}}/MacOSX.sdk/usr/lib{{[/\\]}}libhello.a, not found # ARCHIVESEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.tbd, not found # ARCHIVESEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.dylib, not found +# ARCHIVESEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.so, not found # ARCHIVESEARCH-NEXT: searched [[PATH]]A{{[/\\]}}libhello.a, not found # ARCHIVESEARCH: searched [[PATH]]{{[/\\]}}libhello.dylib, found # ARCHIVESEARCH: searched [[PATH]]A{{[/\\]}}libgoodbye.a, found