Steve,
> On Tue, 2011-07-19 at 12:47 +0200, Rainer Orth wrote:
>
>> unfortunately, I don't even have an idea what this error is supposed to
>> mean. Seems to be an error ultimately due to bfd/elfxx-ia64.c
>> (elfNN_ia64_size_dynamic_sections) failing.
>>
>> To debug this, I'd start by comparing the link lines for a vanilla build
>> with my patch, then, if no differences are apparent, check the object
>> files.
>
> Ah, I looked at the link lines and the standard build includes this in
> the link line:
>
> -Wl,--version-script=libgcc.map
>
> It is missing in the build I did with your patch.
now I understand what's happening: with t-slibgcc included in
libgcc/config.host, all the SHLIB_* variables gcc/libgcc.mvars (which
stem from gcc/config.gcc including t-slibgcc-elf-ver via the *-*-linux*
case) are overridden by the most generic defaults.
I think you'll need the following:
ia64*-*-linux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
# FIXME: Move to *-*-linux* once the SHLIB_* move is complete.
tmake_file="t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
tmake_file="$tmake_file ia64/t-ia64 t-softfp ia64/t-fprules-softfp
ia64/t-softfp-compat ia64/t-glibc ia64/t-eh-ia64 t-libunwind"
if test x$with_system_libunwind != xyes ; then
tmake_file="${tmake_file} t-libunwind-elf
ia64/t-glibc-libunwind"
fi
md_unwind_header=ia64/linux-unwind.h
;;
and a new libgcc/config/t-linux:
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
The t-slibgcc* fragments have been introduced to avoid the massive
duplication previously found there, but are equivalent to the current
gcc/config/t-slibgcc-elf-ver.
Perhaps you could give this a try?
Thanks.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University