PID: 0.119 other: 0.094 permissions: 0.084 semantic: 0.075 performance: 0.073 graphic: 0.070 debug: 0.070 device: 0.064 files: 0.063 KVM: 0.061 vnc: 0.060 boot: 0.060 socket: 0.058 network: 0.049 files: 0.266 semantic: 0.124 debug: 0.110 PID: 0.090 performance: 0.066 device: 0.065 other: 0.055 boot: 0.053 permissions: 0.046 socket: 0.033 graphic: 0.027 network: 0.026 vnc: 0.021 KVM: 0.017 QEMU-user doesn't report HWCAP2_MTE Reproducible on ffa090bc56e73e287a63261e70ac02c0970be61a Host Debian 5.10.24 x86_64 GNU Configured with "configure --disable-system --enable-linux-user --static" This one works and prints "OK" as expected: clang tests/tcg/aarch64/mte-3.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out && echo OK This one fails and print "0": cat mytest.c #include #include #ifndef HWCAP2_MTE #define HWCAP2_MTE (1 << 18) #endif int main(int ac, char **av) { printf("%d\n", (int)(getauxval(AT_HWCAP2) & HWCAP2_MTE)); } clang mytest.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out Actually if we make it like this: #include #include int main(int ac, char **av) { for (int i = 0; i < 32; ++i) if ((int)(getauxval(AT_HWCAP2) & (1 << i))) printf("%d\n", i); } clang mytest.c -target aarch64-linux-gnu -fsanitize=memtag -march=armv8+memtag qemu-aarch64 --cpu max -L /usr/aarch64-linux-gnu ./a.out I see only: HWCAP_FP HWCAP_CRC32 HWCAP_ATOMICS So no HWCAP2_BTI as well. Sorry, 0 7 8 should be "HWCAP2_DCPODP HWCAP2_FLAGM2 HWCAP2_FRINT" Yep, there's a whole bunch that have been missed. https://