[Bug c++/91474] New: Internal compiler error when building mabi=32 mips64-elf cross-compiler: segfault in parallel_settings.cc
joey.dumont at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Aug 16 18:52:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91474
Bug ID: 91474
Summary: Internal compiler error when building mabi=32
mips64-elf cross-compiler: segfault in
parallel_settings.cc
Product: gcc
Version: 9.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: joey.dumont at gmail dot com
CC: joey.dumont at gmail dot com
Target Milestone: ---
Host: x86_64-pc-linux-gnu
Target: mips64-elf
Build: x86_64-pc-linux-gnu
Created attachment 46722
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46722&action=edit
Patch to enable the 32-bit ABI
Let me preface this by saying that this is my first bug report, and I could not
find information on what to submit for issues with cross-compilers. Let me know
what information you need and I'll gladly provide it.
When trying to build a gcc-9.2.0 mips64-elf cross-compiler with gcc-9.1.0, I
get an internal compiler error when trying to compile
`libstdc++-v3/src/c++98/parallel_settings.cc`:
```
libtool: compile:
/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/./gcc/xgcc
-shared-libgcc
-B/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/./gcc
-nostdinc++
-L/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/src
-L/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/src/.libs
-L/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/libsupc++/.libs
-B/usr/mips64-elf/bin/ -B/usr/mips64-elf/lib/ -isystem /usr/mips64-elf/include
-isystem /usr/mips64-elf/sys-include -mabi=32
-I/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/../libgcc
-I/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/include/mips64-elf
-I/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/include
-I/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/libsupc++
-std=gnu++98 -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-Wabi=2 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=parallel_settings.lo -g -O2 -mabi=32 -D_GLIBCXX_PARALLEL -c
/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/src/c++98/parallel_settings.cc
-o parallel_settings.o
during RTL pass: split2
/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/src/c++98/parallel_settings.cc:
In function '(static initializers for
/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/src/c++98/parallel_settings.cc)':
/home/valandil/software/n64-dev/mips64-elf-gcc/src/gcc-9.2.0/libstdc++-v3/src/c++98/parallel_settings.cc:42:1:
internal compiler error: Segmentation fault
42 | }
| ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[9]: *** [Makefile:912: parallel_settings.lo] Error 1
make[9]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/src/c++98'
make[8]: *** [Makefile:730: all-recursive] Error 1
make[8]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3/src'
make[7]: *** [Makefile:562: all-recursive] Error 1
make[7]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3'
make[6]: *** [Makefile:487: all] Error 2
make[6]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/32/libstdc++-v3'
make[5]: *** [Makefile:855: multi-do] Error 1
make[5]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/libstdc++-v3'
make[4]: *** [Makefile:823: all-multi] Error 2
make[4]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/libstdc++-v3'
make[3]: *** [Makefile:562: all-recursive] Error 1
make[3]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/libstdc++-v3'
make[2]: *** [Makefile:487: all] Error 2
make[2]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc/mips64-elf/libstdc++-v3'
make[1]: *** [Makefile:11232: all-target-libstdc++-v3] Error 2
make[1]: Leaving directory
'/home/valandil/software/n64-dev/mips64-elf-gcc/src/build-gcc'
make: *** [Makefile:951: all] Error 2
```
Here's the output of `gcc -v`:
```
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib
--libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --with-isl --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch
--disable-libssp --enable-gnu-unique-object --enable-linker-build-id
--enable-lto --enable-plugin --enable-install-libiberty
--with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib
--disable-werror --enable-checking=release --enable-default-pie
--enable-default-ssp --enable-cet=auto
Thread model: posix
gcc version 9.1.0 (GCC)
```
And here are the build options for the cross-compiler:
```
"${srcdir}"/gcc-${pkgver}/configure \
--prefix=/usr \
--target=${_target} \
--host=$CHOST \
--build=$CHOST \
--with-arch=from-abi \
--with-sysroot=/usr/${_target} \
--libdir=/usr/lib \
--libexecdir=/usr/lib \
--with-gnu-as \
--with-gnu-ld \
--with-python-dir=share/gcc-${_target} \
--with-newlib \
--without-included-gettext \
--enable-checking=release \
--enable-languages=c,c++ \
--disable-decimal-float \
--disable-gold \
--disable-libatomic \
--disable-libgcj \
--disable-libgomp \
--disable-libitm \
--disable-libquadmath \
--disable-libquadmath-support \
--disable-libsanitizer \
--disable-libssp \
--disable-libunwind-exceptions \
--disable-libvtv \
--enable-multilib \
--disable-nls \
--disable-shared \
--disable-threads \
--disable-werror \
--enable-lto \
--enable-plugin
```
where `_target=mips64-elf`.
To build this cross-compiler, I have modified gcc/config/t-elf with the
mabi32.patch (attached).
I am on Arch Linux:
```
$ uname -a
Linux terra 5.2.8-arch1-1-ARCH #1 SMP PREEMPT Fri Aug 9 21:36:07 UTC 2019
x86_64 GNU/Linux
```
More information about the Gcc-bugs
mailing list