Переглянути джерело

LibELF: Always use parent object basename for $ORIGIN processing

Using the main executable basename produces the wrong $ORIGIN processing
for libraries that are secondary dependencies of the main executable,
or dependencies of an object loaded via dlopen.
Andrew Kaster 3 роки тому
батько
коміт
72066880c6
1 змінених файлів з 1 додано та 1 видалено
  1. 1 1
      Userland/Libraries/LibELF/DynamicLinker.cpp

+ 1 - 1
Userland/Libraries/LibELF/DynamicLinker.cpp

@@ -120,7 +120,7 @@ static Optional<String> resolve_library(String const& name, DynamicObject const&
     search_paths.append("/usr/local/lib"sv);
 
     for (auto const& search_path : search_paths) {
-        LexicalPath library_path(search_path.replace("$ORIGIN"sv, LexicalPath::dirname(s_main_program_name)));
+        LexicalPath library_path(search_path.replace("$ORIGIN"sv, LexicalPath::dirname(parent_object.filename())));
         String library_name = library_path.append(name).string();
 
         if (access(library_name.characters(), F_OK) == 0)