Bug 43995 - internal compiler error: Segmentation fault on Mips64 crossbuild of ext2progs
Summary: internal compiler error: Segmentation fault on Mips64 crossbuild of ext2progs
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.5.1
: P3 normal
Target Milestone: ---
Assignee: Richard Sandiford
URL:
Keywords:
: 44944 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-05-05 20:06 UTC by Jan Rovins
Modified: 2011-05-29 18:04 UTC (History)
5 users (show)

See Also:
Host: mips64-t2-linux-gnu
Target: mips64-t2-linux-gnu
Build: i686-nocross-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2011-05-28 11:35:13


Attachments
The .i file (28.31 KB, text/plain)
2010-05-05 20:11 UTC, Jan Rovins
Details
crc32 build output (verbose) (3.81 KB, text/plain)
2010-05-05 20:30 UTC, Jan Rovins
Details
recovery.i file (32.25 KB, text/plain)
2010-05-05 20:58 UTC, Jan Rovins
Details
recovery.i file (openwrt) (26.35 KB, text/plain)
2010-07-14 08:40 UTC, gnuzip
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Rovins 2010-05-05 20:06:39 UTC
This happens while building under the T2 SDE environment, which is a framework for cross building an entire Linux distribution. GCC 4.43 Builds this OK, switching to GCC 4.5 failes while building the e2fsprogs project.

I tried this with gcc 4.5.0, and the 4.5.1 latest snapshot

The build host is Ubuntu 9.10

The T2 cross compiler info is:

./TOOLCHAIN/tools.cross/crosscc/mips64-t2-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=./TOOLCHAIN/tools.cross/crosscc/mips64-t2-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/crosscc/../libexec/gcc/mips64-t2-linux-gnu/4.5.1/lto-wrapper
Target: mips64-t2-linux-gnu
Configured with: ../configure --prefix=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr --bindir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/crosscc --sbindir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/sbin --libdir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/lib --datadir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/share --includedir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/include --infodir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/info --mandir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/usr/man --sysconfdir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/etc --localstatedir=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross/var --disable-debug --with-libpam --with-pam --enable-libpam --enable-pam --with-mpfr=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross --with-mpfr-lib=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross//usr/lib --with-ppl=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross --with-cloog=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross --with-gmp=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux/TOOLCHAIN/tools.cross --target=mips64-t2-linux-gnu --build=i686-nocross-linux-gnu --host=i686-nocross-linux-gnu --target=mips64-t2-linux-gnu --with-arch=octeon --with-arch=octeon --enable-__cxa_atexit --disable-checking --disable-bootstrap --disable-libstdcxx-pch --disable-multilib --with-sysroot=/opt/T2/t2-trunk/build/GW-Octeon-N32-8.0-trunk-generic-mips64-EB-octeon-cross-linux --program-prefix=mips64-t2-linux-gnu- --disable-cpp --disable-shared --disable-libssp --disable-libgomp --enable-languages=c,c++ --disable-libmudflap
Thread model: posix
gcc version 4.5.1 20100429 (prerelease) (GCC)

--------------------------------------------------------
Error:

        GEN32TABLE crc32table.h
        CC crc32.c
mips64-t2-linux-gnu-gcc: warning: -pipe ignored because -save-temps specified
recovery.c: In function 'do_one_pass':
recovery.c:713:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [recovery.o] Error 1
make[2]: Leaving directory `/opt/T2/t2-trunk/src.e2fsprogs.GW-Octeon-N32.20100505.150534.13957.ubuntu1/e2fsprogs-1.41.11/e2fsck'
make[1]: *** [all-progs-recursive] Error 1
make[1]: Leaving directory `/opt/T2/t2-trunk/src.e2fsprogs.GW-Octeon-N32.20100505.150534.13957.ubuntu1/e2fsprogs-1.41.11'
make: *** [all] Error 2
Due to previous errors, no 1-e2fsprogs.log file!

------------------------------------------------------------------

