Oh, I think I've found something interesting.<div><br></div><div>To have the linker works as I expect, I have to enable Direct Linking. Here are some links about it:</div><div><a href="http://docs.oracle.com/cd/E19963-01/html/819-0690/aehzq.html">http://docs.oracle.com/cd/E19963-01/html/819-0690/aehzq.html</a></div>
<div><a href="https://blogs.oracle.com/msw/entry/library_bindings_let_s_be">https://blogs.oracle.com/msw/entry/library_bindings_let_s_be</a></div><div><a href="https://blogs.oracle.com/rie/entry/direct_binding_now_the_default">https://blogs.oracle.com/rie/entry/direct_binding_now_the_default</a></div>
<div><br></div><div>The problem is that the exemples explains how to enable direct linking when you compile a binary against a program but it doesn't tell if it's possible to compile a library in order to require direct linking when a program tries to link with it.</div>
<div><br></div><div>I tried to change the mapfile like this (for openssl 0.9.8):</div><div><div>  OPENSSL_0.9.8 {</div><div>          global:</div><div>                  BIO_f_ssl = DIRECT;</div><div>                  BIO_new_buffer_ssl_connect = DIRECT;</div>
<div>                  BIO_new_ssl = DIRECT;</div><div>                  BIO_new_ssl_connect = DIRECT;</div></div><div>   [...]</div><div><br></div><div>But it didn't work so far. </div><div>I might require every library / program that link with openssl to enable direct linking but that would be more intrusive.</div>
<div><br></div><div>I am still searching but any help is welcome.</div><div><br></div><div>Yann</div><div><br></div><div><br><br><div class="gmail_quote">2012/7/23 Yann Rouillard <span dir="ltr"><<a href="mailto:yann@pleiades.fr.eu.org" target="_blank">yann@pleiades.fr.eu.org</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div>Yes, its works at the symbol level but:</div><div>  - the linker doesn't seem to use that information when it links a given symbol, it only uses it to check wether or not it can load a library,</div>


<div>  - it is not registered at the symbol level in the solaris elf file (that could perfectly work without it, but it seems that the version is stored for each symbol in Linux elf files).</div><div></div></div></blockquote>

<div><br></div></div><div>Seems I was wrong on the last point. Solaris definitely stores the version for each symbol. You can get the information through pvs:</div><div><br></div><div># pvs -ors /opt/csw/lib/libneon.so.27.2.6 </div>

<div>[...]</div><div><div>/opt/csw/lib/libneon.so.27.2.6 -        libssl.so.0.9.8 (OPENSSL_0.9.8): SSL_set_ex_data;</div><div>/opt/csw/lib/libneon.so.27.2.6 -        libssl.so.0.9.8 (OPENSSL_0.9.8): SSL_write;</div><div>
/opt/csw/lib/libneon.so.27.2.6 -        libssl.so.0.9.8 (OPENSSL_0.9.8): SSL_load_error_strings;</div>
<div>/opt/csw/lib/libneon.so.27.2.6 -        libssl.so.0.9.8 (OPENSSL_0.9.8): SSL_accept;</div><div>/opt/csw/lib/libneon.so.27.2.6 -        libssl.so.0.9.8 (OPENSSL_0.9.8): SSL_new;</div></div><div>[...]</div><div><br></div>

<div>I am very surprised that the linker doesn't use that information at runtime to link the symbol.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Yann</div></font></span></div><br>
</blockquote></div><br></div>