1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 09:24:57 +00:00

strace: Add support for printing the fourth syscall argument

This commit is contained in:
Idan Horowitz 2024-03-01 21:24:28 +02:00 committed by Andreas Kling
parent beca73e0fd
commit 8c562a764d

View file

@ -711,7 +711,7 @@ static void format_kill(FormattedSyscallBuilder& builder, pid_t pid_or_pgid, int
builder.add_argument(signal);
}
static ErrorOr<void> format_syscall(FormattedSyscallBuilder& builder, Syscall::Function syscall_function, syscall_arg_t arg1, syscall_arg_t arg2, syscall_arg_t arg3, syscall_arg_t res)
static ErrorOr<void> format_syscall(FormattedSyscallBuilder& builder, Syscall::Function syscall_function, syscall_arg_t arg1, syscall_arg_t arg2, syscall_arg_t arg3, syscall_arg_t arg4, syscall_arg_t res)
{
enum ResultType {
Int,
@ -810,7 +810,7 @@ static ErrorOr<void> format_syscall(FormattedSyscallBuilder& builder, Syscall::F
case SC_gettid:
break;
default:
builder.add_arguments((void*)arg1, (void*)arg2, (void*)arg3);
builder.add_arguments((void*)arg1, (void*)arg2, (void*)arg3, (void*)arg4);
result_type = VoidP;
}
@ -914,17 +914,20 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
syscall_arg_t arg1 = regs.rdx;
syscall_arg_t arg2 = regs.rdi;
syscall_arg_t arg3 = regs.rbx;
syscall_arg_t arg4 = regs.rsi;
#elif ARCH(AARCH64)
syscall_arg_t syscall_index = 0; // FIXME
syscall_arg_t arg1 = 0; // FIXME
syscall_arg_t arg2 = 0; // FIXME
syscall_arg_t arg3 = 0; // FIXME
syscall_arg_t arg4 = 0; // FIXME
TODO_AARCH64();
#elif ARCH(RISCV64)
syscall_arg_t syscall_index = 0; // FIXME
syscall_arg_t arg1 = 0; // FIXME
syscall_arg_t arg2 = 0; // FIXME
syscall_arg_t arg3 = 0; // FIXME
syscall_arg_t arg4 = 0; // FIXME
TODO_RISCV64();
#else
# error Unknown architecture
@ -958,7 +961,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
continue;
FormattedSyscallBuilder builder(syscall_name);
TRY(format_syscall(builder, syscall_function, arg1, arg2, arg3, res));
TRY(format_syscall(builder, syscall_function, arg1, arg2, arg3, arg4, res));
TRY(trace_file->write_until_depleted(builder.string_view().bytes()));
}