On Mon, Aug 22, 2022 at 3:08 AM Thorsten Glaser <t...@debian.org> wrote: > > outlook 1017537 some armel buildds are misconfigured and lack SWP emulation > thanks > > Dixi quod… > > ># if __ARM_ARCH__ < 6 > > swp r0, r1, [r2] > ># else > > And this, after some research, is it. This is needed for armel, which > is v5. Apparently, Linux has SWP emulation for v7/v8 hosts, but at least > one buildd listed does not have this enabled, breaking the armel ABI. > > Please ensure that only hosts with working SWP emulation run armel. > > (Can I reassign this bugreport to the buildd? Does it have a virtual > package in debbugs?)
For reference, the instruction is not avaialable on Armv7 but is emulated on 32-bit kernels whenever CONFIG_SWP_EMULATE is enabled, this is defined as: config SWP_EMULATE bool "Emulate SWP/SWPB instructions" if !SMP depends on CPU_V7 default y if SMP select HAVE_PROC_CPU if PROC_FS so this is enabled on all SMP-enabled kernels but can be disabled on uniprocessor Armv7 builds, which would be broken here. On 64-bit kernels, the same option is not enabled by default in mainline kernels, so the kernel config needs to contain CONFIG_COMPAT=y, ARMV8_DEPRECATED=y, and CONFIG_SWP_EMULATION=y. This also has to be enabled at runtime using the "abi.swp=1" sysctl, see https://www.kernel.org/doc/Documentation/arm64/legacy_instructions.rst Most likely, the buildd is running a default debian kernel and has the compile-time options enabled, but has it disabled at runtime. Can you find out if /proc/sys/abi/swp exists on the system, and what its contents are? If it does not exist, fixing this requires a change to the kernel configuration, if it exists but contains '0', then running binaries with the swp instruction just requires changing the local sysctl.conf for any armel buildd.