[PATCH] stddef.h: add support for musl typedef macro guards
authorSören Tempel <soeren@soeren-tempel.net>
Tue, 14 Dec 2021 23:07:47 +0000 (18:07 -0500)
committerJeff Law <jeffreyalaw@gmail.com>
Tue, 14 Dec 2021 23:08:50 +0000 (18:08 -0500)
commit85a438fc78dd12249ca854a3e5c577fefeb1a5cd
tree2023203989d92649f05d0de354a2b34b4f7c72b7
parenta888259a71fbbb7f14923751251e056829d76342
[PATCH] 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 stdlib.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 Alpine Linux Edge (which uses musl libc) with the following error:

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.

gcc/ChangeLog:

* ginclude/stddef.h (__DEFINED_ptrdiff_t): Add support for musl
libc typedef macro guard.
(__DEFINED_size_t): Ditto.
(__DEFINED_wchar_t): Ditto.
gcc/ginclude/stddef.h