[PATCH] LD/doc: Clarify `-rpath' option's semantics WRT link-time dependencies

Maciej Rozycki macro@wdc.com
Wed Jun 5 21:15:00 GMT 2019


From: Maciej W. Rozycki <macro@wdc.com>

Mention in the description of the `-rpath' LD option the restrictions 
the option has with respect to searching link-time dependencies of 
shared objects referred in the link.  Previously these restrictions were 
only documented along with the `-rpath-link' option, which may not be 
the place one would consider when looking for the semantics of `-rpath'.

Copy the relevant part of the `-rpath-link' option description then, 
splitting the now overlong paragraph into three, for legibility.

	ld/
	* ld.texi (Options): Also document `-rpath' option restrictions 
	in the description of the option itself.
---
Hi,

 It took me a better part of the day to figure out what was going on with 
`-rpath' being ignored for the purpose of searching link-time dependencies 
with a cross-linker that was configured with no sysroot defined.  As it 
eventually turned out from code inspection it is a feature I have never 
come across before, however documented with the `-rpath-link' option only, 
which is not necessarily the place one would look at for the semantics of 
`-rpath'.

 NB my WDC copyright assignment paperwork for FSF is still in progress, 
however I have not contributed to binutils on behalf of WDC yet and I 
believe the change is small enough to be acceptable right away.

 Verified with `make info pdf' and then visually.  OK to apply then?

  Maciej
---
 ld/ld.texi |   17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

binutils-ld-doc-rpath-cross.diff
Index: binutils-gdb/ld/ld.texi
===================================================================
--- binutils-gdb.orig/ld/ld.texi
+++ binutils-gdb/ld/ld.texi
@@ -1958,12 +1958,17 @@ line.  It overrides @samp{-s} and @samp{
 Add a directory to the runtime library search path.  This is used when
 linking an ELF executable with shared objects.  All @option{-rpath}
 arguments are concatenated and passed to the runtime linker, which uses
-them to locate shared objects at runtime.  The @option{-rpath} option is
-also used when locating shared objects which are needed by shared
-objects explicitly included in the link; see the description of the
-@option{-rpath-link} option.  If @option{-rpath} is not used when linking an
-ELF executable, the contents of the environment variable
-@code{LD_RUN_PATH} will be used if it is defined.
+them to locate shared objects at runtime.
+
+The @option{-rpath} option is also used when locating shared objects which
+are needed by shared objects explicitly included in the link; see the
+description of the @option{-rpath-link} option.  Searching @option{-rpath}
+in this way is only supported by native linkers and cross linkers which
+have been configured with the @option{--with-sysroot} option.
+
+If @option{-rpath} is not used when linking an ELF executable, the
+contents of the environment variable @code{LD_RUN_PATH} will be used if it
+is defined.
 
 The @option{-rpath} option may also be used on SunOS.  By default, on
 SunOS, the linker will form a runtime search path out of all the


More information about the Binutils mailing list