On Fri, 2025-01-03 at 01:16 +0100, Jose E. Marchesi wrote: [...] > Yes, in the GCC BPF backend we are using > > use_gcc_stdint=provide > > which makes GCC to provide the version of stdint.h that assumes > freestanding ("baremetal") mode. If we changed it to use > > use_gcc_stdint=wrap > > then it would install a stdint.h that does somethins similar to what > clang does, at least in hosts providing C99 headers (note the lack of > __has_include_next): > > #ifndef _GCC_WRAP_STDINT_H > #if __STDC_HOSTED__ > # if defined __cplusplus && __cplusplus >= 201103L > # undef __STDC_LIMIT_MACROS > # define __STDC_LIMIT_MACROS > # undef __STDC_CONSTANT_MACROS > # define __STDC_CONSTANT_MACROS > # endif > #pragma GCC diagnostic push > #pragma GCC diagnostic ignored "-Wpedantic" // include_next > # include_next <stdint.h> > #pragma GCC diagnostic pop > #else > # include "stdint-gcc.h" > #endif > #define _GCC_WRAP_STDINT_H > #endif > > We could switch to "wrap" to align with clang, but in that case it would > be up to the user to provide a "host" stdint.h that contains sensible > definitions for BPF. The kernel selftests, for example, would need to > do so to avoid including /usr/include/stdint.h that more likely than not > will provide incorrect definitions for int64_t and friends... Would it be possible to push a branch that uses '=wrap' thing somewhere? So that it could be further tested to see if there are more issues with selftests.