Andreas Schwab <[email protected]> writes:
> I'm seeing this bootstrap failure on ia64 (configured with
> --with-system-libunwind):
>
> /usr/local/gcc/gcc-20110806/Build/./prev-gcc/g++
> -B/usr/local/gcc/gcc-20110806/Build/./prev-gcc/ -B/usr/ia64-suse-linux/bin/
> -nostdinc++
> -B/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/src/.libs
>
> -B/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/libsupc++/.libs
>
> -I/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/include/ia64-suse-linux
>
> -I/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/include
> -I/usr/local/gcc/gcc-20110806/libstdc++-v3/libsupc++
> -L/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/src/.libs
>
> -L/usr/local/gcc/gcc-20110806/Build/prev-ia64-suse-linux/libstdc++-v3/libsupc++/.libs
> -DUSE_LIBUNWIND_EXCEPTIONS -g -O2 -DIN_GCC -W -Wall -Wwrite-strings
> -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long
> -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common
> -DHAVE_CONFIG_H -o gengtype gengtype.o gengtype-lex.o gengtype-parse.o
> gengtype-state.o version.o errors.o libcommon.a ../libcpp/libcpp.a
> ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a libcommon.a
> ../libcpp/libcpp.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a
> /usr/local/gcc/gcc-20110806/Build/./prev-gcc/libgcc_s.so: undefined reference
> to `__libunwind__Unwind_Find_FDE'
> collect2: error: ld returned 1 exit status
> make[3]: *** [gengtype] Error 1
> make[3]: *** Waiting for unfinished jobs....
> make[3]: Leaving directory `/usr/local/gcc/gcc-20110806/Build/gcc'
> make[2]: *** [all-stage2-gcc] Error 2
> make[2]: Leaving directory `/usr/local/gcc/gcc-20110806/Build'
> make[1]: *** [stage2-bubble] Error 2
> make[1]: Leaving directory `/usr/local/gcc/gcc-20110806/Build'
> make: *** [bootstrap] Error 2
>
> Looks like -lunwind is missing somewhere.
AFAICT -lunwind comes from gcc/config/t-libunwind (SHLIB_LC) and is
still present *if t-libunwind is used*. The problem could be that there
are several different definitions of LIB2ADDEH for the ia64-*-*
configs. In the case of Linux/IA-64, we now have
> grep LIB2ADDEH ia64/t-ia64 ia64/t-glibc ia64/t-eh-ia64 t-libunwind
ia64/t-glibc:LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
ia64/t-eh-ia64:LIB2ADDEH = $(srcdir)/config/ia64/unwind-ia64.c
$(srcdir)/unwind-sjlj.c \
t-libunwind:LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
t-libunwind:LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
On the 4.6 branch (in gcc/config), we have
ia64/t-ia64:LIB2ADDEH = $(srcdir)/config/ia64/unwind-ia64.c
$(srcdir)/unwind-sjlj.c \
t-libunwind:LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
t-libunwind:LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
ia64/t-glibc:LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \
It seems the ordering is wrong, i.e. t-libunwind should come before
ia64/t-glibc.
Perhaps you could have a look at all those definitions of LIB2ADDEH*?
Probably some of them can be removed, or the t-* files not included in
particular configurations.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University