This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: relocation errors on solaris 10 u10 due to symbol versioning from ld
- From: Alan Modra <amodra at gmail dot com>
- To: "Schneider, Bennett" <Bennett dot Schneider at tektronix dot com>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Wed, 12 Oct 2011 00:23:04 +1030
- Subject: Re: relocation errors on solaris 10 u10 due to symbol versioning from ld
- References: <5E556371F615784A9717B76C0AED5E4704D3C33827@us-bv-m09.global.tektronix.net>
On Mon, Oct 10, 2011 at 06:40:20AM -0700, Schneider, Bennett wrote:
> Hi,
> After updating to solaris 10 u10, I've been seeing issues with
> libstdc++ that I believe are a result of output from the gnu linker
> (binutils 2.19). I'm getting relocation errors when using certain
> symbols from libstdc++. LD_DEBUG output shows that these are not
> being considered because the interpreter believes that they have the
> hidden bit set:
They do. From include/elf/common.h
/* This flag appears in a Versym structure. It means that the symbol
is hidden, and is only visible with an explicit version number.
This is a GNU extension. */
#define VERSYM_HIDDEN 0x8000
/* This is the mask for the rest of the Versym information. */
#define VERSYM_VERSION 0x7fff
> Using elfdump on libstdc++ shows that certain symbols seem to have
> extra bits set that are now being interpreted as hidden.
Yup
> The previous output was for the ver to be 32770 (0x8002).
ie. your previous tools (and possibly ld.so) did not understand the
HIDDEN bit.
--
Alan Modra
Australia Development Lab, IBM