This bug is specific to the Gentoo ebuilds. The upstream source code produces working binaries even with ./bootstrap && CFLAGS='-march=native -O2 -pipe' && make on zen3. The breakage comes from the Gentoo ebuild overriding the PURGATORY compiler flags. Specifically, the following gcc flags (which are all set with -march=znver3) when applied to the PURGATORY cflags result in broken binaries: -mavx -mavx2 -mfma -mbmi -mbmi2 -mf16c -mmovbe One way to reproduce / verify the broken state of the package is: # CFLAGS='-O2 -pipe' ebuild /var/db/repos/gentoo/sys-apps/kexec-tools/kexec-tools-9999.ebuild clean compile # /var/tmp/portage/sys-apps/kexec-tools-9999/work/kexec-tools-9999/build/sbin/kexec -c -d -l /boot/vmlinuz-$(uname -r) --reuse-cmdline &> ~/broken # CFLAGS='-march=znver3 -O2 -pipe' ebuild /var/db/repos/gentoo/sys-apps/kexec-tools/kexec-tools-9999.ebuild clean compile # /var/tmp/portage/sys-apps/kexec-tools-9999/work/kexec-tools-9999/build/sbin/kexec -c -d -l /boot/vmlinuz-$(uname -r) --reuse-cmdline &> ~/broken # diff -u ~/working ~/broken | wc -l 644 Attempting to kexec kernels with the broken kexec tools results in a silent failure (without any kernel backtraces) and hard reset. The diff should show ~34 lines of differences (mostly randomized buffer addresses), rather than the 644 lines of differences across various elf symbols. Note that although I have used version 9999 as an example, the other ebuilds are also broken. It's just that kexec-tools-2.0.24 is also broken in a different way [1]. [1] https://lore.kernel.org/all/Zb9TtfGOtstr3aTj@MiWiFi-R3L-srv/T/