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: ld -shared -Bsymbolic and C++ shared library


On Thu, Jul 27, 2006 at 03:37:33PM -0700, Geoffrey Keating wrote:
> "H. J. Lu" <hjl@lucon.org> writes:
> 
> > ld -shared -Bsymbolic will reduce number of dynamic relocations in
> > a shared library. Unfortunately, it won't work correctly with C++
> > exception and maybe other language features.
> > 
> > However, I think it is possible to make -shared -Bsymbolic to work
> > for C++ by providing a way to specify a list of symbols which must
> > be dynamic. We then can do
> > 
> > # g++ -Wl,-Bsymbolic -shared -xxx "list of dynamic symbols" -o libfoo.so ...
> > 
> > and libfoo.so written in C++ will work correctly with much fewer dynamic
> > relocations.
> 
> You may find this would be easier to use if you just had a flag which
> made -Bsymbolic apply only to non-weak symbols.

It doesn't work since

1. There are weak function symbols, which we do want to bind locally.
2. Weak symbols aren't required for comdat group.

BTW, -Wl,-Bsymbolic can't be used since it will add DF_SYMBOLIC to
shared library, which will cause dynamic linker to resolve symbols
locally.


H.J.


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