diff options
author | Elliott Hughes <enh@google.com> | 2023-08-14 14:56:29 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2023-08-14 14:56:29 -0700 |
commit | e4f0d0e83b27cbc57f01b76399a6b703b3bdc3e4 (patch) | |
tree | b9387292d36ad936b9c21b8a59d9f1639f7306ab | |
parent | d7b559efc1303dc400cdfd64c79d252ba3825131 (diff) | |
download | strace-e4f0d0e83b27cbc57f01b76399a6b703b3bdc3e4.tar.gz |
Trivial decode of __riscv_hwprobe().
This doesn't bother to decode the array of probes, but does at least
show the syscall and the count arguments are readable even if the
address arguments aren't.
Test: strace -f /data/nativetest64/bionic-unit-tests/bionic-unit-tests
Change-Id: Id5bdb4ed8b2491c6ad71a7fdf14d6709dccc6646
-rw-r--r-- | linux/riscv/syscallent.h | 2 | ||||
-rw-r--r-- | riscv.c | 17 | ||||
-rw-r--r-- | sen.h | 1 | ||||
-rw-r--r-- | sys_func.h | 1 |
4 files changed, 21 insertions, 0 deletions
diff --git a/linux/riscv/syscallent.h b/linux/riscv/syscallent.h index 3dfed89e..0b5960a9 100644 --- a/linux/riscv/syscallent.h +++ b/linux/riscv/syscallent.h @@ -1,4 +1,6 @@ #include "64/syscallent.h" +/* #define __NR_riscv_hwprobe (__NR_arch_specific_syscall + 14) */ +[258] = { 5, 0, SEN(riscv_hwprobe), "riscv_hwprobe" }, /* #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15) */ [259] = { 3, TM, SEN(riscv_flush_icache), "riscv_flush_icache" }, @@ -50,4 +50,21 @@ SYS_FUNC(riscv_flush_icache) return RVAL_DECODED; } +SYS_FUNC(riscv_hwprobe) +{ + /* uintptr_t probes */ + printaddr(tcp->u_arg[0]); + + /* size_t probe_count, size_t cpu_count */ + tprintf(", %lu, %lu, ", tcp->u_arg[1], tcp->u_arg[2]); + + /* uintptr_t pcus */ + printaddr(tcp->u_arg[3]); + + /* unsigned flags */ + tprintf(", %#lx", tcp->u_arg[4]); + + return RVAL_DECODED; +} + #endif /* RISCV */ @@ -273,6 +273,7 @@ SEN_renameat2, SEN_request_key, SEN_restart_syscall, SEN_riscv_flush_icache, +SEN_riscv_hwprobe, SEN_rmdir, SEN_rseq, SEN_rt_sigaction, @@ -208,6 +208,7 @@ extern SYS_FUNC(renameat2); extern SYS_FUNC(request_key); extern SYS_FUNC(restart_syscall); extern SYS_FUNC(riscv_flush_icache); +extern SYS_FUNC(riscv_hwprobe); extern SYS_FUNC(rt_sigaction); extern SYS_FUNC(rt_sigpending); extern SYS_FUNC(rt_sigprocmask); |