Re: rcutorture initrd/nolibc build on ARMv8?

From: Willy Tarreau
Date: Tue Jan 19 2021 - 11:23:33 EST


Hi Paul,

On Tue, Jan 19, 2021 at 07:31:47AM -0800, Paul E. McKenney wrote:
> Hello, Willy,
>
> Some people are having trouble running rcutorture on ARMv8. They
> get things like this from the nolibc build of initrd:
>
> https://paste.debian.net/1181762/
>
> The nolibc.h file says this:
>
> /* Some archs (at least aarch64) don't expose the regular syscalls anymore by
> * default, either because they have an "_at" replacement, or because there are
> * more modern alternatives. For now we'd rather still use them.
> */
>
> Are these build failures expected behavior on ARMv8?

No, I don't think so. I'm regularly building my own init using this,
and it works on various platforms including aarch64, while it makes
use of a number of such syscalls.

>From what I'm seeing, this seems to happen each time in such a construct:

#if defined(__NR_new_name)
use __NR_new_name
#else
use __NR_old_name
#endif

with the error appearing on old_name. So I guess that we're rather facing a
case where a number of such __NR_* entries are not defined because presumably
one include file might be missing (probably from a recent change of headers
dependency).

I can't spot from the report above the original C file that was attempted
to be built, it makes me think we tried to compile directly the .h file.

Having it run through sh -x would help me try to locate the root cause or
possibly even attempt to reproduce it.

Thanks,
Willy