On Thu, Jul 27, 2006 at 03:37:33PM -0700, Geoffrey Keating wrote: > "H. J. Lu" <[EMAIL PROTECTED]> 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.