relocation errors on solaris 10 u10 due to symbol versioning from ld
Alan Modra
amodra@gmail.com
Tue Oct 11 13:53:00 GMT 2011
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
More information about the Binutils
mailing list