Re: Buildworld fails with external GCC toolchain
- Reply: Yasuhiro Kimura : "Re: Buildworld fails with external GCC toolchain"
- In reply to: Yasuhiro Kimura : "Buildworld fails with external GCC toolchain"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Feb 2022 21:53:44 UTC
On 11 Feb 2022, at 21:07, Yasuhiro Kimura <yasu@freebsd.org> wrote: > > I'm tring to update devel/binutils port to 2.38. When it was updated > to 2.37.1, there was a suggestion that it should also be checked if > building base system with GCC succeeds as binutils is a part of > external GCC toolchain. So I'd like to do it with binutils 2.38 before > updating the port. And as a preparation for it, I tried building base > system with current external GCC toolchain (that is, with binutils > 2.37.1). > > At first I read following wiki pages. > > https://wiki.freebsd.org/ExternalToolchain > https://wiki.freebsd.org/ExternalGCC > > Next I took following steps. > > 1. Make clean install of 14-CURRENT amd64 with the install image of > 20220210 snapshot. > 2. Checkout latest main of src repository (d4b0fa45dc1 at that time). > 3. pkg install amd64-gcc9 > 4. cd /usr/src > 5. make -j 4 CROSS_TOOLCHAIN=amd64-gcc9 buildworld buildkernel > > Then step 5 failed as following. > > ---------------------------------------------------------------------- > --- all_subdir_rescue --- > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: nc.lo: in function `_$$hide$$ nc.lo main': > (.text.startup+0xd42): warning: warning: mktemp() possibly used unsafely; consider using mkstemp() > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libncursesw_real.a(lib_set_term.o): in function `_nc_setupscreen_sp': > /usr/src/contrib/ncurses/ncurses/base/lib_set_term.c:415: undefined reference to `_nc_set_buffer_sp' > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libncursesw_real.a(lib_tstp.o): in function `handle_SIGTSTP': > /usr/src/contrib/ncurses/ncurses/tty/lib_tstp.c:222: undefined reference to `flushinp_sp' > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libncursesw_real.a(lib_getch.o): in function `check_mouse_activity': > /usr/src/contrib/ncurses/ncurses/base/lib_getch.c:188: undefined reference to `_nc_timed_wait' > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libncursesw_real.a(lib_getstr.o): in function `wgetnstr': > /usr/src/contrib/ncurses/ncurses/base/lib_getstr.c:106: undefined reference to `erasechar_sp' > /usr/local/bin/x86_64-unknown-freebsd14.0-ld: /usr/src/contrib/ncurses/ncurses/base/lib_getstr.c:107: undefined reference to `killchar_sp' > collect2: error: ld returned 1 exit status > *** [rescue] Error code 1 > > make[5]: stopped in /usr/obj/usr/src/amd64.amd64/rescue/rescue > --- all_subdir_stand --- > > make[2]: stopped in /usr/src > --- all_subdir_share --- > > make[2]: stopped in /usr/src > --- all_subdir_rescue --- > 1 error > > make[5]: stopped in /usr/obj/usr/src/amd64.amd64/rescue/rescue > *** [rescue] Error code 2 > > make[4]: stopped in /usr/src/rescue/rescue > 1 error > > make[4]: stopped in /usr/src/rescue/rescue > > make[3]: stopped in /usr/src/rescue > > make[2]: stopped in /usr/src > --- all_subdir_lib --- > > make[2]: stopped in /usr/src > 167.49 real 492.07 user 94.42 sys > > make[1]: stopped in /usr/src > > make: stopped in /usr/src > ---------------------------------------------------------------------- > > If I check commit messages of main branch over the last few months, I > can find some commits that fix warning message displayed by GCC. So > currently external GCC toolchain seems to work fine. Then what is the > cause of my build failure? Did I do something wrong? Not really, the gcc 9 build has been broken for months, as far as I know. See also: https://ci.freebsd.org/job/FreeBSD-main-amd64-gcc9_build/ The last build(s) show a different error from yours, though: /workspace/src/tests/sys/netinet/libalias/util.c: In function 'set_udp': /workspace/src/tests/sys/netinet/libalias/util.c:112:2: error: converting a packed 'struct ip' pointer (alignment 2) to a 'uint32_t' {aka 'unsigned int'} pointer (alignment 4) may result in an unaligned pointer value [-Werror=address-of-packed-member] 112 | uint32_t *up = (void *)p; | ^~~~~~~~ In file included from /workspace/src/tests/sys/netinet/libalias/util.h:37, from /workspace/src/tests/sys/netinet/libalias/util.c:39: /workspace/src/sys/netinet/ip.h:51:8: note: defined here 51 | struct ip { | ^~ -Dimitry