This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: relocation errors on solaris 10 u10 due to symbol versioning from ld


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]