[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CVS: cvs.openbsd.org: src [shlib.c change]



>  > Modified files:
>  > 	gnu/usr.bin/ld : shlib.c 
>  > 
>  > Log message:
>  > revert back 1.4->1.5.
>  > ld (and ld.so) should take the shared library of the highest version
>  > in the first directory that it founds.  this is the way ld/ld.so has
>  > traditionally worked since SunOS 4 and this is the way it should work.
>  > 
>  > before changing this back - please make sure you understand the
>  > semantics of this and that you are not just hiding some other bug but
>  > toggling this change.  also verify the example in the PR.
> 
> Query: doesn't this break the libcrypto shared lib hack that makes
> OpenSSH work in the US?  My reasoning is this: assume the search path
> is /usr/lib:/usr/local/lib:/usr/X11R6/lib (I believe that to be correct,
> if not then ignore these ramblings).   If so, then according to the
> above comment /usr/lib/libcrypto.so.2.0 will be used because it is
> found in /usr/lib/, even though a /usr/local/lib/libcrypto.so.2.1 exists.
> 
> Am I correct?  Is this really what is desired?

No, it still works correctly.

We want ld to link against the /usr/lib version.
Therefore, we do not give it a -L/usr/local/lib flag.
It does not search in /usr/local/lib, so it finds only the
/usr/lib version.
Therefore the binary is encoded to want 2.0

We want rtld to link against the best version it finds, as long
as the major number is the same.
It notes that it wants a 2.x library.
In /usr/lib it sees 2.0
But it's search path, specified to ldconfig in /etc/rc, includes
/usr/local/lib
There it finds 2.1
So it uses 2.1

I tested this.

However, you are going to have problem with the mozilla libutil, I bet.
Get them to change that name.