diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 1a56233663..54b461226f 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -92,7 +92,7 @@ target_link_libraries(file LibGfx LibIPC LibCompress LibMain) target_link_libraries(find LibMain) target_link_libraries(flock LibMain) target_link_libraries(fortune LibMain) -target_link_libraries(functrace LibDebug LibX86) +target_link_libraries(functrace LibDebug LibX86 LibMain) target_link_libraries(gml-format LibGUI) target_link_libraries(grep LibRegex) target_link_libraries(gunzip LibCompress) diff --git a/Userland/Utilities/functrace.cpp b/Userland/Utilities/functrace.cpp index d81f3bf829..25e02a7ddc 100644 --- a/Userland/Utilities/functrace.cpp +++ b/Userland/Utilities/functrace.cpp @@ -11,12 +11,13 @@ #include #include #include +#include #include #include +#include #include #include #include -#include #include #include #include @@ -46,8 +47,8 @@ static void print_syscall(PtraceRegisters& regs, size_t depth) for (size_t i = 0; i < depth; ++i) { out(" "); } - const char* begin_color = g_should_output_color ? "\033[34;1m" : ""; - const char* end_color = g_should_output_color ? "\033[0m" : ""; + StringView begin_color = g_should_output_color ? "\033[34;1m"sv : ""sv; + StringView end_color = g_should_output_color ? "\033[0m"sv : ""sv; #if ARCH(I386) outln("=> {}SC_{}({:#x}, {:#x}, {:#x}){}", begin_color, @@ -95,22 +96,19 @@ static NonnullOwnPtr> instrument_code() return instrumented; } -int main(int argc, char** argv) +ErrorOr serenity_main(Main::Arguments arguments) { - if (pledge("stdio proc exec rpath sigaction ptrace", nullptr) < 0) { - perror("pledge"); - return 1; - } + TRY(Core::System::pledge("stdio proc exec rpath sigaction ptrace")); if (isatty(STDOUT_FILENO)) g_should_output_color = true; - const char* command = nullptr; + StringView command; Core::ArgsParser args_parser; args_parser.add_positional_argument(command, "The program to be traced, along with its arguments", "program", Core::ArgsParser::Required::Yes); - args_parser.parse(argc, argv); + args_parser.parse(arguments); auto result = Debug::DebugSession::exec_and_attach(command); if (!result) { @@ -124,7 +122,7 @@ int main(int argc, char** argv) struct sigaction sa; memset(&sa, 0, sizeof(struct sigaction)); sa.sa_handler = handle_sigint; - sigaction(SIGINT, &sa, nullptr); + TRY(Core::System::sigaction(SIGINT, &sa, nullptr)); size_t depth = 0; bool new_function = true; @@ -168,4 +166,6 @@ int main(int argc, char** argv) return Debug::DebugSession::DebugDecision::SingleStep; }); + + return 0; }