]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man8/ld.so.8
tcp.7: srcfix
[thirdparty/man-pages.git] / man8 / ld.so.8
CommitLineData
2d6c6dd1 1.\" %%%LICENSE_START(PUBLIC_DOMAIN)
fea681da 2.\" This is in the public domain
2d6c6dd1 3.\" %%%LICENSE_END
6a717e5e 4.\"
31a1b45e 5.TH LD.SO 8 2017-03-13 "GNU" "Linux Programmer's Manual"
fea681da 6.SH NAME
01078c2d 7ld.so, ld-linux.so \- dynamic linker/loader
a1d5f77c 8.SH SYNOPSIS
cd6dddf6 9The dynamic linker can be run either indirectly by running some
43151de3
MK
10dynamically linked program or shared object
11(in which case no command-line options
a1d5f77c
MK
12to the dynamic linker can be passed and, in the ELF case, the dynamic linker
13which is stored in the
14.B .interp
15section of the program is executed) or directly by running:
16.P
17.I /lib/ld-linux.so.*
18[OPTIONS] [PROGRAM [ARGUMENTS]]
fea681da
MK
19.SH DESCRIPTION
20The programs
21.B ld.so
22and
23.B ld-linux.so*
43151de3
MK
24find and load the shared objects (shared libraries) needed by a program,
25prepare the program to run, and then run it.
fea681da
MK
26.LP
27Linux binaries require dynamic linking (linking at run time)
28unless the
29.B \-static
30option was given to
f19a0f03 31.BR ld (1)
fea681da
MK
32during compilation.
33.LP
34The program
35.B ld.so
36handles a.out binaries, a format used long ago;
37.B ld-linux.so*
d8d00ab7
MK
38(\fI/lib/ld-linux.so.1\fP for libc5, \fI/lib/ld-linux.so.2\fP for glibc2)
39handles ELF,
40which everybody has been using for years now.
2b9b829d 41Otherwise, both have the same behavior, and use the same
fea681da
MK
42support files and programs
43.BR ldd (1),
9af134cd 44.BR ldconfig (8),
fea681da
MK
45and
46.IR /etc/ld.so.conf .
47.LP
43151de3 48When resolving shared object dependencies,
15d116d5
MK
49the dynamic linker first inspects each dependency
50string to see if it contains a slash (this can occur if
43151de3 51a shared object pathname containing slashes was specified at link time).
15d116d5
MK
52If a slash is found, then the dependency string is interpreted as
53a (relative or absolute) pathname,
43151de3 54and the shared object is loaded using that pathname.
15d116d5 55.LP
43151de3 56If a shared object dependency does not contain a slash,
15d116d5 57then it is searched for in the following order:
cd6dddf6 58.IP o 3
dc4b358f 59Using the directories specified in the
cd6dddf6 60DT_RPATH dynamic section attribute
fea681da
MK
61of the binary if present and DT_RUNPATH attribute does not exist.
62Use of DT_RPATH is deprecated.
63.IP o
64Using the environment variable
24fb0923
MK
65.BR LD_LIBRARY_PATH
66(unless the executable is being run in secure-execution mode; see below).
880f5b4b 67in which case it is ignored.
fea681da 68.IP o
dc4b358f 69Using the directories specified in the
cd6dddf6 70DT_RUNPATH dynamic section attribute
fea681da
MK
71of the binary if present.
72.IP o
73From the cache file
de6d7600 74.IR /etc/ld.so.cache ,
43151de3 75which contains a compiled list of candidate shared objects previously found
c13182ef 76in the augmented library path.
cd6dddf6 77If, however, the binary was linked with the
4d9b6984 78.B \-z nodeflib
43151de3
MK
79linker option, shared objects in the default paths are skipped.
80Shared objects installed in hardware capability directories (see below)
81are preferred to other shared objects.
fea681da
MK
82.IP o
83In the default path
8478ee02 84.IR /lib ,
fea681da 85and then
8478ee02 86.IR /usr/lib .
39a15561 87(On some 64-bit architectures, the default paths for 64-bit shared objects are
b9359c7a
MK
88.IR /lib64 ,
89and then
90.IR /usr/lib64 .)
cd6dddf6 91If the binary was linked with the
4d9b6984 92.B \-z nodeflib
fea681da 93linker option, this step is skipped.
eeb25d47 94.SS Rpath token expansion
0a216931
MK
95.PP
96.B ld.so
99194a09
MK
97understands certain token strings in an rpath specification
98(DT_RPATH or DT_RUNPATH).
99Those strings are substituted as follows:
eeb25d47
MK
100.TP
101.IR $ORIGIN " (or equivalently " ${ORIGIN} )
8a94e783 102This expands to
43151de3 103the directory containing the program or shared object.
0a216931
MK
104Thus, an application located in
105.I somedir/app
106could be compiled with
eeb25d47 107
5c977011 108 gcc \-Wl,\-rpath,\(aq$ORIGIN/../lib\(aq
eeb25d47 109
43151de3 110so that it finds an associated shared object in
0a216931 111.I somedir/lib
988db661
MK
112no matter where
113.I somedir
0a216931
MK
114is located in the directory hierarchy.
115This facilitates the creation of "turn-key" applications that
116do not need to be installed into special directories,
117but can instead be unpacked into any directory
43151de3 118and still find their own shared objects.
909df276
MK
119.TP
120.IR $LIB " (or equivalently " ${LIB} )
121This expands to
122.I lib
123or
124.I lib64
125depending on the architecture
126(e.g., on x86-64, it expands to
127.IR lib64
128and
129on x86-32, it expands to
130.IR lib ).
3f2f2461
MK
131.TP
132.IR $PLATFORM " (or equivalently " ${PLATFORM} )
133This expands to a string corresponding to the processor type
134of the host system (e.g., "x86_64").
135On some architectures, the Linux kernel doesn't provide a platform
136string to the dynamic linker.
137The value of this string is taken from the
138.BR AT_PLATFORM
139value in the auxiliary vector (see
140.BR getauxval (3)).
141.\" To get an idea of the places that $PLATFORM would match,
142.\" look at the output of the following:
0a216931 143.\"
3f2f2461
MK
144.\" mkdir /tmp/d
145.\" LD_LIBRARY_PATH=/tmp/d strace -e open /bin/date 2>&1 | grep /tmp/d
0a216931
MK
146.\"
147.\" ld.so lets names be abbreviated, so $O will work for $ORIGIN;
148.\" Don't do this!!
9d4869b3 149.SH OPTIONS
fea681da 150.TP
4d9b6984 151.B \-\-list
fea681da
MK
152List all dependencies and how they are resolved.
153.TP
4d9b6984 154.B \-\-verify
fea681da
MK
155Verify that program is dynamically linked and this dynamic linker can handle
156it.
157.TP
495dadb7 158.B \-\-inhibit-cache
8584e381
MK
159Do not use
160.IR /etc/ld.so.cache .
495dadb7 161.TP
a831ad17
MK
162.BI \-\-library\-path " path"
163Use
164.I path
165instead of
fea681da
MK
166.B LD_LIBRARY_PATH
167environment variable setting (see below).
0a8909c4
MK
168The names
169.IR ORIGIN ,
170.IR LIB ,
171and
172.IR PLATFORM
173are interpreted as for the
174.BR LD_LIBRARY_PATH
175environment variable.
fea681da 176.TP
a831ad17
MK
177.BI \-\-inhibit\-rpath " list"
178Ignore RPATH and RUNPATH information in object names in
179.IR list .
6e1064d3 180This option is ignored when running in secure-execution mode (see below).
608dce1f 181.TP
a831ad17
MK
182.BI \-\-audit " list"
183Use objects named in
184.I list
185as auditors.
fea681da 186.SH ENVIRONMENT
6e1064d3 187Various environment variables influence the operation of the dynamic linker.
9894eac3
MK
188.\"
189.SS Secure-execution mode
190For security reasons,
191the effects of some environment variables are voided or modified if
192the dynamic linker determines that the binary should be
193run in secure-execution mode.
59e6b4c6
MK
194(For details, see the discussion of individual environment variables below.)
195A binary is executed in secure-execution mode if the
9894eac3
MK
196.B AT_SECURE
197entry in the auxiliary vector (see
198.BR getauxval (3))
199has a nonzero value.
200This entry may have a nonzero value for various reasons, including:
201.IP * 3
202The process's real and effective user IDs differ,
203or the real and effective group IDs differ.
c93f2202 204This typically occurs as a result of executing
9894eac3
MK
205a set-user-ID or set-group-ID program.
206.IP *
207A process with a non-root user ID executed a binary that
208conferred permitted or effective capabilities.
209.IP *
210A nonzero value may have been set by a Linux Security Module.
211.\"
212.SS Environment variables
6f6a4840 213Among the more important environment variables are the following:
fea681da 214.TP
9a741b5b 215.BR LD_ASSUME_KERNEL " (since glibc 2.2.3)"
43151de3 216Each shared object can inform the dynamic linker of the minimum kernel ABI
eeb25d47 217version that it requires.
ef74d4ad
MK
218(This requirement is encoded in an ELF note section that is viewable via
219.IR "readelf\ \-n"
220as a section labeled
221.BR NT_GNU_ABI_TAG .)
eeb25d47
MK
222At run time,
223the dynamic linker determines the ABI version of the running kernel and
43151de3 224will reject loading shared objects that specify minimum ABI versions
eeb25d47
MK
225that exceed that ABI version.
226
227.BR LD_ASSUME_KERNEL
228can be used to
229cause the dynamic linker to assume that it is running on a system with
230a different kernel ABI version.
231For example, the following command line causes the
232dynamic linker to assume it is running on Linux 2.2.5 when loading
43151de3 233the shared objects required by
eeb25d47
MK
234.IR myprog :
235
236.in +4n
237.nf
238$ \fBLD_ASSUME_KERNEL=2.2.5 ./myprog\fP
239.fi
240.in
241
43151de3 242On systems that provide multiple versions of a shared object
eeb25d47
MK
243(in different directories in the search path) that have
244different minimum kernel ABI version requirements,
245.BR LD_ASSUME_KERNEL
43151de3 246can be used to select the version of the object that is used
eeb25d47
MK
247(dependent on the directory search order).
248Historically, the most common use of the
8a94e783 249.BR LD_ASSUME_KERNEL
eeb25d47
MK
250feature was to manually select the older
251LinuxThreads POSIX threads implementation on systems that provided both
252LinuxThreads and NPTL
260c8fcd
MK
253(which latter was typically the default on such systems);
254see
255.BR pthreads (7).
eeb25d47 256.TP
9a741b5b 257.BR LD_BIND_NOW " (since glibc 2.1.1)"
aa796481 258If set to a nonempty string,
e1725521
MK
259causes the dynamic linker to resolve all symbols
260at program startup instead of deferring function call resolution to the point
261when they are first referenced.
262This is useful when using a debugger.
263.TP
fea681da 264.B LD_LIBRARY_PATH
75c2bb63 265A list of directories in which to search for
fea681da 266ELF libraries at execution-time.
75c2bb63 267The items in the list are separated by either colons or semicolons.
c13182ef 268Similar to the
fea681da
MK
269.B PATH
270environment variable.
6e1064d3 271This variable is ignored in secure-execution mode.
0a8909c4
MK
272
273Within the pathnames specified in
274.BR LD_LIBRARY_PATH ,
99194a09 275the dynamic linker expands the tokens
0a8909c4
MK
276.IR $ORIGIN ,
277.IR $LIB ,
278and
279.IR $PLATFORM
280(or the versions using curly braces around the names)
281as described above in
282.IR "Rpath token expansion" .
283Thus, for example,
284the following would cause a library to be searched for in either the
285.I lib
286or
287.I lib64
288subdirectory below the directory containing the program to be executed:
289
290 $ \fBLD_LIBRARY_PATH='$ORIGIN/$LIB' prog\fP
291
292(Note the use of single quotes, which prevent expansion of
99194a09 293.I $ORIGIN
0a8909c4 294and
99194a09 295.I $LIB
0a8909c4 296as shell variables!)
fea681da
MK
297.TP
298.B LD_PRELOAD
df7ef267 299A list of additional, user-specified, ELF shared
43151de3 300objects to be loaded before all others.
df7ef267 301The items of the list can be separated by spaces or colons.
43151de3
MK
302This can be used to selectively override functions in other shared objects.
303The objects are searched for using the rules given under DESCRIPTION.
e9a13381 304
24fb0923 305In secure-execution mode,
eb58a74c 306preload pathnames containing slashes are ignored,
8e7a186a
MK
307and only shared objects in the standard search directories that
308have the set-user-ID mode bit enabled are loaded.
0a8909c4 309
61c5564c
MK
310Within the names specified in the
311.BR LD_PRELOAD
99194a09 312list, the dynamic linker understands the tokens
0a8909c4
MK
313.IR $ORIGIN ,
314.IR $LIB ,
315and
316.IR $PLATFORM
317(or the versions using curly braces around the names)
318as described above in
319.IR "Rpath token expansion" .
320.\" Tested with the following:
321.\"
322.\" LD_PRELOAD='$LIB/libmod.so' LD_LIBRARY_PATH=. ./prog
323.\"
376c2e1c 324.\" which will preload the libmod.so in 'lib' or 'lib64', using it
0a8909c4 325.\" in preference to the version in '.'.
fea681da 326.TP
dc4b358f 327.BR LD_TRACE_LOADED_OBJECTS
01132bd6 328If set (to any value), causes the program to list its dynamic
fea681da
MK
329dependencies, as if run by
330.BR ldd (1),
331instead of running normally.
332.LP
333Then there are lots of more or less obscure variables,
334many obsolete or only for internal use.
335.TP
9a741b5b 336.BR LD_AUDIT " (since glibc 2.4)"
54eb2620
PB
337A colon-separated list of user-specified, ELF shared objects
338to be loaded before all others in a separate linker namespace
339(i.e., one that does not intrude upon the normal symbol bindings that
340would occur in the process).
43151de3 341These objects can be used to audit the operation of the dynamic linker.
54eb2620 342.B LD_AUDIT
24fb0923 343is ignored in secure-execution mode.
54eb2620
PB
344
345The dynamic linker will notify the audit
43151de3
MK
346shared objects at so-called auditing checkpoints\(emfor example,
347loading a new shared object, resolving a symbol,
54eb2620 348or calling a symbol from another shared object\(emby
43151de3 349calling an appropriate function within the audit shared object.
54eb2620
PB
350For details, see
351.BR rtld-audit (7).
352The auditing interface is largely compatible with that provided on Solaris,
353as described in its
354.IR "Linker and Libraries Guide" ,
355in the chapter
356.IR "Runtime Linker Auditing Interface" .
50994c10 357
61c5564c
MK
358Within the names specified in the
359.BR LD_AUDIT
99194a09 360list, the dynamic linker understands the tokens
879de6e7
MK
361.IR $ORIGIN ,
362.IR $LIB ,
363and
364.IR $PLATFORM
365(or the versions using curly braces around the names)
366as described above in
367.IR "Rpath token expansion" .
368
50994c10
MK
369Since glibc 2.13,
370.\" commit 8e9f92e9d5d7737afdacf79b76d98c4c42980508
371in secure-execution mode,
372names in the audit list that contain slashes are ignored,
373and only shared objects in the standard search directories that
374have the set-user-ID mode bit enabled are loaded.
fea681da 375.TP
9a741b5b 376.BR LD_BIND_NOT " (since glibc 2.1.95)"
963c1947
MK
377If this environment variable is set to a nonempty string,
378do not update the GOT (global offset table) and PLT (procedure linkage table)
a3a72ad2 379after resolving a function symbol.
e5e9497f
MK
380By combining the use of this variable with
381.BR LD_DEBUG
382(with the categories
383.IR bindings
384and
385.IR symbols ),
386one can observe all run-time function bindings.
fea681da 387.TP
9a741b5b 388.BR LD_DEBUG " (since glibc 2.1)"
fea681da
MK
389Output verbose debugging information about the dynamic linker.
390If set to
a3fb5696
MK
391.BR all ,
392print all debugging information,
d81099fb
MK
393Setting this variable to
394.BR help
395does not run the specified program,
396and displays a help message about which categories can be specified in this
fea681da 397environment variable.
d81099fb
MK
398The categories are:
399.RS
400.TP 12
401.I bindings
402Display information about which definition each symbol is bound to.
403.TP
404.I files
405Display progress for input file.
406.TP
407.I libs
408Display library search paths.
409.TP
410.I reloc
411Display relocation processing.
412.TP
413.I scopes
414Display scope information.
415.TP
416.I statistics
417Display relocation statistics.
418.TP
419.I symbols
420Display search paths for each symbol look-up.
421.TP
422.I unused
423Determine unused DSOs.
424.TP
425.I versions
426Display version dependencies.
427.RE
428.IP
429The value in
430.BR LD_DEBUG
431can specify multiple categories, separated by colons, commas,
432or (if the value is quoted) spaces.
433
e4c14bd9
MK
434Since glibc 2.3.4,
435.B LD_DEBUG
ae861bf1
MG
436is ignored in secure-execution mode, unless the file
437.IR /etc/suid\-debug
438exists (the content of the file is irrelevant).
fea681da 439.TP
9a741b5b 440.BR LD_DEBUG_OUTPUT " (since glibc 2.1)"
70e26d29 441File in which
fea681da 442.B LD_DEBUG
70e26d29 443output should be written.
a3e50dc1 444The default is standard error.
097585ed 445.B LD_DEBUG_OUTPUT
24fb0923 446is ignored in secure-execution mode.
fea681da 447.TP
9a741b5b 448.BR LD_DYNAMIC_WEAK " (since glibc 2.1.91)"
963c1947
MK
449If this environment variable is defined (with any value),
450allow weak symbols to be overridden (reverting to old glibc behavior).
c595ec7e
MK
451.\" See weak handling
452.\" https://www.sourceware.org/ml/libc-hacker/2000-06/msg00029.html
453.\" To: GNU libc hacker <libc-hacker at sourceware dot cygnus dot com>
454.\" Subject: weak handling
455.\" From: Ulrich Drepper <drepper at redhat dot com>
456.\" Date: 07 Jun 2000 20:08:12 -0700
457.\" Reply-To: drepper at cygnus dot com (Ulrich Drepper)
6e1064d3 458Since glibc 2.3.4,
e1725521 459.B LD_DYNAMIC_WEAK
24fb0923 460is ignored in secure-execution mode.
e1725521 461.TP
9a741b5b 462.BR LD_HWCAP_MASK " (since glibc 2.1)"
e1725521
MK
463Mask for hardware capabilities.
464.TP
9a741b5b 465.BR LD_ORIGIN_PATH " (since glibc 2.1)"
71ffb3ed 466Path where the binary is found.
24fb0923 467Since glibc 2.4,
e1725521 468.B LD_ORIGIN_PATH
24fb0923 469is ignored in secure-execution mode.
e613d016 470.\" Used only if $ORIGIN can't be determined by normal means
e1725521 471.\" (from the origin path saved at load time, or from /proc/self/exe)?
7b0cacbb 472.TP
bdf75f3e 473.BR LD_POINTER_GUARD " (glibc from 2.4 to 2.22)"
7b0cacbb
PB
474Set to 0 to disable pointer guarding.
475Any other value enables pointer guarding, which is also the default.
476Pointer guarding is a security mechanism whereby some pointers to code
477stored in writable program memory (return addresses saved by
478.BR setjmp (3)
479or function pointers used by various glibc internals) are mangled
480semi-randomly to make it more difficult for an attacker to hijack
481the pointers for use in the event of a buffer overrun or
482stack-smashing attack.
ca1c3729
MK
483Since glibc 2.23,
484.\" commit a014cecd82b71b70a6a843e250e06b541ad524f7
485.B LD_POINTER_GUARD
486can no longer be used to disable pointer guarding,
487which is now always enabled.
fea681da 488.TP
9a741b5b 489.BR LD_PROFILE " (since glibc 2.1)"
7c7a7df3 490The name of a (single) shared object to be profiled,
8a7f3759 491specified either as a pathname or a soname.
c64ea262 492Profiling output is appended to the file whose name is:
8a7f3759 493"\fI$LD_PROFILE_OUTPUT\fP/\fI$LD_PROFILE\fP.profile".
fea681da 494.TP
9a741b5b 495.BR LD_PROFILE_OUTPUT " (since glibc 2.1)"
8a7f3759 496Directory where
fea681da 497.B LD_PROFILE
8a7f3759
MK
498output should be written.
499If this variable is not defined, or is defined as an empty string,
500then the default is
501.IR /var/tmp .
097585ed 502.B LD_PROFILE_OUTPUT
8977c66c
MK
503is ignored in secure-execution mode; instead
504.IR /var/profile
505is always used.
fea681da 506.TP
9a741b5b 507.BR LD_SHOW_AUXV " (since glibc 2.1)"
b5ccc9bb
MK
508If this environment variable is defined (with any value),
509show the auxiliary array passed up from the kernel (see also
510.BR getauxval (3)).
24fb0923 511Since glibc 2.3.5,
ca2bcde1 512.B LD_SHOW_AUXV
24fb0923 513is ignored in secure-execution mode.
de2a932a 514.TP
9a741b5b 515.BR LD_TRACE_PRELINKING " (since glibc 2.4)"
f416bfde 516If this environment variable is defined,
a5817257 517trace prelinking of the object whose name is assigned to
de2a932a
MK
518this environment variable.
519(Use
520.BR ldd (1)
521to get a list of the objects that might be traced.)
522If the object name is not recognized,
523.\" (This is what seems to happen, from experimenting)
524then all prelinking activity is traced.
fea681da 525.TP
9a741b5b 526.BR LD_USE_LOAD_BIAS " (since glibc 2.3.3)"
e1725521
MK
527.\" http://sources.redhat.com/ml/libc-hacker/2003-11/msg00127.html
528.\" Subject: [PATCH] Support LD_USE_LOAD_BIAS
529.\" Jakub Jelinek
2656a3fa 530By default (i.e., if this variable is not defined),
e1725521 531executables and prelinked
43151de3 532shared objects will honor base addresses of their dependent shared objects
24b74457 533and (nonprelinked) position-independent executables (PIEs)
e1725521
MK
534and other shared objects will not honor them.
535If
536.B LD_USE_LOAD_BIAS
dc70d1ea 537is defined with the value 1, both executables and PIEs
e1725521
MK
538will honor the base addresses.
539If
540.B LD_USE_LOAD_BIAS
541is defined with the value 0,
542neither executables nor PIEs will honor the base addresses.
24fb0923 543This variable is ignored in secure-execution mode.
fea681da 544.TP
9a741b5b 545.BR LD_VERBOSE " (since glibc 2.1)"
aa796481 546If set to a nonempty string,
e1725521 547output symbol versioning information about the
2216fac7 548program if the
e1725521 549.B LD_TRACE_LOADED_OBJECTS
2216fac7 550environment variable has been set.
fea681da 551.TP
dc4b358f 552.BR LD_WARN " (since glibc 2.1.3)
aa796481 553If set to a nonempty string, warn about unresolved symbols.
fea681da 554.TP
9a741b5b 555.BR LD_PREFER_MAP_32BIT_EXEC " (x86-64 only; since glibc 2.23)"
3cdc1fc4 556According to the Intel Silvermont software optimization guide, for 64-bit
5b479f37
L
557applications, branch prediction performance can be negatively impacted
558when the target of a branch is more than 4GB away from the branch.
3cdc1fc4
MK
559If this environment variable is set (to any value),
560.BR ld.so
561will first try to map executable pages using the
562.BR mmap (2)
563.BR MAP_32BIT
564flag, and fall back to mapping without that flag if that attempt fails.
81583be9 565NB: MAP_32BIT will map to the low 2GB (not 4GB) of the address space.
3cdc1fc4
MK
566Because
567.B MAP_32BIT
568reduces the address range available for address space layout
569randomization (ASLR),
570.B LD_PREFER_MAP_32BIT_EXEC
571is always disabled in secure-execution mode.
fea681da
MK
572.SH FILES
573.PD 0
574.TP
8478ee02 575.I /lib/ld.so
fea681da
MK
576a.out dynamic linker/loader
577.TP
8478ee02 578.IR /lib/ld\-linux.so. { 1 , 2 }
fea681da
MK
579ELF dynamic linker/loader
580.TP
8478ee02 581.I /etc/ld.so.cache
fea681da 582File containing a compiled list of directories in which to search for
43151de3 583shared objects and an ordered list of candidate shared objects.
fea681da 584.TP
8478ee02 585.I /etc/ld.so.preload
43151de3 586File containing a whitespace-separated list of ELF shared objects to
fea681da 587be loaded before the program.
fea681da
MK
588.TP
589.B lib*.so*
43151de3 590shared objects
fea681da
MK
591.PD
592.SH NOTES
8ce45022 593.SS Hardware capabilities
43151de3 594Some shared objects are compiled using hardware-specific instructions which do
8ce45022 595not exist on every CPU.
43151de3 596Such objects should be installed in directories whose names define the
8ce45022
MK
597required hardware capabilities, such as
598.IR /usr/lib/sse2/ .
599The dynamic linker checks these directories against the hardware of the
43151de3 600machine and selects the most suitable version of a given shared object.
8ce45022
MK
601Hardware capability directories can be cascaded to combine CPU features.
602The list of supported hardware capability names depends on the CPU.
603The following names are currently recognized:
604.TP
605.B Alpha
606ev4, ev5, ev56, ev6, ev67
607.TP
608.B MIPS
609loongson2e, loongson2f, octeon, octeon2
610.TP
611.B PowerPC
6124xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle,
613fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601,
614ppc64, smt, spe, ucache, vsx
615.TP
616.B SPARC
617flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2
618.TP
619.B s390
620dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle,
621z900, z990, z9-109, z10, zarch
622.TP
623.B x86 (32-bit only)
624acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx,
625mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
fea681da 626.SH SEE ALSO
6b432477 627.BR ld (1),
fea681da 628.BR ldd (1),
1a7735bb 629.BR pldd (1),
cf28f98a 630.BR sprof (1),
639c8860 631.BR dlopen (3),
45fa8fcb 632.BR getauxval (3),
9894eac3 633.BR capabilities (7),
c18ecec9 634.BR rtld-audit (7),
4d96fe33
MK
635.BR ldconfig (8),
636.BR sln (8)
fea681da
MK
637.\" .SH AUTHORS
638.\" ld.so: David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
639.\" Torvalds, Lars Wirzenius and Mitch D'Souza
640.\" ld-linux.so: Roland McGrath, Ulrich Drepper and others.
641.\"
642.\" In the above, (libc5) stands for David Engel's ld.so/ld-linux.so.