On Sat, Feb 11, 2023 at 4:19 PM Richard Henderson <
richard.henderson@linaro.org> wrote:
> On 2/10/23 13:18, Warner Losh wrote:
> > Most of the time, it's useful to make our best effort, but sometimes we
> > want to know right away when we don't implement something. First place
> > we use it is for unknown syscalls.
> >
> > Signed-off-by: Warner Losh <imp@bsdimp.com>
> > ---
> > bsd-user/freebsd/os-syscall.c | 4 ++++
> > bsd-user/main.c | 5 ++++-
> > bsd-user/qemu.h | 1 +
> > 3 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/bsd-user/freebsd/os-syscall.c
> b/bsd-user/freebsd/os-syscall.c
> > index 179a20c304b..e2b26ecb8dd 100644
> > --- a/bsd-user/freebsd/os-syscall.c
> > +++ b/bsd-user/freebsd/os-syscall.c
> > @@ -508,6 +508,10 @@ static abi_long freebsd_syscall(void *cpu_env, int
> num, abi_long arg1,
> >
> > default:
> > qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num);
> > + if (bsd_user_strict) {
> > + printf("Unimplemented system call %d\n", num);
> > + abort();
> > + }
>
> I don't like the raw printf, even if you did write to stderr.
> Perhaps just the abort, letting the error message be handled by qemu_log?
>
> > @@ -396,6 +397,8 @@ int main(int argc, char **argv)
> > trace_opt_parse(optarg);
> > } else if (!strcmp(r, "0")) {
> > argv0 = argv[optind++];
> > + } else if (!strcmp(r, "strict")) {
> > + bsd_user_strict = true;
>
> Perhaps force LOG_UNIMP? Without -D, you'll get the qemu_log above to
> stderr.
>
Given the number of other changes in the other bits, I'm going to defer
this feedback until round 3, since
the number of changes I've made for round 2 means there will almost
certainly result in a round 3...
Warner