On Wed, Jun 05, 2024 at 10:36:35PM +0000, Edward Liaw wrote: > thuge-gen.c defines SHM_HUGE_* macros that are provided by the uapi > since 4.14. These macros get redefined when compiling with Android's > bionic because its sys/shm.h will import the uapi definitions. > > However if linux/shm.h is included, with glibc, sys/shm.h will clash on > some struct definitions: > > /usr/include/linux/shm.h:26:8: error: redefinition of ‘struct shmid_ds’ > 26 | struct shmid_ds { > | ^~~~~~~~ > In file included from /usr/include/x86_64-linux-gnu/bits/shm.h:45, > from /usr/include/x86_64-linux-gnu/sys/shm.h:30: > /usr/include/x86_64-linux-gnu/bits/types/struct_shmid_ds.h:24:8: note: originally defined here > 24 | struct shmid_ds > | ^~~~~~~~ I also hit this issue while using bionic. I have a thread reporting this issue here: https://lore.kernel.org/all/Zl4LC9lTNptB2xTJ@xxxxxxxxxx/ According to Andi Kleen, glibc and others should add these defines in their headers. So it make sense to me that we would need indefs to prevent a redefine macro issue. > > For now, guard the SHM_HUGE_* defines with ifndef to prevent > redefinition warnings on Android bionic. > > Signed-off-by: Edward Liaw <edliaw@xxxxxxxxxx> > --- > tools/testing/selftests/mm/thuge-gen.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tools/testing/selftests/mm/thuge-gen.c b/tools/testing/selftests/mm/thuge-gen.c > index 034635317935..d50dc71cac32 100644 > --- a/tools/testing/selftests/mm/thuge-gen.c > +++ b/tools/testing/selftests/mm/thuge-gen.c > @@ -34,10 +34,18 @@ > #endif > > #define SHM_HUGETLB 04000 /* segment will use huge TLB pages */ > +#ifndef SHM_HUGE_SHIFT nit: I see this file uses the form "#if !defined()" above for MAP_HUGETLB. Perhaps it makes sense to use that and keep things consistent? I'm fine either way. Reviewed-by: Carlos Llamas <cmllamas@xxxxxxxxxx> > #define SHM_HUGE_SHIFT 26 > +#endif > +#ifndef SHM_HUGE_MASK > #define SHM_HUGE_MASK 0x3f > +#endif > +#ifndef SHM_HUGE_2MB > #define SHM_HUGE_2MB (21 << SHM_HUGE_SHIFT) > +#endif > +#ifndef SHM_HUGE_1GB > #define SHM_HUGE_1GB (30 << SHM_HUGE_SHIFT) > +#endif > > #define NUM_PAGESIZES 5 > #define NUM_PAGES 4 > -- > 2.45.1.467.gbab1589fc0-goog >