On Sun, 26 Dec 2021, 23:01 Fiodar Stryzhnoiu via Gcc-help, < gcc-help@xxxxxxxxxxx> wrote: > I build baremetal crosscompiler for Symbian. That means no libc used in > any way. For Symbian libc is usual library. It has two libc ports for now. > > Here build config: > export TARGET=arm-none-symbianelf > # Installation folder > export GCCC=gcc-11.2.0 > > # needed enviroment-free statically linked GCC > ICONV=--with-libiconv-prefix=/usr/local > > export PREFIX=/usr/local/$GCCC > export PATH=$PATH:$PREFIX/bin > unset CFLAGS > export CFLAGS+="-pipe -Wl,-Bstatic" > MAKEJOBS=-j"${NUMBER_OF_PROCESSORS}" > #set SHELL=cmd.exe allow parallel build on windows > set SHELL=cmd.exe > > cd build-gcc > > ../$GCCC/./configure --target=$TARGET --prefix=$PREFIX --without-headers > \ > --enable-languages="c,c++,lto" --enable-poison-system-directories \ > --enable-lto --with-newlib --enable-long-long $ICONV \ > --with-dwarf2 --enable-interwork --enable-tls --enable-multilib \ > --disable-hosted-libstdcxx --disable-libstdcxx-pch \ > --disable-option-checking --disable-threads --disable-nls \ > --disable-win32-registry --disable-libssp --disable-shared \ > --enable-wchar_t --enable-extra-sgxxlite-multilibs --enable-c99 \ > --with-static-standard-libraries > make $MAKEJOBS -k 2> make-gcc.log > make -k install-strip 2> install-gcc.log > > Here full list warnings and error while build GCC for Symbian: > > 1. configure: WARNING: using in-tree isl, disabling version check(long > ago, maybe even 5.4.0) > This is not a problem. It's just telling you that it isn't doing a version check. If you're using a suitable version of isl, there is no problem. Using isl is completely optional anyway, you can build GCC without it. > 2. After several minutes build hang if "make -jX" used(long ago, maybe > even 5.4.0). One make.exe uses cpu other don't. Build continues immediatly > if right make killed. Windows itself response ok. Log before hang: > This is unlikely to be a problem with GCC, it's more likely to be a bug in Make on your OS. If it's a GCC process (or one of it's scripts like fixincludes) which hangs then that would be a GCC problem. 3. Many warnings for every file: > ../../gcc-11.2.0/./gcc/mem-stats.h:215:72: warning: ISO C++11 does not > support the 'I64' ms_printf length modifier [-Wformat=] > get_percent (m_times, total.m_times), loc->m_ggc ? "ggc" : "heap"); > > ../../gcc-11.2.0/./gcc/pretty-print.h: In function 'void > pp_wide_integer(pretty_printer*, long long int)': > ../../gcc-11.2.0/./gcc/pretty-print.h:329:60: warning: ISO C++11 does not > support the 'I64' ms_printf length modifier [-Wformat=] > sprintf (pp_buffer (PP)->digit_buffer, FORMAT, SCALAR); \ > > ../../gcc-11.2.0/./gcc/alloc-pool.h:76:31: warning: ISO C++11 does not > support the 'I64' ms_printf length modifier [-Wformat=] > > ../../gcc-11.2.0/./gcc/bitmap.h:252:34: warning: ISO C++11 does not > support the 'I64' ms_printf length modifier [-Wformat=] > > ../../gcc-11.2.0/./gcc/lto-streamer.c:179:42: warning: ISO C++11 does not > support the 'I64' ms_printf length modifier [-Wformat=] > You can ignore those. 4. got build-gcc\mpfr\src\.libs\mpfr.a but has in logs: > configure:14288: error: possibly undefined macro: AX_PTHREAD > If this token and others are legitimate, please use m4_pattern_allow. > See the Autoconf documentation. > make[2]: *** [../../gcc-11.2.0/./mpfr/configure] Error 1 > make[2]: Failed to remake makefile `Makefile'. > libtool: warning: undefined symbols not allowed in i686-pc-mingw32 shared > libraries; building static only > make[1]: *** [all-mpfr] Error 2 > make[1]: Target `all-host' not remade because of errors. > make[1]: Target `all-target' not remade because of errors. > make: *** [all] Error 2 > > 5. Another hang in libgcc if "make -jX": > [...] 6. Bunch warnings and errors: > /bin/install: cannot stat `crtfastmath.o': No such file or directory > configure: WARNING: No native atomic operations are provided for this > platform. > configure: WARNING: They cannot be faked when thread support is disabled. > configure: WARNING: Thread-safety of certain classes is not guaranteed. > configure: WARNING: stdbool.h: present but cannot be compiled > configure: WARNING: stdbool.h: check for missing prerequisite headers? > configure: WARNING: stdbool.h: see the Autoconf documentation > configure: WARNING: stdbool.h: section "Present But Cannot Be Compiled" > configure: WARNING: stdbool.h: proceeding with the compiler's result > configure: WARNING: stdalign.h: present but cannot be compiled > configure: WARNING: stdalign.h: check for missing prerequisite headers? > configure: WARNING: stdalign.h: see the Autoconf documentation > configure: WARNING: stdalign.h: section "Present But Cannot Be > Compiled" > configure: WARNING: stdalign.h: proceeding with the compiler's result > configure: error: computing EOF failed > make[1]: *** [configure-target-libstdc++-v3] Error 1 > make[1]: Target `all-target' not remade because of errors. > make: *** [all] Error 2 > > 7. Errors for computing EOF, SEEK_CUR, and SEEK_END: > checking for the value of EOF... configure: error: computing EOF failed > make: *** [configure-target-libstdc++-v3] Error 1 > Why they needed in bare metal compiler? > You're doing a 3-stage bootstrap, so GCC needs a hosted libstdc++ to build itself. I think only the final stage will be freestanding. Try --disable-bootstrap to avoid that.