On Wed, 08 Dec 2021 at 20:11:55 +0000, peter green wrote: > The default -march value on Debian armhf is "armv7-a+fp". You should > *NOT* use "armv7-a+vfpv3" as that specifies the version of vfpv3 > with 32 double precision registers which is above the Debian baseline.
https://github.com/alexcrichton/cc-rs/commit/b2f6b146b75299c444e05bbde50d03705c7c4b6e (which I have now applied to the copy of cc-rs in mozjs78) uses "-march=armv7-a -mfpu=vfpv3-d16", which seems like a plausible encoding of the minimum spec given in https://wiki.debian.org/ArmHardFloatPort and https://wiki.debian.org/ArchitectureSpecificsMemo#Architecture_baselines (ARMv7 with Thumb-2 and VFPv3-D16). If I understand correctly, VFPv3-D16 refers to the version of vfpv3 with only 16 registers, which is exactly what our armhf baseline guarantees (and as you point out, some ARM CPUs with VFPv3 have more registers, but we require our binaries to assume those extra registers are not available). Am I getting this right? (And yes, in answer to the obvious question, it's not ideal that mozjs78 vendors lots of Rust modules, but I'm not aware of a way to un-vendor them in Mozilla's rather unique build system. Someone who knows Rust and/or mozjs better is welcome to step in any time.) smcv