Andreas Schwab <sch...@linux-m68k.org> 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

Reply via email to