------- Comment #3 from rob1weld at aol dot com  2007-04-30 00:14 -------
Did some more testing. The results that follow are from the output of a shell
script to catch each error and defeat it. I have edited it down for this
report.

There is a bug in gcc-4_2 in that it won't let you make a new ABI (with a three
stage build). So how can you switch ABIs?

I was able to convert Cygwin from "coff-pe" object file format to "elf" object
file format (so I can use TLS and other superior elf features). That is similar
to an ABI conversion but was more of a binutils issue (and then recompiling gcc
over the new "as" and "ld").

At the moment I am back to using "normal" Cygwin (so others can duplicate what
I am doing :) ).

There is a similar problem with using all those fancy options (EG:
--enable-java-awt=gtk,xlib --enable-gtk-cairo --enable-qt-peer --enable-xmlj
--enable-gconf-peer _AND_ also using --enable-multilib) that involves gcc
looking for 64 bit libraries (that don't even exist) in /usr/lib when it should
look in /lib64.

EG:

# objdump -a /usr/lib/libreadline.so

/usr/lib/libreadline.so:     file format elf32-i386


# objdump -a /lib64/libreadline.so.5

/lib64/libreadline.so.5:     file format elf64-x86-64


So if I use --enable-multilib and need -lreadline then I am OK, but later in
the compile when I need -lxslt it looks for it in /usr/lib/libxslt.so BUT I
need it to look in /lib64 (which is linked to from /usr/lib64) but the
./configure script does not catch that.


_THIS_ bug-report is about trying to switch ABIs (and using a three stage
compile so it has a chance of working). When I tried to do this I discovered
that the compiler would seg-fault INSTEAD of giving a correct error message.

---

Here is the result of my attempt to "prove" this:


cd /cygdrive/c/gcc-4_2-branch-build/

$ gcc/xgcc -v
Using built-in specs.
Target: i686-pc-cygwin
Configured with: ../gcc-4_2-branch/configure --verbose
--enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --with-tune=athlon-xp
--prefix=/usr --enable-objc-gc --enable-concept-checks --disable-multilib
--exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-gxx-include-dir=/usr/include/c++/4.2 --enable-libstdcxx-debug
--enable-static --enable-shared --enable-initfini-array --enable-__cxa_atexit
--enable-threads=posix --enable-version-specific-runtime-libs --enable-libssp
--enable-libmudflap --enable-libgomp --disable-werror --enable-nls
--with-included-gettext --enable-decimal-float --with-long-double-128
--enable-debug --disable-sjlj-exceptions --enable-java-gc=boehm --with-x
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib
--enable-java-awt=gtk,xlib --enable-gtk-cairo --enable-qt-peer --enable-xmlj
--enable-gconf-peer --enable-tool-wrappers --enable-portable-native-sync
--enable-libgcj-multifile --with-stabs --enable-hash-synchronization
--enable-gc-debug --enable-interpreter --with-system-zlib --enable-libada
--with-tls --enable-win32-registry --with-cpu=athlon-xp --with-arch=athlon-xp
--enable-checking
Thread model: posix
gcc version 4.2.0 20070427 (prerelease)

$ Echo "Use xgcc (prerelease 20070427)"

$ cd /cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include

$ /cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -shared-libgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-Winvalid-pch -Wno-deprecated -x c++-header -g -O2 
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++ -O2 -g
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/include/precompiled/extc++.h
-o bits/extc++.h.gch/O2g.gch
In file included from
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/include/precompiled/extc++.h:60:
/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/exception.hpp:
In function 'void pb_ds::__throw_join_error()':
/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/exception.hpp:84:
internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[4]: *** [bits/extc++.h.gch/O2g.gch] Error 1
make[4]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/cygdrive/c/gcc-4_2-branch-build'
make: *** [all] Error 2


$ Echo "Use gcc (Cygwin 3.4.4) instead (remove leading
"-B/cygdrive/c/gcc-4_2-branch-build/./gcc")."

$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure
--verbose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib
--libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls
--without-included-gettext --enable-version-specific-runtime-libs --without-x
--enable-libgcj --disable-java-awt --with-system-zlib --enable-interpreter
--disable-libgcj-debug --enable-threads=posix --enable-java-gc=boehm
--disable-win32-registry --enable-sjlj-exceptions --enable-hash-synchronization
--enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

$ gcc -v -shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-Winvalid-pch -Wno-deprecated -x c++-header -g -O2 
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++ -O2 -g
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/include/precompiled/extc++.h
-o bits/extc++.h.gch/O2g.gch

$ Echo "No errors or warnings - file is created OK"


$ cd /cygdrive/c/gcc-4_2-branch-build/
$ make
$ Echo "Make works for a while and creates a few more files until:"