I don't see a way to attach the crc32.i file from this screen, I will see if I can do it later.
Comment 1 Jan Rovins 2010-05-05 20:11:58 UTC
Created attachment 20568 [details]
The .i file
Comment 2 Andrew Pinski 2010-05-05 20:15:55 UTC
Can you provide the full command line to compile crc32.c ?
Comment 3 Jan Rovins 2010-05-05 20:30:49 UTC
Created attachment 20569 [details]
crc32 build output (verbose)
Comment 4 Jan Rovins 2010-05-05 20:53:24 UTC
That last attachment with the build command was a mess, I re ran the build without the -v for gcc, but added a V=1 to the makefile, and got something a little cleaner:
----------------------------------------------------------------------------
mips64-t2-linux-gnu-gcc -c -I../lib -I../lib  -DLOCALEDIR=\"/usr/share/locale\" -DROOT_SYSCONFDIR=\"/etc\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DHAVE_DLOPEN=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DENABLE_HTREE=1 -DCONFIG_TESTIO_DEBUG=1 -DTLS=__thread -DPACKAGE=\"e2fsprogs\" -DVERSION=\"0.14.1\" -DHAVE_LONG_LONG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_WCHAR_T=1 -DHAVE_WINT_T=1 -DHAVE_INTTYPES_H_WITH_UINTMAX=1 -DHAVE_STDINT_H_WITH_UINTMAX=1 -DHAVE_INTMAX_T=1 -DHAVE_POSIX_PRINTF=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DINTDIV0_RAISES_SIGFPE=0 -DHAVE_UNSIGNED_LONG_LONG=1 -DHAVE_UINTMAX_T=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDINT_H=1 -DHAVE_ARGZ_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_STDDEF_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ASPRINTF=1 -DHAVE_FWPRINTF=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETUID=1 -DHAVE_MEMPCPY=1 -DHAVE_MUNMAP=1 -DHAVE_PUTENV=1 -DHAVE_SETENV=1 -DHAVE_SETLOCALE=1 -DHAVE_SNPRINTF=1 -DHAVE_STPCPY=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRTOUL=1 -DHAVE_TSEARCH=1 -DHAVE_WCSLEN=1 -DHAVE___ARGZ_COUNT=1 -DHAVE___ARGZ_STRINGIFY=1 -DHAVE___ARGZ_NEXT=1 -DHAVE___FSETLOCKING=1 -DHAVE_DECL__SNPRINTF=0 -DHAVE_DECL__SNWPRINTF=0 -DHAVE_DECL_FEOF_UNLOCKED=1 -DHAVE_DECL_FGETS_UNLOCKED=0 -DHAVE_DECL_GETC_UNLOCKED=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_LANGINFO_CODESET=1 -DHAVE_LC_MESSAGES=1 -DENABLE_NLS=1 -DHAVE_GETTEXT=1 -DHAVE_DCGETTEXT=1 -DHAVE_DIRENT_H=1 -DHAVE_ERRNO_H=1 -DHAVE_GETOPT_H=1 -DHAVE_MALLOC_H=1 -DHAVE_MNTENT_H=1 -DHAVE_PATHS_H=1 -DHAVE_SEMAPHORE_H=1 -DHAVE_SETJMP_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_STDARG_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_TERMIO_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UTIME_H=1 -DHAVE_LINUX_FD_H=1 -DHAVE_LINUX_MAJOR_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_PRCTL_H=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_SYSCALL_H=1 -DHAVE_SYS_SYSMACROS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_MOUNT_H=1 -DHAVE_NET_IF_H=1 -DHAVE_VPRINTF=1 -DHAVE_RECLEN_DIRENT=1 -DHAVE_TYPE_SSIZE_T=1 -DHAVE_LSEEK64_PROTOTYPE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DWORDS_BIGENDIAN=1 -DHAVE_INTTYPES_H=1 -DHAVE_INTPTR_T=1 -DHAVE_GETRUSAGE=1 -DHAVE_LLSEEK=1 -DHAVE_LSEEK64=1 -DHAVE_OPEN64=1 -DHAVE_FSTAT64=1 -DHAVE_FTRUNCATE64=1 -DHAVE_STRTOULL=1 -DHAVE_STRCASECMP=1 -DHAVE_SRANDOM=1 -DHAVE_JRAND48=1 -DHAVE_FCHOWN=1 -DHAVE_MALLINFO=1 -DHAVE_FDATASYNC=1 -DHAVE_STRNLEN=1 -DHAVE_STRPTIME=1 -DHAVE_STRDUP=1 -DHAVE_SYSCONF=1 -DHAVE_PATHCONF=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_MEMALIGN=1 -DHAVE_VALLOC=1 -DHAVE___SECURE_GETENV=1 -DHAVE_PRCTL=1 -DHAVE_MMAP=1 -DHAVE_UTIME=1 -DHAVE_SETRESUID=1 -DHAVE_SETRESGID=1 -DHAVE_USLEEP=1 -DHAVE_NANOSLEEP=1 -DHAVE_GETDTABLESIZE=1 -DHAVE_GETRLIMIT=1 -DHAVE_BLKID_PROBE_GET_TOPOLOGY=1 -DHAVE_SEM_INIT=1 -DHAVE_EXT2_IOCTLS=1  -g -O2 -DRESOURCE_TRACK -I.    crc32.c -o crc32.o
mips64-t2-linux-gnu-gcc: warning: -pipe ignored because -save-temps specified
mips64-t2-linux-gnu-gcc: warning: -pipe ignored because -save-temps specified
recovery.c: In function 'do_one_pass':
recovery.c:713:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [recovery.o] Error 1
make[2]: Leaving directory `/opt/T2/t2-trunk/src.e2fsprogs.GW-Octeon-N32.20100505.164533.4511.ubuntu1/e2fsprogs-1.41.11/e2fsck'
make[1]: *** [all-progs-recursive] Error 1
make[1]: Leaving directory `/opt/T2/t2-trunk/src.e2fsprogs.GW-Octeon-N32.20100505.164533.4511.ubuntu1/e2fsprogs-1.41.11'
make: *** [all] Error 2
----------------------------------------------------------------------------
Comment 5 Andrew Pinski 2010-05-05 20:54:59 UTC
Can you attach recovery.i ?
Comment 6 Jan Rovins 2010-05-05 20:58:31 UTC
Created attachment 20570 [details]
recovery.i file
Comment 7 gnuzip 2010-07-14 08:39:49 UTC
I can confirm similar problem under openwrt buildroot environment (trunk r22177) with gcc 4.5.0. The build host is Debian testing, 2.6.32-trunk-686.

