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.