On 2026-01-05 08:44:50+0100, Willy Tarreau wrote:
Hi Thomas,
On Sun, Jan 04, 2026 at 11:14:13PM +0100, Thomas Weißschuh wrote:
Since LLVM commit 39e30508a7f6 ("[Driver][Sparc] Default to -mcpu=v9 for 32-bit Linux/sparc64 (#109278)"), clang defaults to -mcpu=v9 for 32-bit SPARC builds. -mcpu=v9 generates instructions which are not recognized by qemu-sparc and qemu-system-sparc. Instead qemu-sparc32plus and qemu-system-sparc64 with a 64-bit kernel and CONFIG_COMPAT are needed.
Rework the test setup so that -mcpu=v9 also works correctly.
Hmmm doesn't this mean that we're now unable to emit proper sparc32 instructions with this compiler ?
That depends on the definition of "proper" sparc32 :-) Jokes aside, that compiler still supports -mcpu=v8 just fine, only the default has changed.
I don't know which CPUs the kernel still supports, but if it still supports these old SS-5, maybe we should instead pass the correct -mcpu to clang so that it emits the expected instructions, otherwise we're just hiding the regressing by upgrading the test machine beyond what the kernel supports ?
The 32-bit kernel also runs just fine on QEMU SS-5. My reasoning was more that we now test both the v8 and v9 code paths in nolibc. But in the end it doesn't really matter, as it is the same kernel interface for v8 and v9. We can also just specify -mcpu=v8. I'll do that for v2.
(...)
Thomas