reproduced with:

staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/usr/bin/mips-openwrt-linux-uclibc-gcc -c -O2 -mips32r2 -mtune=mips32r2 -fpic recovery.i -v
Using built-in specs.
COLLECT_GCC=/home/w/src/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/usr/bin/mips-openwrt-linux-uclibc-gcc
COLLECT_LTO_WRAPPER=/home/w/src/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/usr/libexec/gcc/mips-openwrt-linux-uclibc/4.5.0/lto-wrapper
Target: mips-openwrt-linux-uclibc
Configured with: /home/w/src/openwrt/trunk/build_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/gcc-4.5.0/configure --prefix=/home/w/src/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/usr --build=i486-linux-gnu --host=i486-linux-gnu --target=mips-openwrt-linux-uclibc --with-gnu-ld --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-multilib --disable-nls --with-host-libstdcxx=-lstdc++ --with-float=soft --with-gmp=/home/w/src/openwrt/trunk/staging_dir/host --with-mpfr=/home/w/src/openwrt/trunk/staging_dir/host --disable-decimal-float --with-gmp=/home/w/src/openwrt/trunk/staging_dir/host --with-mpc=/home/w/src/openwrt/trunk/staging_dir/host --with-mpfr=/home/w/src/openwrt/trunk/staging_dir/host --disable-decimal-float --disable-libssp --disable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-threads --with-slibdir=/home/w/src/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/lib --enable-lto --with-libelf=/home/w/src/openwrt/trunk/staging_dir/host --disable-tls
Thread model: posix
gcc version 4.5.0 (GCC) 
COLLECT_GCC_OPTIONS='-c' '-O2' '-mips32r2' '-mtune=mips32r2' '-fpic' '-v' '-msoft-float' '-mllsc' '-mno-synci'
 /home/w/src/openwrt/trunk/staging_dir/toolchain-mips_r2_gcc-4.5.0_uClibc-0.9.31/usr/libexec/gcc/mips-openwrt-linux-uclibc/4.5.0/cc1 -fpreprocessed recovery.i -quiet -dumpbase recovery.i -mips32r2 -mtune=mips32r2 -msoft-float -mllsc -mno-synci -auxbase recovery -O2 -version -fpic -o /tmp/cc0cB1Gx.s
