extern void tprint_iov_upto(struct tcb *, unsigned long, unsigned long, int decode_iov, unsigned long);
extern void tprint_open_modes(unsigned int);
extern const char *sprint_open_modes(unsigned int);
-extern void print_seccomp_filter(struct tcb *tcp, unsigned long);
+extern void print_seccomp_filter(struct tcb *, unsigned long);
+extern void print_seccomp_fprog(struct tcb *, unsigned long, unsigned short);
struct strace_statfs;
extern void print_struct_statfs(struct tcb *tcp, long);
return true;
}
-static void
+void
print_seccomp_fprog(struct tcb *tcp, unsigned long addr, unsigned short len)
{
- tprintf("{len=%u, filter=", len);
-
if (abbrev(tcp)) {
printaddr(addr);
} else {
print_array(tcp, addr, len, &filter, sizeof(filter),
umoven_or_printaddr, print_bpf_filter, &insns);
}
-
- tprints("}");
}
#include "seccomp_fprog.h"
{
struct seccomp_fprog fprog;
- if (fetch_seccomp_fprog(tcp, addr, &fprog))
+ if (fetch_seccomp_fprog(tcp, addr, &fprog)) {
+ tprintf("{len=%hu, filter=", fprog.len);
print_seccomp_fprog(tcp, fprog.filter, fprog.len);
+ tprints("}");
+ }
}
static void