$/cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -shared-libgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -fdiagnostics-show-location=once -ffunction-sections
-fdata-sections -g -O2 -c
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc -o
eh_alloc.o
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc:1:
warning: -ffunction-sections may affect debugging on some targets
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc: In
function 'void __cxxabiv1::__cxa_free_exception(void*)':
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc:158:
internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[4]: *** [eh_alloc.lo] Error 1
make[4]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/libsupc++'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/cygdrive/c/gcc-4_2-branch-build'
make: *** [all] Error 2


$ Echo "Use gcc (Cygwin 3.4.4) instead (again) (remove leading
"-B/cygdrive/c/gcc-4_2-branch-build/./gcc")."
$ cd /cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/libsupc++
$ gcc -shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -fdiagnostics-show-location=once -ffunction-sections
-fdata-sections -g -O2 -c
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc -o
eh_alloc.o
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc:1:
warning: -ffunction-sections may affect debugging on some targets

$ Echo "No errors and only one warning - file is created OK (but there is no
needed .lo!)"

$ Echo "Note: attempting to go back to the root directory and simply type
"make"
$ Echo "does not work this time (since the Makefile wants the .lo files too) so
$ Echo "remain in the directory and use "make -i" to build what we can and then
$ Echo "go back and use "gcc" (instead of "gcc/xgcc") (via libtool) for the
$ Echo "seg-faulted files."

$ Echo "I put a newline between each of these since the bug-report window is
not wide."



/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o eh_alloc.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_alloc.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o eh_catch.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_catch.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o eh_globals.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_globals.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o eh_personality.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_personality.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o eh_terminate.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/eh_terminate.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o guard.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/guard.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o new_op.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/new_op.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o new_opnt.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/new_opnt.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o new_opv.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/new_opv.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o vec.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/vec.cc

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile gcc
-shared-libgcc  -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/../gcc
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates  -Wall -Wextra -Wwrite-strings
-Wcast-qual  -fdiagnostics-show-location=once  -ffunction-sections
-fdata-sections  -g -O2   -c -o vterminate.lo
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++/vterminate.cc



$ cd /cygdrive/c/gcc-4_2-branch-build/
$ make
$ Echo "Make works for a while and creates a few more files until:"


/cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -shared-libgcc
-B/cygdrive/c/gcc-4_2-branch-build/./gcc -nostdinc++
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src
-L/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src/.libs
-B/usr//bin/ -B/usr//lib/ -isystem /usr//include -isystem /usr//sys-include
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include/
-I/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/include
-I/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/libsupc++
-I/usr/local/include -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -fdiagnostics-show-location=once -ffunction-sections
-fdata-sections -g -O2 -c
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/src/bitmap_allocator.cc -o
bitmap_allocator.o
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/src/bitmap_allocator.cc:1:
warning: -ffunction-sections may affect debugging on some targets
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/src/bitmap_allocator.cc: In
member function 'void __gnu_cxx::free_list::_M_clear()':
/cygdrive/C/makecygwin/gcc-4_2-branch/libstdc++-v3/src/bitmap_allocator.cc:120:
internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[4]: *** [bitmap_allocator.lo] Error 1
make[4]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3/src'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/cygdrive/c/gcc-4_2-branch-build/i686-pc-cygwin/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/cygdrive/c/gcc-4_2-branch-build'
make: *** [all] Error 2


What is this guy doing you ask? (I _did_ read
gcc-4_2-branch\libstdc++-v3\docs\html\abi.html)


The _POINT_ I am making is that gcc/xgcc (three stage compiled) _CAN_ compile
"some" of these files but on others it produces a segmentation fault. Cygwin's
gcc 3.4.4 is able to compile the seg-faulted ones and they can all be linked
into libraries without any trouble. Some files gcc-4_2 likes, and some cause a
seg-fault.

It is _incorrect_ behavior of GCC 4.2.0 (20070427) to print on the screen the
words "internal compiler error: Segmentation fault". It must print an error
message of it's own choosing. If it refuses to compile the file because it
dislikes to produce a new ABI then it can say that - but "Segmentation fault"
is not correct operation. If it won't do it then how do we switch ABIs ?


What I have "proved" is that there is some un-checked condition that is falling
through and doing something that causes a seg-fault. In the old days that would
hang your computer and you would need to re-boot.


I did turn up this info:

grep -r sjlj-exceptions ../gcc-4_2-branch/*
../makecygwin/gcc-4_2-branch/gcc/testsuite/ChangeLog:   *
g++.old-deja/g++.eh/crash3.C: Don't use -fsjlj-exceptions.
../makecygwin/gcc-4_2-branch/gcc/testsuite/g++.old-deja/g++.eh/crash3.C:// Used
to use -fsjlj-exceptions, but that isn't an option anymore.
../makecygwin/gcc-4_2-branch/gcc/testsuite/g++.old-deja/g++.eh/vbase3.C:// Used
to use -fsjlj-exceptions, but that isn't an option anymore.


Perhaps we need someone to write a few more testcases to catch this undefined
behaviour and print a "real" error message of what the complaint is instead of
saying seg-fault. It makes it sound like it is writing to memory it does not
own.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31761

Reply via email to