1 '\" te
2 .\" Copyright 1989 AT&T
3 .\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved
4 .\" Copyright (c) 2012, Joyent, Inc. All Rights Reserved
5 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
6 .\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with
7 .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
8 .TH LD 1 "Sep 10, 2013"
9 .SH NAME
10 ld \- link-editor for object files
11 .SH SYNOPSIS
12 .LP
13 .nf
14 \fBld\fR [\fB-32\fR | \fB-64\fR] [\fB-a\fR | \fB-r\fR] [\fB-b\fR] [\fB-B\fRdirect | nodirect]
15 [\fB-B\fR dynamic | static] [\fB-B\fR eliminate] [\fB-B\fR group] [\fB-B\fR local]
16 [\fB-B\fR reduce] [\fB-B\fR symbolic] [\fB-c\fR \fIname\fR] [\fB-C\fR] [\fB-d\fR y | n]
17 [\fB-D\fR \fItoken\fR,...] [\fB-e\fR \fIepsym\fR] [\fB-f\fR \fIname\fR | \fB-F\fR \fIname\fR] [\fB-G\fR] [\fB-h\fR \fIname\fR]
18 [\fB-i\fR] [\fB-I\fR \fIname\fR] [\fB-l\fR \fIx\fR] [\fB-L\fR \fIpath\fR] [\fB-m\fR] [\fB-M\fR \fImapfile\fR]
19 [\fB-N\fR \fIstring\fR] [\fB-o\fR \fIoutfile\fR] [\fB-p\fR \fIauditlib\fR] [\fB-P\fR \fIauditlib\fR]
20 [\fB-Q\fR y | n] [\fB-R\fR \fIpath\fR] [\fB-s\fR] [\fB-S\fR \fIsupportlib\fR] [\fB-t\fR]
21 [\fB-u\fR \fIsymname\fR] [\fB-V\fR] [\fB-Y P\fR\fI,dirlist\fR] [\fB-z\fR absexec]
22 [\fB-z\fR allextract | defaultextract | weakextract ] [\fB-z\fR altexec64]
23 [\fB-z\fR assert-deflib ] [ \fB-z\fR assert-deflib=\fIlibname\fR ]
24 [\fB-z\fR combreloc | nocombreloc ] [\fB-z\fR defs | nodefs]
25 [\fB-z\fR direct | nodirect] [\fB-z\fR endfiltee]
26 [\fB-z\fR fatal-warnings | nofatal-warnings ] [\fB-z\fR finiarray=\fIfunction\fR]
27 [\fB-z\fR globalaudit] [\fB-z\fR groupperm | nogroupperm]
28 [\fB-z\fR guidance[=\fIid1\fR,\fIid2\fR...] [\fB-z\fR help ]
29 [\fB-z\fR ignore | record] [\fB-z\fR initarray=\fIfunction\fR] [\fB-z\fR initfirst]
30 [\fB-z\fR interpose] [\fB-z\fR lazyload | nolazyload]
31 [\fB-z\fR ld32=\fIarg1\fR,\fIarg2\fR,...] [\fB-z\fR ld64=\fIarg1\fR,\fIarg2\fR,...]
32 [\fB-z\fR loadfltr] [\fB-z\fR muldefs] [\fB-z\fR nocompstrtab] [\fB-z\fR nodefaultlib]
33 [\fB-z\fR nodelete] [\fB-z\fR nodlopen] [\fB-z\fR nodump] [\fB-z\fR noldynsym]
34 [\fB-z\fR nopartial] [\fB-z\fR noversion] [\fB-z\fR now] [\fB-z\fR origin]
35 [\fB-z\fR preinitarray=\fIfunction\fR] [\fB-z\fR redlocsym] [\fB-z\fR relaxreloc]
36 [\fB-z\fR rescan-now] [\fB-z\fR recan] [\fB-z\fR rescan-start \fI\&...\fR \fB-z\fR rescan-end]]
37 [\fB-z\fR target=sparc|x86] [\fB-z\fR text | textwarn | textoff]
38 [\fB-z\fR verbose] [\fB-z\fR wrap=\fIsymbol\fR] \fIfilename\fR...
39 .fi
40
41 .SH DESCRIPTION
42 .sp
43 .LP
44 The link-editor, \fBld\fR, combines relocatable object files by resolving
45 symbol references to symbol definitions, together with performing relocations.
46 \fBld\fR operates in two modes, static or dynamic, as governed by the \fB-d\fR
47 option. In all cases, the output of \fBld\fR is left in the file \fBa.out\fR by
48 default. See NOTES.
49 .sp
50 .LP
51 In dynamic mode, \fB-dy\fR, the default, relocatable object files that are
52 provided as arguments are combined to produce an executable object file. This
53 file is linked at execution with any shared object files that are provided as
54 arguments. If the \fB-G\fR option is specified, relocatable object files are
55 combined to produce a shared object. Without the \fB-G\fR option, a dynamic
56 executable is created.
57 .sp
58 .LP
59 In static mode, \fB-dn\fR, relocatable object files that are provided as
60 arguments are combined to produce a static executable file. If the \fB-r\fR
61 option is specified, relocatable object files are combined to produce one
62 relocatable object file. See \fBStatic Executables\fR.
87 For an archive library, \fBld\fR loads only those routines that define an
88 unresolved external reference. \fBld\fR searches the symbol table of the
89 archive library sequentially to resolve external references that can be
90 satisfied by library members. This search is repeated until no external
91 references can be resolved by the archive. Thus, the order of members in the
92 library is functionally unimportant, unless multiple library members exist that
93 define the same external symbol. Archive libraries that have interdependencies
94 can require multiple command line definitions, or the use of one of the
95 \fB-z\fR \fBrescan\fR options. See \fIArchive Processing\fR in \fILinker and
96 Libraries Guide\fR.
97 .sp
98 .LP
99 \fBld\fR is a cross link-editor, able to link 32-bit objects or 64-bit objects,
100 for Sparc or x86 targets. \fBld\fR uses the \fBELF\fR class and machine type of
101 the first relocatable object on the command line to govern the mode in which to
102 operate. The mixing of 32-bit objects and 64-bit objects is not permitted.
103 Similarly, only objects of a single machine type are allowed. See the
104 \fB-32\fR, \fB-64\fR and \fB-z target\fR options, and the \fBLD_NOEXEC_64\fR
105 environment variable.
106 .SS "Static Executables"
107 .sp
108 .LP
109 The creation of static executables has been discouraged for many releases. In
110 fact, 64-bit system archive libraries have never been provided. Because a
111 static executable is built against system archive libraries, the executable
112 contains system implementation details. This self-containment has a number of
113 drawbacks.
114 .RS +4
115 .TP
116 .ie t \(bu
117 .el o
118 The executable is immune to the benefits of system patches delivered as shared
119 objects. The executable therefore, must be rebuilt to take advantage of many
120 system improvements.
121 .RE
122 .RS +4
123 .TP
124 .ie t \(bu
125 .el o
126 The ability of the executable to run on future releases can be compromised.
127 .RE
128 .RS +4
129 .TP
130 .ie t \(bu
131 .el o
132 The duplication of system implementation details negatively affects system
133 performance.
134 .RE
135 .sp
136 .LP
137 With Solaris 10, 32-bit system archive libraries are no longer provided.
138 Without these libraries, specifically \fBlibc.a\fR, the creation of static
139 executables is no longer achievable without specialized system knowledge.
140 However, the capability of \fBld\fR to process static linking options, and the
141 processing of archive libraries, remains unchanged.
142 .SH OPTIONS
143 .sp
144 .LP
145 The following options are supported.
146 .sp
147 .ne 2
148 .na
149 \fB\fB-32\fR | \fB-64\fR\fR
150 .ad
151 .sp .6
152 .RS 4n
153 Creates a 32-bit, or 64-bit object.
154 .sp
155 By default, the class of the object being generated is determined from the
156 first \fBELF\fR object processed from the command line. If no objects are
157 specified, the class is determined by the first object encountered within the
158 first archive processed from the command line. If there are no objects or
159 archives, the link-editor creates a 32-bit object.
160 .sp
161 The \fB-64\fR option is required to create a 64-bit object solely from a
162 mapfile.
163 .sp
828 .RE
829
830 .sp
831 .ne 2
832 .na
833 \fB\fB-z\fR \fBaltexec64\fR\fR
834 .ad
835 .sp .6
836 .RS 4n
837 Execute the 64-bit \fBld\fR. The creation of very large 32-bit objects can
838 exhaust the virtual memory that is available to the 32-bit \fBld\fR. The
839 \fB-z\fR \fBaltexec64\fR option can be used to force the use of the associated
840 64-bit \fBld\fR. The 64-bit \fBld\fR provides a larger virtual address space
841 for building 32-bit objects. See \fIThe 32-bit link-editor and 64-bit
842 link-editor\fR in \fILinker and Libraries Guide\fR.
843 .RE
844
845 .sp
846 .ne 2
847 .na
848 \fB\fB-z\fR \fBcombreloc\fR | \fBnocombreloc\fR\fR
849 .ad
850 .sp .6
851 .RS 4n
852 By default, \fBld\fR combines multiple relocation sections when building
853 executables or shared objects. This section combination differs from
854 relocatable objects, in which relocation sections are maintained in a
855 one-to-one relationship with the sections to which the relocations must be
856 applied. The \fB-z\fR \fBnocombreloc\fR option disables this merging of
857 relocation sections, and preserves the one-to-one relationship found in the
858 original relocatable objects.
859 .sp
860 \fBld\fR sorts the entries of data relocation sections by their symbol
861 reference. This sorting reduces runtime symbol lookup. When multiple relocation
862 sections are combined, this sorting produces the least possible relocation
863 overhead when objects are loaded into memory, and speeds the runtime loading of
864 dynamic objects.
865 .sp
866 Historically, the individual relocation sections were carried over to any
867 executable or shared object, and the \fB-z\fR \fBcombreloc\fR option was
1612 __wrap_malloc(size_t c)
1613 {
1614 (void) printf("malloc called with %zu\en", c);
1615 return (__real_malloc(c));
1616 }
1617 .fi
1618 .in -2
1619
1620 If you link other code with this file using \fB-z\fR \fBwrap=malloc\fR to
1621 compile all the objects, then all calls to \fBmalloc\fR will call the function
1622 \fB__wrap_malloc\fR instead. The call to \fB__real_malloc\fR will call the real
1623 \fBmalloc\fR function.
1624 .sp
1625 The real and wrapped functions should be maintained in separate source files.
1626 Otherwise, the compiler or assembler may resolve the call instead of leaving
1627 that operation for the link-editor to carry out, and prevent the wrap from
1628 occurring.
1629 .RE
1630
1631 .SH ENVIRONMENT VARIABLES
1632 .sp
1633 .ne 2
1634 .na
1635 \fB\fBLD_ALTEXEC\fR\fR
1636 .ad
1637 .sp .6
1638 .RS 4n
1639 An alternative link-editor path name. \fBld\fR executes, and passes control to
1640 this alternative link-editor. This environment variable provides a generic
1641 means of overriding the default link-editor that is called from the various
1642 compiler drivers. See the \fB-z altexec64\fR option.
1643 .RE
1644
1645 .sp
1646 .ne 2
1647 .na
1648 \fB\fBLD_LIBRARY_PATH\fR\fR
1649 .ad
1650 .sp .6
1651 .RS 4n
1652 A list of directories in which to search for the libraries specified using the
1741 .ne 2
1742 .na
1743 \fB\fBSGS_SUPPORT\fR\fR
1744 .ad
1745 .sp .6
1746 .RS 4n
1747 Provides a colon-separated list of shared objects that are loaded with the
1748 link-editor and given information regarding the linking process. This
1749 environment variable can be specified with a _32 or _64 suffix. This makes the
1750 environment variable specific, respectively, to the 32-bit or 64-bit class of
1751 \fBld\fR and overrides any non-suffixed version of the environment variable
1752 that is in effect. See the \fB-S\fR option.
1753 .RE
1754
1755 .sp
1756 .LP
1757 Notice that environment variable-names that begin with the
1758 characters '\fBLD_\fR' are reserved for possible future enhancements to \fBld\fR and
1759 \fBld.so.1\fR(1).
1760 .SH FILES
1761 .sp
1762 .ne 2
1763 .na
1764 \fB\fBlib\fIx\fR.so\fR\fR
1765 .ad
1766 .RS 15n
1767 shared object libraries.
1768 .RE
1769
1770 .sp
1771 .ne 2
1772 .na
1773 \fB\fBlib\fIx\fR.a\fR\fR
1774 .ad
1775 .RS 15n
1776 archive libraries.
1777 .RE
1778
1779 .sp
1780 .ne 2
1781 .na
1791 \fB\fILIBPATH\fR\fR
1792 .ad
1793 .RS 15n
1794 For 32-bit libraries, the default search path is \fB/usr/ccs/lib\fR, followed
1795 by \fB/lib\fR, and finally \fB/usr/lib\fR. For 64-bit libraries, the default
1796 search path is \fB/lib/64\fR, followed by \fB/usr/lib/64\fR.
1797 .RE
1798
1799 .sp
1800 .ne 2
1801 .na
1802 \fB\fB/usr/lib/ld\fR\fR
1803 .ad
1804 .RS 15n
1805 A directory containing several \fBmapfiles\fR that can be used during
1806 link-editing. These \fBmapfiles\fR provide various capabilities, such as
1807 defining memory layouts, aligning bss, and defining non-executable stacks.
1808 .RE
1809
1810 .SH ATTRIBUTES
1811 .sp
1812 .LP
1813 See \fBattributes\fR(5) for descriptions of the following attributes:
1814 .sp
1815
1816 .sp
1817 .TS
1818 box;
1819 c | c
1820 l | l .
1821 ATTRIBUTE TYPE ATTRIBUTE VALUE
1822 _
1823 Interface Stability Committed
1824 .TE
1825
1826 .SH SEE ALSO
1827 .sp
1828 .LP
1829 \fBas\fR(1), \fBcrle\fR(1), \fBgprof\fR(1), \fBld.so.1\fR(1), \fBldd\fR(1),
1830 \fBmcs\fR(1), \fBpvs\fR(1), \fBexec\fR(2), \fBstat\fR(2), \fBdlopen\fR(3C),
1831 \fBdldump\fR(3C), \fBelf\fR(3ELF), \fBar.h\fR(3HEAD), \fBa.out\fR(4),
1832 \fBattributes\fR(5)
1833 .sp
1834 .LP
1835 \fILinker and Libraries Guide\fR
1836 .SH NOTES
1837 .sp
1838 .LP
1839 Default options applied by \fBld\fR are maintained for historic reasons. In
1840 today's programming environment, where dynamic objects dominate, alternative
1841 defaults would often make more sense. However, historic defaults must be
1842 maintained to ensure compatibility with existing program development
1843 environments. Historic defaults are called out wherever possible in this
1844 manual. For a description of the current recommended options, see Appendix A,
1845 \fILink-Editor Quick Reference,\fR in \fILinker and Libraries Guide\fR.
1846 .sp
1847 .LP
1848 If the file being created by \fBld\fR already exists, the file is unlinked
1849 after all input files have been processed. A new file with the specified name
1850 is then created. This allows \fBld\fR to create a new version of the file,
1851 while simultaneously allowing existing processes that are accessing the old
1852 file contents to continue running. If the old file has no other links, the disk
1853 space of the removed file is freed when the last process referencing the file
1854 terminates.
1855 .sp
1856 .LP
1857 The behavior of \fBld\fR when the file being created already exists was changed
|
1 '\" te
2 .\" Copyright 1989 AT&T
3 .\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved
4 .\" Copyright (c) 2012, Joyent, Inc. All Rights Reserved
5 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
6 .\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with
7 .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
8 .TH LD 1 "Jun 6, 2016"
9 .SH NAME
10 ld \- link-editor for object files
11 .SH SYNOPSIS
12 .LP
13 .nf
14 \fBld\fR [\fB-32\fR | \fB-64\fR] [\fB-a\fR | \fB-r\fR] [\fB-b\fR] [\fB-B\fRdirect | nodirect]
15 [\fB-B\fR dynamic | static] [\fB-B\fR eliminate] [\fB-B\fR group] [\fB-B\fR local]
16 [\fB-B\fR reduce] [\fB-B\fR symbolic] [\fB-c\fR \fIname\fR] [\fB-C\fR] [\fB-d\fR y | n]
17 [\fB-D\fR \fItoken\fR,...] [\fB-e\fR \fIepsym\fR] [\fB-f\fR \fIname\fR | \fB-F\fR \fIname\fR] [\fB-G\fR] [\fB-h\fR \fIname\fR]
18 [\fB-i\fR] [\fB-I\fR \fIname\fR] [\fB-l\fR \fIx\fR] [\fB-L\fR \fIpath\fR] [\fB-m\fR] [\fB-M\fR \fImapfile\fR]
19 [\fB-N\fR \fIstring\fR] [\fB-o\fR \fIoutfile\fR] [\fB-p\fR \fIauditlib\fR] [\fB-P\fR \fIauditlib\fR]
20 [\fB-Q\fR y | n] [\fB-R\fR \fIpath\fR] [\fB-s\fR] [\fB-S\fR \fIsupportlib\fR] [\fB-t\fR]
21 [\fB-u\fR \fIsymname\fR] [\fB-V\fR] [\fB-Y P\fR\fI,dirlist\fR] [\fB-z\fR absexec]
22 [\fB-z\fR allextract | defaultextract | weakextract ] [\fB-z\fR altexec64]
23 [\fB-z\fR aslr[=\fIstate\fR]] [\fB-z\fR assert-deflib] [ \fB-z\fR assert-deflib=\fIlibname\fR]
24 [\fB-z\fR combreloc | nocombreloc ] [\fB-z\fR defs | nodefs]
25 [\fB-z\fR direct | nodirect] [\fB-z\fR endfiltee]
26 [\fB-z\fR fatal-warnings | nofatal-warnings ] [\fB-z\fR finiarray=\fIfunction\fR]
27 [\fB-z\fR globalaudit] [\fB-z\fR groupperm | nogroupperm]
28 [\fB-z\fR guidance[=\fIid1\fR,\fIid2\fR...] [\fB-z\fR help ]
29 [\fB-z\fR ignore | record] [\fB-z\fR initarray=\fIfunction\fR] [\fB-z\fR initfirst]
30 [\fB-z\fR interpose] [\fB-z\fR lazyload | nolazyload]
31 [\fB-z\fR ld32=\fIarg1\fR,\fIarg2\fR,...] [\fB-z\fR ld64=\fIarg1\fR,\fIarg2\fR,...]
32 [\fB-z\fR loadfltr] [\fB-z\fR muldefs] [\fB-z\fR nocompstrtab] [\fB-z\fR nodefaultlib]
33 [\fB-z\fR nodelete] [\fB-z\fR nodlopen] [\fB-z\fR nodump] [\fB-z\fR noldynsym]
34 [\fB-z\fR nopartial] [\fB-z\fR noversion] [\fB-z\fR now] [\fB-z\fR origin]
35 [\fB-z\fR preinitarray=\fIfunction\fR] [\fB-z\fR redlocsym] [\fB-z\fR relaxreloc]
36 [\fB-z\fR rescan-now] [\fB-z\fR recan] [\fB-z\fR rescan-start \fI\&...\fR \fB-z\fR rescan-end]]
37 [\fB-z\fR target=sparc|x86] [\fB-z\fR text | textwarn | textoff]
38 [\fB-z\fR verbose] [\fB-z\fR wrap=\fIsymbol\fR] \fIfilename\fR...
39 .fi
40
41 .SH DESCRIPTION
42 .LP
43 The link-editor, \fBld\fR, combines relocatable object files by resolving
44 symbol references to symbol definitions, together with performing relocations.
45 \fBld\fR operates in two modes, static or dynamic, as governed by the \fB-d\fR
46 option. In all cases, the output of \fBld\fR is left in the file \fBa.out\fR by
47 default. See NOTES.
48 .sp
49 .LP
50 In dynamic mode, \fB-dy\fR, the default, relocatable object files that are
51 provided as arguments are combined to produce an executable object file. This
52 file is linked at execution with any shared object files that are provided as
53 arguments. If the \fB-G\fR option is specified, relocatable object files are
54 combined to produce a shared object. Without the \fB-G\fR option, a dynamic
55 executable is created.
56 .sp
57 .LP
58 In static mode, \fB-dn\fR, relocatable object files that are provided as
59 arguments are combined to produce a static executable file. If the \fB-r\fR
60 option is specified, relocatable object files are combined to produce one
61 relocatable object file. See \fBStatic Executables\fR.
86 For an archive library, \fBld\fR loads only those routines that define an
87 unresolved external reference. \fBld\fR searches the symbol table of the
88 archive library sequentially to resolve external references that can be
89 satisfied by library members. This search is repeated until no external
90 references can be resolved by the archive. Thus, the order of members in the
91 library is functionally unimportant, unless multiple library members exist that
92 define the same external symbol. Archive libraries that have interdependencies
93 can require multiple command line definitions, or the use of one of the
94 \fB-z\fR \fBrescan\fR options. See \fIArchive Processing\fR in \fILinker and
95 Libraries Guide\fR.
96 .sp
97 .LP
98 \fBld\fR is a cross link-editor, able to link 32-bit objects or 64-bit objects,
99 for Sparc or x86 targets. \fBld\fR uses the \fBELF\fR class and machine type of
100 the first relocatable object on the command line to govern the mode in which to
101 operate. The mixing of 32-bit objects and 64-bit objects is not permitted.
102 Similarly, only objects of a single machine type are allowed. See the
103 \fB-32\fR, \fB-64\fR and \fB-z target\fR options, and the \fBLD_NOEXEC_64\fR
104 environment variable.
105 .SS "Static Executables"
106 .LP
107 The creation of static executables has been discouraged for many releases. In
108 fact, 64-bit system archive libraries have never been provided. Because a
109 static executable is built against system archive libraries, the executable
110 contains system implementation details. This self-containment has a number of
111 drawbacks.
112 .RS +4
113 .TP
114 .ie t \(bu
115 .el o
116 The executable is immune to the benefits of system patches delivered as shared
117 objects. The executable therefore, must be rebuilt to take advantage of many
118 system improvements.
119 .RE
120 .RS +4
121 .TP
122 .ie t \(bu
123 .el o
124 The ability of the executable to run on future releases can be compromised.
125 .RE
126 .RS +4
127 .TP
128 .ie t \(bu
129 .el o
130 The duplication of system implementation details negatively affects system
131 performance.
132 .RE
133 .sp
134 .LP
135 With Solaris 10, 32-bit system archive libraries are no longer provided.
136 Without these libraries, specifically \fBlibc.a\fR, the creation of static
137 executables is no longer achievable without specialized system knowledge.
138 However, the capability of \fBld\fR to process static linking options, and the
139 processing of archive libraries, remains unchanged.
140 .SH OPTIONS
141 .LP
142 The following options are supported.
143 .sp
144 .ne 2
145 .na
146 \fB\fB-32\fR | \fB-64\fR\fR
147 .ad
148 .sp .6
149 .RS 4n
150 Creates a 32-bit, or 64-bit object.
151 .sp
152 By default, the class of the object being generated is determined from the
153 first \fBELF\fR object processed from the command line. If no objects are
154 specified, the class is determined by the first object encountered within the
155 first archive processed from the command line. If there are no objects or
156 archives, the link-editor creates a 32-bit object.
157 .sp
158 The \fB-64\fR option is required to create a 64-bit object solely from a
159 mapfile.
160 .sp
825 .RE
826
827 .sp
828 .ne 2
829 .na
830 \fB\fB-z\fR \fBaltexec64\fR\fR
831 .ad
832 .sp .6
833 .RS 4n
834 Execute the 64-bit \fBld\fR. The creation of very large 32-bit objects can
835 exhaust the virtual memory that is available to the 32-bit \fBld\fR. The
836 \fB-z\fR \fBaltexec64\fR option can be used to force the use of the associated
837 64-bit \fBld\fR. The 64-bit \fBld\fR provides a larger virtual address space
838 for building 32-bit objects. See \fIThe 32-bit link-editor and 64-bit
839 link-editor\fR in \fILinker and Libraries Guide\fR.
840 .RE
841
842 .sp
843 .ne 2
844 .na
845 \fB-z\fR \fBaslr[=\fIstate\fR]\fR
846 .ad
847 .sp .6
848 .RS 4n
849 Specify whether the executable's address space should be randomized on
850 execution. If \fIstate\fR is "enabled" randomization will always occur when
851 this executable is run (regardless of inherited settings). If \fIstate\fR is
852 "disabled" randomization will never occur when this executable is run. If
853 \fIstate\fR is omitted, ASLR is enabled.
854
855 An executable that should simply use the settings inherited from its
856 environment should not use this flag at all.
857 .RE
858
859 .sp
860 .ne 2
861 .na
862 \fB\fB-z\fR \fBcombreloc\fR | \fBnocombreloc\fR\fR
863 .ad
864 .sp .6
865 .RS 4n
866 By default, \fBld\fR combines multiple relocation sections when building
867 executables or shared objects. This section combination differs from
868 relocatable objects, in which relocation sections are maintained in a
869 one-to-one relationship with the sections to which the relocations must be
870 applied. The \fB-z\fR \fBnocombreloc\fR option disables this merging of
871 relocation sections, and preserves the one-to-one relationship found in the
872 original relocatable objects.
873 .sp
874 \fBld\fR sorts the entries of data relocation sections by their symbol
875 reference. This sorting reduces runtime symbol lookup. When multiple relocation
876 sections are combined, this sorting produces the least possible relocation
877 overhead when objects are loaded into memory, and speeds the runtime loading of
878 dynamic objects.
879 .sp
880 Historically, the individual relocation sections were carried over to any
881 executable or shared object, and the \fB-z\fR \fBcombreloc\fR option was
1626 __wrap_malloc(size_t c)
1627 {
1628 (void) printf("malloc called with %zu\en", c);
1629 return (__real_malloc(c));
1630 }
1631 .fi
1632 .in -2
1633
1634 If you link other code with this file using \fB-z\fR \fBwrap=malloc\fR to
1635 compile all the objects, then all calls to \fBmalloc\fR will call the function
1636 \fB__wrap_malloc\fR instead. The call to \fB__real_malloc\fR will call the real
1637 \fBmalloc\fR function.
1638 .sp
1639 The real and wrapped functions should be maintained in separate source files.
1640 Otherwise, the compiler or assembler may resolve the call instead of leaving
1641 that operation for the link-editor to carry out, and prevent the wrap from
1642 occurring.
1643 .RE
1644
1645 .SH ENVIRONMENT VARIABLES
1646 .ne 2
1647 .na
1648 \fB\fBLD_ALTEXEC\fR\fR
1649 .ad
1650 .sp .6
1651 .RS 4n
1652 An alternative link-editor path name. \fBld\fR executes, and passes control to
1653 this alternative link-editor. This environment variable provides a generic
1654 means of overriding the default link-editor that is called from the various
1655 compiler drivers. See the \fB-z altexec64\fR option.
1656 .RE
1657
1658 .sp
1659 .ne 2
1660 .na
1661 \fB\fBLD_LIBRARY_PATH\fR\fR
1662 .ad
1663 .sp .6
1664 .RS 4n
1665 A list of directories in which to search for the libraries specified using the
1754 .ne 2
1755 .na
1756 \fB\fBSGS_SUPPORT\fR\fR
1757 .ad
1758 .sp .6
1759 .RS 4n
1760 Provides a colon-separated list of shared objects that are loaded with the
1761 link-editor and given information regarding the linking process. This
1762 environment variable can be specified with a _32 or _64 suffix. This makes the
1763 environment variable specific, respectively, to the 32-bit or 64-bit class of
1764 \fBld\fR and overrides any non-suffixed version of the environment variable
1765 that is in effect. See the \fB-S\fR option.
1766 .RE
1767
1768 .sp
1769 .LP
1770 Notice that environment variable-names that begin with the
1771 characters '\fBLD_\fR' are reserved for possible future enhancements to \fBld\fR and
1772 \fBld.so.1\fR(1).
1773 .SH FILES
1774 .ne 2
1775 .na
1776 \fB\fBlib\fIx\fR.so\fR\fR
1777 .ad
1778 .RS 15n
1779 shared object libraries.
1780 .RE
1781
1782 .sp
1783 .ne 2
1784 .na
1785 \fB\fBlib\fIx\fR.a\fR\fR
1786 .ad
1787 .RS 15n
1788 archive libraries.
1789 .RE
1790
1791 .sp
1792 .ne 2
1793 .na
1803 \fB\fILIBPATH\fR\fR
1804 .ad
1805 .RS 15n
1806 For 32-bit libraries, the default search path is \fB/usr/ccs/lib\fR, followed
1807 by \fB/lib\fR, and finally \fB/usr/lib\fR. For 64-bit libraries, the default
1808 search path is \fB/lib/64\fR, followed by \fB/usr/lib/64\fR.
1809 .RE
1810
1811 .sp
1812 .ne 2
1813 .na
1814 \fB\fB/usr/lib/ld\fR\fR
1815 .ad
1816 .RS 15n
1817 A directory containing several \fBmapfiles\fR that can be used during
1818 link-editing. These \fBmapfiles\fR provide various capabilities, such as
1819 defining memory layouts, aligning bss, and defining non-executable stacks.
1820 .RE
1821
1822 .SH ATTRIBUTES
1823 .LP
1824 See \fBattributes\fR(5) for descriptions of the following attributes:
1825 .sp
1826
1827 .sp
1828 .TS
1829 box;
1830 c | c
1831 l | l .
1832 ATTRIBUTE TYPE ATTRIBUTE VALUE
1833 _
1834 Interface Stability Committed
1835 .TE
1836
1837 .SH SEE ALSO
1838 .LP
1839 \fBas\fR(1), \fBcrle\fR(1), \fBgprof\fR(1), \fBld.so.1\fR(1), \fBldd\fR(1),
1840 \fBmcs\fR(1), \fBpvs\fR(1), \fBexec\fR(2), \fBstat\fR(2), \fBdlopen\fR(3C),
1841 \fBdldump\fR(3C), \fBelf\fR(3ELF), \fBar.h\fR(3HEAD), \fBa.out\fR(4),
1842 \fBattributes\fR(5)
1843 .sp
1844 .LP
1845 \fILinker and Libraries Guide\fR
1846 .SH NOTES
1847 .LP
1848 Default options applied by \fBld\fR are maintained for historic reasons. In
1849 today's programming environment, where dynamic objects dominate, alternative
1850 defaults would often make more sense. However, historic defaults must be
1851 maintained to ensure compatibility with existing program development
1852 environments. Historic defaults are called out wherever possible in this
1853 manual. For a description of the current recommended options, see Appendix A,
1854 \fILink-Editor Quick Reference,\fR in \fILinker and Libraries Guide\fR.
1855 .sp
1856 .LP
1857 If the file being created by \fBld\fR already exists, the file is unlinked
1858 after all input files have been processed. A new file with the specified name
1859 is then created. This allows \fBld\fR to create a new version of the file,
1860 while simultaneously allowing existing processes that are accessing the old
1861 file contents to continue running. If the old file has no other links, the disk
1862 space of the removed file is freed when the last process referencing the file
1863 terminates.
1864 .sp
1865 .LP
1866 The behavior of \fBld\fR when the file being created already exists was changed
|