From affef5d1a9006c28b782e589e9425d742fe0a54c Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Thu, 13 Jan 2022 20:54:35 +0100 Subject: [PATCH] disasm: Port to LibMain --- Meta/Lagom/CMakeLists.txt | 2 +- Userland/Utilities/CMakeLists.txt | 2 +- Userland/Utilities/disasm.cpp | 18 +++++++----------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index fcc5d15a67..47f75c4f24 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -478,7 +478,7 @@ if (BUILD_LAGOM) add_executable(disasm_lagom ../../Userland/Utilities/disasm.cpp) set_target_properties(disasm_lagom PROPERTIES OUTPUT_NAME disasm) - target_link_libraries(disasm_lagom LagomCore LagomELF LagomX86) + target_link_libraries(disasm_lagom LagomCore LagomELF LagomX86 LagomMain) add_executable(gml-format_lagom ../../Userland/Utilities/gml-format.cpp) set_target_properties(gml-format_lagom PROPERTIES OUTPUT_NAME gml-format) diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 76cd44635b..c7dfca4f97 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -84,7 +84,7 @@ target_link_libraries(ddate LibMain) target_link_libraries(df LibMain) target_link_libraries(diff LibDiff LibMain) target_link_libraries(dirname LibMain) -target_link_libraries(disasm LibX86) +target_link_libraries(disasm LibX86 LibMain) target_link_libraries(dmesg LibMain) target_link_libraries(du LibMain) target_link_libraries(echo LibMain) diff --git a/Userland/Utilities/disasm.cpp b/Userland/Utilities/disasm.cpp index 8a67877daf..6b6c0b1df2 100644 --- a/Userland/Utilities/disasm.cpp +++ b/Userland/Utilities/disasm.cpp @@ -11,11 +11,12 @@ #include #include #include +#include #include #include #include -int main(int argc, char** argv) +ErrorOr serenity_main(Main::Arguments args) { const char* path = nullptr; @@ -24,15 +25,9 @@ int main(int argc, char** argv) "Disassemble an executable, and show human-readable " "assembly code for each function."); args_parser.add_positional_argument(path, "Path to i386 binary file", "path"); - args_parser.parse(argc, argv); + args_parser.parse(args); - auto file_or_error = Core::MappedFile::map(path); - if (file_or_error.is_error()) { - warnln("Could not map file: {}", file_or_error.error()); - return 1; - } - - auto& file = *file_or_error.value(); + auto file = TRY(Core::MappedFile::map(path)); struct Symbol { size_t value; @@ -46,8 +41,8 @@ int main(int argc, char** argv) }; Vector symbols; - const u8* asm_data = (const u8*)file.data(); - size_t asm_size = file.size(); + const u8* asm_data = (const u8*)file->data(); + size_t asm_size = file->size(); size_t file_offset = 0; Vector::Iterator current_symbol = symbols.begin(); OwnPtr symbol_provider; // nullptr for non-ELF disassembly. @@ -131,4 +126,5 @@ int main(int argc, char** argv) outln("{:p} {}", virtual_offset, insn.value().to_string(virtual_offset, symbol_provider)); } + return 0; }