Re: [PATCH v6 2/2] tools/nolibc: fix up size inflate regression

Zhangjin Wu
2023-08-15T16:35:46Z

> On Sun, Aug 13, 2023 at 09:39:44PM +0800, Zhangjin Wu wrote:
> > > And we're done, you can then keep the simplified __sysret() macro for all
> > > other call places.
> > >
> >
> > Now, this issue is near to the end ;-)
>
> I've now pushed the simplified fix (without changing the SET_ERRNO()
> macro, enough last minute breaking changes for now) in branch
> 20230815-for-6.6-2.
>
> The tests pass and riscv/loongarch are even very slightly smaller than
> before (~8 bytes) but again that doesn't count as it depends on how the
> compiler decides to arrange if/else branches.
>

Tested 20230815-for-6.6-2 with latest Arnd's gcc 13.2.0 (left: old, right:
new), no warning, no failure:

// run-user
$ for arch in ${ARCHS[@]}; do printf "%9s: " $arch; make run-user XARCH=$arch | grep status | tr '\n' ' '; \
size nolibc-test | tail -1 | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f2; done
i386: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 19654 > 19508
x86_64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 22337 > 22011
arm64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 26292 > 25868
arm: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 23140 > 23112
mips: 160 test(s): 157 passed, 3 skipped, 0 failed => status: warning 23164 > 22924 // mips-linux- has smaller size, here uses mips64
ppc: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 26812 > 26628
ppc64: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 27380 > 27204
ppc64le: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 28004 > 27828
riscv: 160 test(s): 158 passed, 2 skipped, 0 failed => status: warning 22062 > 21794
s390: 160 test(s): 157 passed, 3 skipped, 0 failed => status: warning 22592 > 22192

// kernel build + run
arch/board | result
------------|------------
arm/vexpress-a9 | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
arm/virt | 160 test(s): 156 passed, 4 skipped, 0 failed => status: warning.
aarch64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc/g3beige | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc/ppce500 | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc64le/pseries | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc64le/powernv | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc64/pseries | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
ppc64/powernv | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
i386/pc | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
x86_64/pc | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
mipsel/malta | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
loongarch64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
riscv64/virt | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.
s390x/s390-ccw-virtio | 160 test(s): 159 passed, 1 skipped, 0 failed => status: warning.

Thanks,
Zhangjin

> I'll let Shuah know about these late fixes.
>
> Regards,
> Willy