getauxv and ARMv7 platform detection

Jeffrey Walton
Tue May 21 02:52:00 GMT 2019

Hi Everyone,

I just noticed the following code was failing on ARMv7 platforms:

// For older machines, like GCC 4.3 on ARMv6
#ifndef HWCAP_ARMv7
# define HWCAP_ARMv7 (1 << 29)

inline bool CPU_QueryARMv7()
    if (getauxval(AT_HWCAP) & HWCAP_ARMv7) != 0)
        return true;
    return false;

Looking through Torvalds GitHub [1] I don't see a reliable define for
HWCAP_ARMv7 in hwcap.h.

I know I can fallback to NEON, but that misses earlier devices that
are ARMv7 but lacks NEON.

Searching is turning up a lot of spurious noise (for Aarch64/ARMv8),
and one hit for Mozilla working around the same problem [2].

My question is, how do we use getauxval to detect ARMv7 platforms?

Thanks in advance.


More information about the Libc-help mailing list