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

Reply via email to