This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Abort in elflink.c: elf_link_check_versioned_symbol
- From: Ian Lance Taylor <iant at google dot com>
- To: ramana dot radhakrishnan at arm dot com
- Cc: binutils at sourceware dot org
- Date: Wed, 26 Aug 2009 07:59:50 -0700
- Subject: Re: Abort in elflink.c: elf_link_check_versioned_symbol
- References: <1251281400.4775.15.camel@e200593-lin.cambridge.arm.com>
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> writes:
> The symbol for which this abort happens is
> _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE from libstdc
> ++.so. Looking at this symbol in libstdc++.so, I can see that this is
> versioned and weak as below but the actual symbol doesn't appear in the
> shared object.
>
>>From the Symbol Table of libstdc++
>
> 936: 0008e1e4 40 FUNC WEAK DEFAULT 11
> _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4
That is a real symbol definition. It merely happens to be marked weak.
I think what is happening is that elf_link_check_versioned_symbol
assumes that it will only be called when the regular symbol resolution
code did not resolve the symbol. So it does not expect to see an
unhidden symbol here; an unhidden symbol should already have been
resolved. So you should find out why elf_link_check_versioned_symbol is
being called here.
Ian