This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] ld.so: command argument "--preload"
- From: Michael Kerrisk <mtk dot manpages at gmail dot com>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: David Newall <glibc at davidnewall dot com>, "Carlos O'Donell" <carlos at redhat dot com>, libc-alpha <libc-alpha at sourceware dot org>, Michael Kerrisk-manpages <mtk dot manpages at gmail dot com>
- Date: Tue, 26 Feb 2019 12:47:49 +0100
- Subject: Re: [PATCH] ld.so: command argument "--preload"
- References: <322fb70a-9c0e-100b-4366-dfa7e5134aa5@davidnewall.com> <265bec63-9875-7268-2199-c7e133b2298e@davidnewall.com> <874ldb7gxp.fsf@oldenburg.str.redhat.com> <5f79f366-d687-583f-940c-36c169bd34a9@davidnewall.com> <cfd15aee-c960-0599-b053-d36ce40c9707@redhat.com> <fe18f63f-0b38-361b-17a0-64820e013bc5@davidnewall.com> <87sh0eqssf.fsf@oldenburg.str.redhat.com> <8816b7fc-d798-42ee-de51-d1de56e6887c@davidnewall.com> <87zhuljiev.fsf@oldenburg.str.redhat.com> <43265e8e-956a-f895-6c04-8cd6898a8c97@davidnewall.com> <877ehphv2a.fsf@oldenburg.str.redhat.com> <2e1f89d3-9718-50ca-328c-b4b82b1974d4@davidnewall.com> <8736sdhtim.fsf@oldenburg.str.redhat.com> <e6c688f3-535a-265b-f516-69d91379a495@davidnewall.com> <be388b70-df15-75ef-152d-90c0bd2099c6@davidnewall.com> <87va57dekq.fsf@oldenburg.str.redhat.com> <b4926cb8-cef2-ef29-8407-d3fc3dc225a5@davidnewall.com> <87d0o7ra5o.fsf@oldenburg2.str.redhat.com>
I've added documentation for the --preload option to the ld.so(8)
manual page. Please let me know if I missed anything in the text
below.
--preload list (since glibc 2.30)
Preload the objects specified in list. The objects in list
are delimited by colons or spaces. The objects are pre‐
loaded as explained in the description of the LD_PRELOAD
environment variable below.
By contrast with LD_PRELOAD, the --preload option provides
a way to perform preloading for a single executable without
affecting preloading performed in any child process that
executes a new program.
...
LD_PRELOAD
...
There are various methods of specifying libraries to be
preloaded, and these are handled in the following order:
(1) The LD_PRELOAD environment variable.
(2) The --preload command-line option when invoking the
dynamic linker directly.
(3) The /etc/ld.so.preload file (described below).
Thanks,
Michael
diff --git a/man8/ld.so.8 b/man8/ld.so.8
index 6271f23ed..cdc4f233d 100644
--- a/man8/ld.so.8
+++ b/man8/ld.so.8
@@ -192,6 +192,24 @@ are delimited by colons or spaces.
.B \-\-list
List all dependencies and how they are resolved.
.TP
+.BR \-\-preload " \fIlist\fP (since glibc 2.30)"
+Preload the objects specified in
+.IR list .
+The objects in
+.I list
+are delimited by colons or spaces.
+The objects are preloaded as explained in the description of the
+.BR LD_PRELOAD
+environment variable below.
+.IP
+By contrast with
+.BR LD_PRELOAD ,
+the
+.BR \-\-preload
+option provides a way to perform preloading for a single executable
+without affecting preloading performed in any child process that executes
+a new program.
+.TP
.B \-\-verify
Verify that program is dynamically linked and this dynamic linker can handle
it.
@@ -347,6 +365,23 @@ as described above in
.\"
.\" which will preload the libmod.so in 'lib' or 'lib64', using it
.\" in preference to the version in '.'.
+.IP
+There are various methods of specifying libraries to be preloaded,
+and these are handled in the following order:
+.RS
+.IP (1) 4
+The
+.BR LD_PRELOAD
+environment variable.
+.IP (2)
+The
+.B \-\-preload
+command-line option when invoking the dynamic linker directly.
+.IP (3)
+The
+.I /etc/ld.so.preload
+file (described below).
+.RE
.TP
.BR LD_TRACE_LOADED_OBJECTS
If set (to any value), causes the program to list its dynamic