This patch aims at condensing the hardware CRC32 feature detection and making
it slightly more effective on Android.
The following changes are included:
- remove the CPUFeature enum, and get rid of one level of nesting of functions: we only used CRC32, so we just implement and use hasHardwareCRC32;
- allow for a weak getauxval: the Android toolchain is compiled at API level 14 for Android ARM, meaning no getauxval at compile time, yet we will run on API level 27+ devices. The /proc/self/auxv fallback can work but is worthless for a process like init where the proc filesystem doesn't exist yet. If a weak getauxval doesn't exist, then fallback.
- couple of extra corrections.
I think it's worth moving this weak definition into sanitizer_common/sanitizer_getauxval.h (under proper ifdefs and comments, indeed), so everyone can can benefit from it.