On Fri, 21 Jan 2022, LIU Hao wrote:
Bootstrapping GCC now fails with this error:
That's strange - I
```
gcc -c -DHAVE_CONFIG_H -g -D__USE_MINGW_ANSI_STDIO=1 -I.
-I../../gcc/libiberty/../include -W -Wall -Wwrite-strings -Wc++-compat
-Wstrict-prototypes -Wshadow=local -pedantic -D_GNU_SOURCE
../../gcc/libiberty/vfork.c -o vfork.o
../../gcc/libiberty/vsnprintf.c:60:1: error: redefinition of 'vsnprintf'
60 | vsnprintf (char *s, size_t n, const char *format, va_list ap)
| ^~~~~~~~~
In file included from ../../gcc/libiberty/../include/libiberty.h:49,
from ../../gcc/libiberty/vsnprintf.c:56:
C:/MSYS2/mingw32/i686-w64-mingw32/include/stdio.h:464:5: note: previous
definition of 'vsnprintf' with type 'int(char *, size_t, const char *, char
*)' {aka 'int(char *, unsigned int, const char *, char *)'}
464 | int vsnprintf (char *__stream, size_t __n, const char *__format,
__builtin_va_list __local_argv)
| ^~~~~~~~~
make[3]: *** [Makefile:1641: vsnprintf.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory
'/d/lh_mouse/GitHub/MINGW-packages-dev/mingw-w64-gcc-git/src/build-i686-w64-mingw32/libiberty-linker-plugin'
```
Apparently the 'configure' script of libiberty thought `vsnprintf()` was not
available and decided they should provide it which conflicted with our
definition in 'stdio.h'. 'config.log' says:
```
configure:6675: checking for vsnprintf
configure:6675: gcc -o conftest.exe -g -D__USE_MINGW_ANSI_STDIO=1
-static-libstdc++ -static-libgcc -pipe
-Wl,--dynamicbase,--nxcompat,--no-seh -Wl,--large-address-aware
-Wl,--disable-dynamicbase -Wl,--stack,12582912
conftest.c >&5
conftest.c:107:6: warning: conflicting types for built-in function
'vsnprintf'; expected 'int(char *, unsigned int,
const char *, char *)' [-Wbuiltin-declaration-mismatch]
107 | char vsnprintf ();
| ^~~~~~~~~
conftest.c:95:1: note: 'vsnprintf' is declared in header '<stdio.h>'
94 | # include <limits.h>
95 | #else
C:/MSYS2/mingw32/lib/gcc/i686-w64-mingw32/11.2.1/../../../../i686-w64-mingw32/bin/ld.exe:
C:/MSYS2/mingw32/lib/gcc/i686-w64-mingw32/11.2.1/../../../../i686-w64-mingw32/lib/../lib/libmsvcrt.a(lib32_libmsvcrt_
extra_a-_vscprintf.o): in function `emu_vscprintf':
D:/lh_mouse/GitHub/MINGW-packages/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/stdio/_vscprintf.c:49:
undefined
reference to `_set_errno'
C:/MSYS2/mingw32/lib/gcc/i686-w64-mingw32/11.2.1/../../../../i686-w64-mingw32/bin/ld.exe:
D:/lh_mouse/GitHub/MINGW-packages/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/stdio/_vscprintf.c:23:
undefined
reference to `_set_errno'
collect2.exe: error: ld returned 1 exit status
configure:6675: $? = 1
```
That's strange, as _set_errno should be provided by libmingwex.a, which
should be implicitly linked in at this stage?
I tried bootstrapping a cross gcc toolchain with mingw-w64
898141aa957b99812f2f4d2cf89255798d578d54 targeting i686, with GCC 11.2.0,
and it seemed to build just fine for me.
// Martin
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public