GNU C (GCC) version 4.5.0 (mips-openwrt-linux-uclibc)
	compiled by GNU C version 4.4.4, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C (GCC) version 4.5.0 (mips-openwrt-linux-uclibc)
	compiled by GNU C version 4.4.4, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 14a39be08080cfbd5f8220cfad9b033e
mips-openwrt-linux-uclibc-gcc: Internal error: Segmentation fault (program cc1)
Please submit a full bug report.
See <https://dev.openwrt.org/> for instructions.
Comment 8 gnuzip 2010-07-14 08:40:53 UTC
Created attachment 21197 [details]
recovery.i file (openwrt)
Comment 9 Richard Sandiford 2011-05-28 11:33:14 UTC
*** Bug 44944 has been marked as a duplicate of this bug. ***
Comment 10 Richard Sandiford 2011-05-29 17:41:53 UTC
Author: rsandifo
Date: Sun May 29 17:41:50 2011
New Revision: 174402

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174402
Log:
gcc/
	PR target/43995
	* config/mips/mips.c (mips_pic_call_symbol_from_set): Add a
	recurse_p argument.  Only follow register copies if it is set,
	and prevent mips_find_pic_call_symbol from recursing.
	(mips_find_pic_call_symbol): Add a recurse_p argument.
	Pass it to mips_pic_call_symbol_from_set.
	(mips_annotate_pic_calls): Update accordingly.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/mips/mips.c
Comment 11 Richard Sandiford 2011-05-29 17:47:53 UTC
Author: rsandifo
Date: Sun May 29 17:47:51 2011
New Revision: 174404

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174404
Log:
gcc/
	PR target/43995
	* config/mips/mips.c (mips_pic_call_symbol_from_set): Add a
	recurse_p argument.  Only follow register copies if it is set,
	and prevent mips_find_pic_call_symbol from recursing.
	(mips_find_pic_call_symbol): Add a recurse_p argument.
	Pass it to mips_pic_call_symbol_from_set.
	(mips_annotate_pic_calls): Update accordingly.

Modified:
    branches/gcc-4_6-branch/gcc/ChangeLog
    branches/gcc-4_6-branch/gcc/config/mips/mips.c
Comment 12 Richard Sandiford 2011-05-29 17:50:57 UTC
Author: rsandifo
Date: Sun May 29 17:50:53 2011
New Revision: 174407

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174407
Log:
gcc/
	PR target/43995
	* config/mips/mips.c (mips_pic_call_symbol_from_set): Add a
	recurse_p argument.  Only follow register copies if it is set,
	and prevent mips_find_pic_call_symbol from recursing.
	(mips_find_pic_call_symbol): Add a recurse_p argument.
	Pass it to mips_pic_call_symbol_from_set.
	(mips_annotate_pic_calls): Update accordingly.

Modified:
    branches/gcc-4_5-branch/gcc/ChangeLog
    branches/gcc-4_5-branch/gcc/config/mips/mips.c
Comment 13 Richard Sandiford 2011-05-29 18:04:43 UTC
Patch applied to trunk, 4.5 and 4.6.