diff options
author | Tim Schumacher <timschumi@gmx.de> | 2022-10-28 17:46:20 +0200 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2022-10-31 19:23:02 +0000 |
commit | e7d0fb50a1478d9ce6d3acca411def9f755c4819 (patch) | |
tree | b69fec77f1d7227a7df28c65a99d25f77bfbf2fa /Userland/Libraries/LibELF/DynamicLinker.cpp | |
parent | 31643c4ee3dd8c8e9c74247f0db353051c1bec3f (diff) | |
download | serenity-e7d0fb50a1478d9ce6d3acca411def9f755c4819.zip |
LibELF: Use a bit of `TRY` in `DynamicLinker`
`TRY` also works for `Result<>`. Who knew?
Diffstat (limited to 'Userland/Libraries/LibELF/DynamicLinker.cpp')
-rw-r--r-- | Userland/Libraries/LibELF/DynamicLinker.cpp | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/Userland/Libraries/LibELF/DynamicLinker.cpp b/Userland/Libraries/LibELF/DynamicLinker.cpp index 8fd45a3905..c74e6954d3 100644 --- a/Userland/Libraries/LibELF/DynamicLinker.cpp +++ b/Userland/Libraries/LibELF/DynamicLinker.cpp @@ -89,12 +89,7 @@ static String get_library_name(String path) static Result<NonnullRefPtr<DynamicLoader>, DlErrorMessage> map_library(String const& filename, int fd, String const& filepath) { - auto result = ELF::DynamicLoader::try_create(fd, filepath); - if (result.is_error()) { - return result; - } - - auto& loader = result.value(); + auto loader = TRY(ELF::DynamicLoader::try_create(fd, filepath)); s_loaders.set(get_library_name(filename), *loader); @@ -183,14 +178,8 @@ static Result<void, DlErrorMessage> map_dependencies(String const& name) String library_name = get_library_name(needed_name); if (!s_loaders.contains(library_name) && !s_global_objects.contains(library_name)) { - auto result1 = resolve_and_map_library(needed_name, parent_object); - if (result1.is_error()) { - return result1.error(); - } - auto result2 = map_dependencies(library_name); - if (result2.is_error()) { - return result2.error(); - } + auto result1 = TRY(resolve_and_map_library(needed_name, parent_object)); + TRY(map_dependencies(library_name)); } } dbgln_if(DYNAMIC_LOAD_DEBUG, "mapped dependencies for {}", name); @@ -476,24 +465,16 @@ static Result<void*, DlErrorMessage> __dlopen(char const* filename, int flags) auto const& parent_object = **s_global_objects.get(get_library_name(s_main_program_path)); - auto result1 = resolve_and_map_library(filename, parent_object); - if (result1.is_error()) { - return result1.error(); - } + auto result1 = TRY(resolve_and_map_library(filename, parent_object)); - if (auto error = verify_tls_for_dlopen(result1.value()); error.has_value()) + if (auto error = verify_tls_for_dlopen(result1); error.has_value()) return error.value(); - auto result2 = map_dependencies(library_name); - if (result2.is_error()) { - return result2.error(); - } + TRY(map_dependencies(library_name)); - auto result = link_main_library(library_name, flags); - if (result.is_error()) - return result.error(); + TRY(link_main_library(library_name, flags)); - s_total_tls_size += result1.value()->tls_size_of_current_object() + result1.value()->tls_alignment_of_current_object(); + s_total_tls_size += result1->tls_size_of_current_object() + result1->tls_alignment_of_current_object(); auto object = s_global_objects.get(library_name); if (!object.has_value()) |