Answering my own question because I just earned a Tumbleweed badge for it… and I found out subsequently
But I was wondering whether there is perhaps a finer-grained control over this, like overwriting
-Bsymbolic
for individual function definitions of a library.
Yes, there is the option --dynamic-list
which does exactly that
Should I be aware of any pitfalls of using
-Bsymbolic-functions
? I plan to only use that, because the -Bsymbolic will break exceptions, I think (it will make it so that references to typeinfo objects are not unified, I think).
I looked more into it, and it seems there is no issue. The libstdc++ library apparently does it or at least did consider it and they only had to add --dynamic-list-cpp-new
to still have operator new
unified (to prevent issues with multiple allocator / deallocators mixing up in a program but I would argue such programs are broken anyway). Ubuntu uses it or used it by default, and it seems it causes conflicts with some packages. But overall it should work nicely I expect.