Yes, you are right, by reading at the source it seems that ld.so only searches the object with -Bsymbolic.
In fact there is this comment in the relevant file: /* Create an appropriate searchlist. It contains only this map. XXX This is the definition of DT_SYMBOLIC in SysVr4. The old GNU ld.so implementation had a different interpretation which is more reasonable. We are prepared to add this possibility back as part of a GNU extension of the ELF format. */ Apparently the "different interpretation" is what I was assuming the current one. How about the implementing the GNU extension? The value attached to the DT_SYMBOLIC entry is currently ignored but set to 0 by ld so we could use it for the extension. On non-Debian/non-GNU platforms this would interpreted just like DT_SYMBOLIC. This would only require modification of ld.so (add support for DT_SYMBOLIC and value=1) and ld (add -Bgnusymbolic). Or, alternatively, how about changing the semantics of DT_SYMBOLIC? (shouldn't cause serious problems, would it?)
signature.asc
Description: This is a digitally signed message part