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?