On Wed, Jun 12, 2024 at 5:09 PM Daniel P. Berrangé <berra...@redhat.com> wrote: > This might suggest we could put a runtime feature check in main(), > print a warning and then exit(1), however, QEMU has alot of code > that is triggered from ELF constructors. If we're building the > entire of QEMU codebase with extra features enabled, I worry that > the constructors could potentially cause a illegal instruction > crash before main() runs ?
And I learnt that one can simply add -mneeded to the compiler command line to achieve that, at least on glibc systems: $ gcc f.c -mneeded -mpopcnt $ qemu-x86_64 -cpu core2duo ./a.out ./a.out: CPU ISA level is lower than required $ qemu-x86_64 ./a.out 1234 $ gcc f.c -mneeded $ qemu-x86_64 -cpu core2duo ./a.out 1234 Using "readelf -n" on the executable unveils the magic: Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x00000030 NT_GNU_PROPERTY_TYPE_0 Properties: x86 ISA needed: x86-64-baseline, x86-64-v2 x86 feature used: x86 x86 ISA used: I'm actually amazed. :) Paolo