summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibELF/DynamicLinker.cpp
diff options
context:
space:
mode:
authorTim Schumacher <timschumi@gmx.de>2022-04-22 13:34:43 +0200
committerLinus Groh <mail@linusgroh.de>2022-05-07 20:02:00 +0200
commit89da0f2da526d027d8daf2f155f748683a85ef07 (patch)
tree655f83debc73350d4877ea2fcda5da88848c402e /Userland/Libraries/LibELF/DynamicLinker.cpp
parent2b7b7f281697dac93fac921c128ccccee9a1dd96 (diff)
downloadserenity-89da0f2da526d027d8daf2f155f748683a85ef07.zip
LibELF: Name library maps with the full file path
Diffstat (limited to 'Userland/Libraries/LibELF/DynamicLinker.cpp')
-rw-r--r--Userland/Libraries/LibELF/DynamicLinker.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/Userland/Libraries/LibELF/DynamicLinker.cpp b/Userland/Libraries/LibELF/DynamicLinker.cpp
index 79f7fc5aff..0c2ff31fa1 100644
--- a/Userland/Libraries/LibELF/DynamicLinker.cpp
+++ b/Userland/Libraries/LibELF/DynamicLinker.cpp
@@ -84,9 +84,9 @@ static String get_library_name(String path)
return LexicalPath::basename(move(path));
}
-static Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> map_library(String const& filename, int fd)
+static Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> map_library(String const& filename, int fd, String const& filepath)
{
- auto result = ELF::DynamicLoader::try_create(fd, filename);
+ auto result = ELF::DynamicLoader::try_create(fd, filename, filepath);
if (result.is_error()) {
return result;
}
@@ -136,7 +136,7 @@ static Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> map_library(String c
int fd = open(name.characters(), O_RDONLY);
if (fd < 0)
return DlErrorMessage { String::formatted("Could not open shared library: {}", name) };
- return map_library(name, fd);
+ return map_library(name, fd, name);
}
auto resolved_library_name = resolve_library(name, parent_object);
@@ -147,7 +147,7 @@ static Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> map_library(String c
if (fd < 0)
return DlErrorMessage { String::formatted("Could not open resolved shared library '{}': {}", resolved_library_name.value(), strerror(errno)) };
- return map_library(name, fd);
+ return map_library(name, fd, resolved_library_name.value());
}
static Vector<String> get_dependencies(String const& name)
@@ -559,7 +559,7 @@ void ELF::DynamicLinker::linker_main(String&& main_program_name, int main_progra
// NOTE: We always map the main library first, since it may require
// placement at a specific address.
- auto result1 = map_library(main_program_name, main_program_fd);
+ auto result1 = map_library(main_program_name, main_program_fd, main_program_name);
if (result1.is_error()) {
warnln("{}", result1.error().text);
fflush(stderr);