https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109289
Thomas Schwinge <tschwinge at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-12-01 CC| |ams at gcc dot gnu.org, | |fw at gcc dot gnu.org, | |jules at gcc dot gnu.org, | |tschwinge at gcc dot gnu.org Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #2 from Thomas Schwinge <tschwinge at gcc dot gnu.org> --- Similarly seen for GCN target, and this is now fatal after Florian's recent changes (I presume -- and I fully do support those, for avoidance of doubt): [...]/source-gcc/libgcc/emutls.c:61:7: warning: conflicting types for built-in function ‘__emutls_get_address’; expected ‘void *(void *)’ [-Wbuiltin-declaration-mismatch] 61 | void *__emutls_get_address (struct __emutls_object *); | ^~~~~~~~~~~~~~~~~~~~ [...]/source-gcc/libgcc/emutls.c:63:6: warning: conflicting types for built-in function ‘__emutls_register_common’; expected ‘void(void *, unsigned int, unsigned int, void *)’ [-Wbuiltin-declaration-mismatch] 63 | void __emutls_register_common (struct __emutls_object *, word, word, void *); | ^~~~~~~~~~~~~~~~~~~~~~~~ [...]/source-gcc/libgcc/emutls.c:140:1: warning: conflicting types for built-in function ‘__emutls_get_address’; expected ‘void *(void *)’ [-Wbuiltin-declaration-mismatch] 140 | __emutls_get_address (struct __emutls_object *obj) | ^~~~~~~~~~~~~~~~~~~~ [...]/source-gcc/libgcc/emutls.c: In function ‘__emutls_get_address’: [...]/source-gcc/libgcc/emutls.c:172:13: error: implicit declaration of function ‘calloc’ [-Wimplicit-function-declaration] 172 | arr = calloc (size + 1, sizeof (void *)); | ^~~~~~ [...]/source-gcc/libgcc/emutls.c:32:1: note: include ‘<stdlib.h>’ or provide a declaration of ‘calloc’ 31 | #include "gthr.h" +++ |+#include <stdlib.h> 32 | [...]/source-gcc/libgcc/emutls.c:172:13: warning: incompatible implicit declaration of built-in function ‘calloc’ [-Wbuiltin-declaration-mismatch] 172 | arr = calloc (size + 1, sizeof (void *)); | ^~~~~~ [...]/source-gcc/libgcc/emutls.c:172:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘calloc’ [...]/source-gcc/libgcc/emutls.c:184:13: error: implicit declaration of function ‘realloc’ [-Wimplicit-function-declaration] 184 | arr = realloc (arr, (size + 1) * sizeof (void *)); | ^~~~~~~ [...]/source-gcc/libgcc/emutls.c:184:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘realloc’ [...]/source-gcc/libgcc/emutls.c:184:13: warning: incompatible implicit declaration of built-in function ‘realloc’ [-Wbuiltin-declaration-mismatch] [...]/source-gcc/libgcc/emutls.c:184:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘realloc’ [...]/source-gcc/libgcc/emutls.c: At top level: [...]/source-gcc/libgcc/emutls.c:204:1: warning: conflicting types for built-in function ‘__emutls_register_common’; expected ‘void(void *, unsigned int, unsigned int, void *)’ [-Wbuiltin-declaration-mismatch] 204 | __emutls_register_common (struct __emutls_object *obj, | ^~~~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [[...]/source-gcc/libgcc/static-object.mk:17: emutls.o] Error 1 GCC's suggestion to "include ‘<stdlib.h>’" needs to be carefully reviewed, in case this is meant to be buildable in an environment without C library headers?