Hi,

I am sending this email on tech@, as I assume it could be interesting
for base developers to be aware of a slightly difference between ld.bfd
and ld.lld regarding -rpath option (and as I sent a previous mail on
ports@ and not everybody follow ports@).

while I investigated a problem on productivity/glabels (see ports@ about
glabels/libtool) I found a difference in rpath management. As it could
be tricky, I prefer to report it to people most aware than me in the
difference.

The short story is:
$ ld.lld -rpath=value   => Add a DT_RUNPATH to the output.
$ ld.bfd -rpath=value   => Add a DT_RPATH to the output.

>From ld.so comments, I think it isn't a problem as it seems just be the
library path search order that could changed a bit.

libexec/ld.so/library_subr.c

 *      Otherwise, the name doesn't contain a '/':
 *      search hints for the specific library version, trying in turn
 *      paths from the following:
 *        - the LD_LIBRARY_PATH environment variable (if set)
 *        - the library's own DT_RUNPATH
 *        - if DT_RUNPATH wasn't set, then:
 *          - the library's own DT_RPATH
 *          - the executable's own DT_RPATH
 *        - the default search path set by ldconfig, or /usr/lib if unset

But in case it could be a bit more complex... I prefer to let people
know.

Regarding productivity/glabels, it is us base libtool that doesn't
manage DT_RUNPATH but only DT_RPATH for retrieving library path (a diff
has been provided on ports@).

Thanks.
-- 
Sebastien Marie

Reply via email to