When compiling with Android bionic, the MAP_HUGE_* and SHM_HUGE_* macros are redefined because they are included from the uapi by sys/mman.h and sys/shm.h:
INFO: From Compiling common/tools/testing/selftests/mm/thuge-gen.c: common/tools/testing/selftests/mm/thuge-gen.c:32:9: warning: 'MAP_HUGE_2MB' macro redefined [-Wmacro-redefined] 32 | #define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT) | ^ external/_main~_repo_rules~prebuilt_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/linux/mman.h:38:9: note: previous definition is here 38 | #define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB | ^ common/tools/testing/selftests/mm/thuge-gen.c:33:9: warning: 'MAP_HUGE_1GB' macro redefined [-Wmacro-redefined] 33 | #define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT) | ^ external/_main~_repo_rules~prebuilt_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/linux/mman.h:44:9: note: previous definition is here
This test should probably use the uapi definitions instead of redefining them. However, glibc gets struct redefinitions when including sys/shm.h and linux/shm.h together. So, add guards for the SHM_HUGE_* macros instead.
Edward Liaw (2): selftests/mm: Include linux/mman.h selftests/mm: Guard defines from shm
tools/testing/selftests/mm/thuge-gen.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
-- 2.45.1.467.gbab1589fc0-goog