diff options
author | Gunnar Beutner <gunnar@beutner.name> | 2021-04-19 11:37:20 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-04-19 12:00:40 +0200 |
commit | 97d7450571caaec13c18a57da38f5b8c2eb24c09 (patch) | |
tree | d341829c6856a56953560e59e9cc926652912a85 | |
parent | 55914841b7712c7721eee497986a086fd109259f (diff) | |
download | serenity-97d7450571caaec13c18a57da38f5b8c2eb24c09.zip |
LibELF: Remove VERIFY() calls and let control flow return to the caller
This way we get better error messages for unresolved symbols because
the caller logs the file and symbol names.
-rw-r--r-- | Userland/Libraries/LibELF/DynamicLoader.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Userland/Libraries/LibELF/DynamicLoader.cpp b/Userland/Libraries/LibELF/DynamicLoader.cpp index cfc6e124b8..376d497e0c 100644 --- a/Userland/Libraries/LibELF/DynamicLoader.cpp +++ b/Userland/Libraries/LibELF/DynamicLoader.cpp @@ -444,7 +444,7 @@ DynamicLoader::RelocationResult DynamicLoader::do_relocation(size_t total_tls_si if (symbol.bind() == STB_WEAK) return RelocationResult::ResolveLater; dbgln("ERROR: symbol not found: {}.", symbol.name()); - VERIFY_NOT_REACHED(); + return RelocationResult::Failed; } auto symbol_address = res.value().address; *patch_ptr += symbol_address.get(); @@ -453,7 +453,8 @@ DynamicLoader::RelocationResult DynamicLoader::do_relocation(size_t total_tls_si case R_386_PC32: { auto symbol = relocation.symbol(); auto result = lookup_symbol(symbol); - VERIFY(result.has_value()); + if (!result.has_value()) + return RelocationResult::Failed; auto relative_offset = result.value().address - m_dynamic_object->base_address().offset(relocation.offset()); *patch_ptr += relative_offset.get(); break; |