Skip to content

stddef.h: add support for musl typedef macro guards

The stddef.h header checks/sets various hardcoded toolchain/os specific macro guards to prevent redefining types such as ptrdiff_t, wchar_t, or size_t. However, without this patch, the file does not check/set the typedef macro guards for musl libc. This causes types such as size_t to be defined twice for files which include both musl's stddef.h as well as GCC's ginclude/stddef.h. This is, for example, the case for libgo/sysinfo.c. If libgo/sysinfo.c has multiple typedefs for size_t this confuses -fdump-go-spec and causes size_t not to be included in the generated type definitions thereby causing a gcc-go compilation failure on musl with the following error message:

sysinfo.go:7765:13: error: use of undefined type '_size_t'
 7765 | type Size_t _size_t
      |             ^
libcall_posix.go:49:35: error: non-integer len argument in make
   49 |                 b := make([]byte, len)
      |

This commit fixes this issue by ensuring that ptrdiff_t, wchar_t, and size_t are only defined once in the pre-processed libgo/sysinfo.c file by enhancing gcc/ginclude/stddef.h with musl-specific typedef macro guards.

Merge request reports