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
```

Reply via email to