Index: b/usr/src/cmd/sgs/ld/Makefile.com =================================================================== --- a/usr/src/cmd/sgs/ld/Makefile.com +++ b/usr/src/cmd/sgs/ld/Makefile.com @@ -23,7 +23,7 @@ # Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. # -PROG = ld +PROG = sunld include $(SRC)/cmd/Makefile.cmd include $(SRC)/cmd/sgs/Makefile.com @@ -38,8 +38,8 @@ MAPFILES = ../common/mapfile-intf $(MAPF MAPOPTS = $(MAPFILES:%=-M%) LDFLAGS += $(VERSREF) $(CC_USE_PROTO) $(MAPOPTS) $(VAR_LD_LLDFLAGS) -LDLIBS += $(LDLIBDIR) $(LD_LIB) $(ELFLIBDIR) -lelf \ - $(LDDBGLIBDIR) $(LDDBG_LIB) $(CONVLIBDIR) $(CONV_LIB) +LDLIBS += $(LD_LIB) -lsunelf \ + $(LDDBG_LIB) $(CONV_LIB) CERRWARN += -_gcc=-Wno-switch CERRWARN += -_gcc=-Wno-parentheses Index: b/usr/src/cmd/sgs/ld/Makefile.targ =================================================================== --- a/usr/src/cmd/sgs/ld/Makefile.targ +++ b/usr/src/cmd/sgs/ld/Makefile.targ @@ -29,7 +29,7 @@ all: $(PROG) package \ -install: all $(VAR_SGSBINPROG) $(VAR_SGSCCSLINK) +install: all $(VAR_SGSBINPROG) %.o: ../common/%.c $(COMPILE.c) $< Index: b/usr/src/cmd/sgs/ld/common/ld.c =================================================================== --- a/usr/src/cmd/sgs/ld/common/ld.c +++ b/usr/src/cmd/sgs/ld/common/ld.c @@ -313,14 +313,6 @@ getmore: break; case 'z': -#if !defined(_LP64) - /* -z altexec64 */ - if (strncmp(optarg, MSG_ORIG(MSG_ARG_ALTEXEC64), - MSG_ARG_ALTEXEC64_SIZE) == 0) { - ldclass = ELFCLASS64; - break; - } -#endif /* -z target=platform */ if (strncmp(optarg, MSG_ORIG(MSG_ARG_TARGET), MSG_ARG_TARGET_SIZE) == 0) { Index: b/usr/src/cmd/sgs/libld/common/libld.msg =================================================================== --- a/usr/src/cmd/sgs/libld/common/libld.msg +++ b/usr/src/cmd/sgs/libld/common/libld.msg @@ -142,7 +142,6 @@ allow extraction of\n\ \t\t\tarchive members to resolve weak references from \ \n\t\t\t\archive files\n" -@ MSG_ARG_DETAIL_ZAL "\t[-z altexec64]\texecute the 64-bit link-editor\n" @ MSG_ARG_DETAIL_ZADLIB "\t[-z assert-deflib]\n\ \t\t\tenables warnings for linking with libraries in \ the \n\t\t\tdefault search path\n\ Index: b/usr/src/cmd/sgs/libld/common/args.c =================================================================== --- a/usr/src/cmd/sgs/libld/common/args.c +++ b/usr/src/cmd/sgs/libld/common/args.c @@ -184,7 +184,6 @@ usage_mesg(Boolean detail) (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_CY)); (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZA)); (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZAE)); - (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZAL)); (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZADLIB)); (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZC)); (void) fprintf(stderr, MSG_INTL(MSG_ARG_DETAIL_ZDEF)); Index: b/usr/src/man/man1/ld.1 =================================================================== --- a/usr/src/man/man1/ld.1 +++ b/usr/src/man/man1/ld.1 @@ -5,13 +5,13 @@ .\" 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. .\" 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 .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.TH LD 1 "Sep 10, 2013" +.TH SUNLD 1 "Sep 10, 2013" .SH NAME -ld \- link-editor for object files +sunld \- link-editor for object files .SH SYNOPSIS .LP .nf -\fBld\fR [\fB-32\fR | \fB-64\fR] [\fB-a\fR | \fB-r\fR] [\fB-b\fR] [\fB-B\fRdirect | nodirect] +\fBsunld\fR [\fB-32\fR | \fB-64\fR] [\fB-a\fR | \fB-r\fR] [\fB-b\fR] [\fB-B\fRdirect | nodirect] [\fB-B\fR dynamic | static] [\fB-B\fR eliminate] [\fB-B\fR group] [\fB-B\fR local] [\fB-B\fR reduce] [\fB-B\fR symbolic] [\fB-c\fR \fIname\fR] [\fB-C\fR] [\fB-d\fR y | n] [\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] @@ -19,7 +19,7 @@ ld \- link-editor for object files [\fB-N\fR \fIstring\fR] [\fB-o\fR \fIoutfile\fR] [\fB-p\fR \fIauditlib\fR] [\fB-P\fR \fIauditlib\fR] [\fB-Q\fR y | n] [\fB-R\fR \fIpath\fR] [\fB-s\fR] [\fB-S\fR \fIsupportlib\fR] [\fB-t\fR] [\fB-u\fR \fIsymname\fR] [\fB-V\fR] [\fB-Y P\fR\fI,dirlist\fR] [\fB-z\fR absexec] -[\fB-z\fR allextract | defaultextract | weakextract ] [\fB-z\fR altexec64] +[\fB-z\fR allextract | defaultextract | weakextract ] [\fB-z\fR assert-deflib ] [ \fB-z\fR assert-deflib=\fIlibname\fR ] [\fB-z\fR combreloc | nocombreloc ] [\fB-z\fR defs | nodefs] [\fB-z\fR direct | nodirect] [\fB-z\fR endfiltee] @@ -41,10 +41,10 @@ ld \- link-editor for object files .SH DESCRIPTION .sp .LP -The link-editor, \fBld\fR, combines relocatable object files by resolving +The link-editor, \fBsunld\fR, combines relocatable object files by resolving symbol references to symbol definitions, together with performing relocations. -\fBld\fR operates in two modes, static or dynamic, as governed by the \fB-d\fR -option. In all cases, the output of \fBld\fR is left in the file \fBa.out\fR by +\fBsunld\fR operates in two modes, static or dynamic, as governed by the \fB-d\fR +option. In all cases, the output of \fBsunld\fR is left in the file \fBa.out\fR by default. See NOTES. .sp .LP @@ -64,12 +64,12 @@ relocatable object file. See \fBStatic E .LP Dynamic linking is the most common model for combining relocatable objects, and the eventual creation of processes within Solaris. This environment tightly -couples the work of the link-editor and the runtime linker, \fBld.so.1\fR(1). +couples the work of the link-editor and the runtime linker, \fBsunld.so.1\fR(1). Both of these utilities, together with their related technologies and utilities, are extensively documented in the \fILinker and Libraries Guide\fR. .sp .LP -If any argument is a library, \fBld\fR by default searches the library exactly +If any argument is a library, \fBsunld\fR by default searches the library exactly once at the point the library is encountered on the argument list. The library can be either a shared object or relocatable archive. See \fBar.h\fR(3HEAD)). .sp @@ -84,8 +84,8 @@ defined in the shared object are made av See Chapter 4, \fIShared Objects,\fR in \fILinker and Libraries Guide\fR .sp .LP -For an archive library, \fBld\fR loads only those routines that define an -unresolved external reference. \fBld\fR searches the symbol table of the +For an archive library, \fBsunld\fR loads only those routines that define an +unresolved external reference. \fBsunld\fR searches the symbol table of the archive library sequentially to resolve external references that can be satisfied by library members. This search is repeated until no external references can be resolved by the archive. Thus, the order of members in the @@ -96,8 +96,8 @@ can require multiple command line defini Libraries Guide\fR. .sp .LP -\fBld\fR is a cross link-editor, able to link 32-bit objects or 64-bit objects, -for Sparc or x86 targets. \fBld\fR uses the \fBELF\fR class and machine type of +\fBsunld\fR is a cross link-editor, able to link 32-bit objects or 64-bit objects, +for Sparc or x86 targets. \fBsunld\fR uses the \fBELF\fR class and machine type of the first relocatable object on the command line to govern the mode in which to operate. The mixing of 32-bit objects and 64-bit objects is not permitted. Similarly, only objects of a single machine type are allowed. See the @@ -137,7 +137,7 @@ performance. With Solaris 10, 32-bit system archive libraries are no longer provided. Without these libraries, specifically \fBlibc.a\fR, the creation of static executables is no longer achievable without specialized system knowledge. -However, the capability of \fBld\fR to process static linking options, and the +However, the capability of \fBsunld\fR to process static linking options, and the processing of archive libraries, remains unchanged. .SH OPTIONS .sp @@ -330,7 +330,7 @@ symbols to their definitions, if availab references to global symbols within shared objects are not bound until runtime, even if definitions are available. This model allows definitions of the same symbol in an executable or other shared object to override the object's own -definition. \fBld\fR issues warnings for undefined symbols unless \fB-z\fR +definition. \fBsunld\fR issues warnings for undefined symbols unless \fB-z\fR \fBdefs\fR overrides. .sp The \fB-B\fR \fBsymbolic\fR option is intended for specialized dynamic objects @@ -368,8 +368,8 @@ Demangles C++ symbol names displayed in .ad .sp .6 .RS 4n -When \fB-d\fR \fBy\fR, the default, is specified, \fBld\fR uses dynamic -linking. When \fB-d\fR \fBn\fR is specified, \fBld\fR uses static linking. See +When \fB-d\fR \fBy\fR, the default, is specified, \fBsunld\fR uses dynamic +linking. When \fB-d\fR \fBn\fR is specified, \fBsunld\fR uses static linking. See \fBStatic Executables\fR under DESCRIPTION, and \fB-B\fR \fBdynamic\fR|\fBstatic\fR. .RE @@ -496,7 +496,7 @@ search, which would interfere with the l When building an executable, uses \fIname\fR as the path name of the interpreter to be written into the program header. The default in static mode is no interpreter. In dynamic mode, the default is the name of the runtime -linker, \fBld.so.1\fR(1). Either case can be overridden by \fB-I\fR \fIname\fR. +linker, \fBsunld.so.1\fR(1). Either case can be overridden by \fB-I\fR \fIname\fR. \fBexec\fR(2) loads this interpreter when the \fBa.out\fR is loaded, and passes control to the interpreter rather than to the \fBa.out\fR directly. .RE @@ -514,16 +514,16 @@ control to the interpreter rather than t .RS 4n Searches a library \fBlib\fR\fIx\fR\fB\&.so\fR or \fBlib\fR\fIx\fR\fB\&.a\fR, the conventional names for shared object and archive libraries, respectively. -In dynamic mode, unless the \fB-B\fR \fBstatic\fR option is in effect, \fBld\fR +In dynamic mode, unless the \fB-B\fR \fBstatic\fR option is in effect, \fBsunld\fR searches each directory specified in the library search path for a \fBlib\fR\fIx\fR\fB\&.so\fR or \fBlib\fR\fIx\fR\fB\&.a\fR file. The directory -search stops at the first directory containing either. \fBld\fR chooses the +search stops at the first directory containing either. \fBsunld\fR chooses the file ending in \fB\&.so\fR if \fB-l\fR\fIx\fR expands to two files with names of the form \fBlib\fR\fIx\fR\fB\&.so\fR and \fBlib\fR\fIx\fR\fB\&.a\fR. If no -\fBlib\fR\fIx\fR\fB\&.so\fR is found, then \fBld\fR accepts +\fBlib\fR\fIx\fR\fB\&.so\fR is found, then \fBsunld\fR accepts \fBlib\fR\fIx\fR\fB\&.a\fR. In static mode, or when the \fB-B\fR \fBstatic\fR -option is in effect, \fBld\fR selects only the file ending in \fB\&.a\fR. -\fBld\fR searches a library when the library is encountered, so the placement +option is in effect, \fBsunld\fR selects only the file ending in \fB\&.a\fR. +\fBsunld\fR searches a library when the library is encountered, so the placement of \fB-l\fR is significant. See \fILinking With Additional Libraries\fR in \fILinker and Libraries Guide\fR. .RE @@ -539,7 +539,7 @@ of \fB-l\fR is significant. See \fILinki .ad .sp .6 .RS 4n -Adds \fIpath\fR to the library search directories. \fBld\fR searches for +Adds \fIpath\fR to the library search directories. \fBsunld\fR searches for libraries first in any directories specified by the \fB-L\fR options and then in the standard directories. This option is useful only if the option precedes the \fB-l\fR options to which the \fB-L\fR option applies. See \fIDirectories @@ -569,7 +569,7 @@ any non-fatal multiply-defined symbols, .ad .sp .6 .RS 4n -Reads \fImapfile\fR as a text file of directives to \fBld\fR. This option can +Reads \fImapfile\fR as a text file of directives to \fBsunld\fR. This option can be specified multiple times. If \fImapfile\fR is a directory, then all regular files, as defined by \fBstat\fR(2), within the directory are processed. See Chapter 9, \fIMapfile Option,\fR in \fILinker and Libraries Guide\fR. Example @@ -645,9 +645,9 @@ Guide\fR. .sp .6 .RS 4n Under \fB-Q\fR \fBy\fR, an \fBident\fR string is added to the \fB\&.comment\fR -section of the output file. This string identifies the version of the \fBld\fR -used to create the file. This results in multiple \fBld\fR \fBidents\fR when -there have been multiple linking steps, such as when using \fBld\fR \fB-r\fR. +section of the output file. This string identifies the version of the \fBsunld\fR +used to create the file. This results in multiple \fBsunld\fR \fBidents\fR when +there have been multiple linking steps, such as when using \fBsunld\fR \fB-r\fR. This identification is identical with the default action of the \fBcc\fR command. \fB-Q\fR \fBn\fR suppresses version identification. \fB\&.comment\fR sections can be manipulated by the \fBmcs\fR(1) utility. @@ -665,7 +665,7 @@ sections can be manipulated by the \fBmc .sp .6 .RS 4n Combines relocatable object files to produce one relocatable object file. -\fBld\fR does not complain about unresolved references. This option cannot be +\fBsunld\fR does not complain about unresolved references. This option cannot be used with the \fB-a\fR option. .RE @@ -728,7 +728,7 @@ and \fB-z\fR \fBnoldynsym\fR options. .ad .sp .6 .RS 4n -The shared object \fIsupportlib\fR is loaded with \fBld\fR and given +The shared object \fIsupportlib\fR is loaded with \fBsunld\fR and given information regarding the linking process. Shared objects that are defined by using the \fB-S\fR option can also be supplied using the \fBSGS_SUPPORT\fR environment variable. See \fILink-Editor Support Interface\fR in \fILinker and @@ -776,7 +776,7 @@ Additional Symbols with the u option\fR .ad .sp .6 .RS 4n -Outputs a message giving information about the version of \fBld\fR being used. +Outputs a message giving information about the version of \fBsunld\fR being used. .RE .sp @@ -830,26 +830,11 @@ Guide\fR. .sp .ne 2 .na -\fB\fB-z\fR \fBaltexec64\fR\fR -.ad -.sp .6 -.RS 4n -Execute the 64-bit \fBld\fR. The creation of very large 32-bit objects can -exhaust the virtual memory that is available to the 32-bit \fBld\fR. The -\fB-z\fR \fBaltexec64\fR option can be used to force the use of the associated -64-bit \fBld\fR. The 64-bit \fBld\fR provides a larger virtual address space -for building 32-bit objects. See \fIThe 32-bit link-editor and 64-bit -link-editor\fR in \fILinker and Libraries Guide\fR. -.RE - -.sp -.ne 2 -.na \fB\fB-z\fR \fBcombreloc\fR | \fBnocombreloc\fR\fR .ad .sp .6 .RS 4n -By default, \fBld\fR combines multiple relocation sections when building +By default, \fBsunld\fR combines multiple relocation sections when building executables or shared objects. This section combination differs from relocatable objects, in which relocation sections are maintained in a one-to-one relationship with the sections to which the relocations must be @@ -857,7 +842,7 @@ applied. The \fB-z\fR \fBnocombreloc\fR relocation sections, and preserves the one-to-one relationship found in the original relocatable objects. .sp -\fBld\fR sorts the entries of data relocation sections by their symbol +\fBsunld\fR sorts the entries of data relocation sections by their symbol reference. This sorting reduces runtime symbol lookup. When multiple relocation sections are combined, this sorting produces the least possible relocation overhead when objects are loaded into memory, and speeds the runtime loading of @@ -996,7 +981,7 @@ Auditing Interface\fR in \fILinker and L .sp An auditor established with the \fB-P\fR option and the \fB-z\fR \fBglobalaudit\fR option, is equivalent to the auditor being established with -the \fBLD_AUDIT\fR environment variable. See \fBld.so.1\fR(1). +the \fBLD_AUDIT\fR environment variable. See \fBsunld.so.1\fR(1). .RE .sp @@ -1215,7 +1200,7 @@ and Libraries Guide\fR. .RS 4n The class of the link-editor is affected by the class of the output file being created and by the capabilities of the underlying operating system. The -\fB-z\fR \fBld\fR[\fB32\fR|\fB64\fR] options provide a means of defining any +\fB-z\fR \fBsunld\fR[\fB32\fR|\fB64\fR] options provide a means of defining any link-editor argument. The defined argument is only interpreted, respectively, by the 32-bit class or 64-bit class of the link-editor. .sp @@ -1224,7 +1209,7 @@ support library can be ensured using: .sp .in +2 .nf -\fBld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ...\fR +\fBsunld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ...\fR .fi .in -2 .sp @@ -1232,7 +1217,7 @@ support library can be ensured using: The class of link-editor that is invoked is determined from the \fBELF\fR class of the first relocatable file that is seen on the command line. This determination is carried out \fBprior\fR to any \fB-z\fR -\fBld\fR[\fB32\fR|\fB64\fR] processing. +\fBsunld\fR[\fB32\fR|\fB64\fR] processing. .RE .sp @@ -1246,7 +1231,7 @@ Marks a filter to indicate that filtees runtime. Normally, filter processing is delayed until a symbol reference is bound to the filter. The runtime processing of an object that contains this flag mimics that which occurs if the \fBLD_LOADFLTR\fR environment variable is -in effect. See the \fBld.so.1\fR(1). +in effect. See the \fBsunld.so.1\fR(1). .RE .sp @@ -1385,7 +1370,7 @@ Does not record any versioning sections. Marks the object as requiring non-lazy runtime binding. This mode is similar to adding the object to the process by using \fBdlopen\fR(3C) with the \fBRTLD_NOW\fR mode. This mode is also similar to having the \fBLD_BIND_NOW\fR -environment variable in effect. See \fBld.so.1\fR(1). +environment variable in effect. See \fBsunld.so.1\fR(1). .RE .sp @@ -1436,9 +1421,9 @@ options. .ad .sp .6 .RS 4n -\fBld\fR normally issues a fatal error upon encountering a relocation using a +\fBsunld\fR normally issues a fatal error upon encountering a relocation using a symbol that references an eliminated COMDAT section. If \fB-z\fR -\fBrelaxreloc\fR is enabled, \fBld\fR instead redirects such relocations to the +\fBrelaxreloc\fR is enabled, \fBsunld\fR instead redirects such relocations to the equivalent symbol in the COMDAT section that was kept. \fB-z\fR \fBrelaxreloc\fR is a specialized option, mainly of interest to compiler authors, and is not intended for general use. @@ -1519,7 +1504,7 @@ command line. If no objects are specifie the first object encountered within the first archive processed from the command line. If there are no objects or archives, the link-editor assumes the native machine. This option is useful when creating an object directly with -\fBld\fR whose input is solely from a \fBmapfile\fR. See the \fB-M\fR option. +\fBsunld\fR whose input is solely from a \fBmapfile\fR. See the \fB-M\fR option. It can also be useful in the rare case of linking entirely from an archive that contains objects of different machine types for which the first object is not of the desired machine type. See \fIThe 32-bit link-editor and 64-bit @@ -1636,7 +1621,7 @@ occurring. .ad .sp .6 .RS 4n -An alternative link-editor path name. \fBld\fR executes, and passes control to +An alternative link-editor path name. \fBsunld\fR executes, and passes control to this alternative link-editor. This environment variable provides a generic means of overriding the default link-editor that is called from the various compiler drivers. See the \fB-z altexec64\fR option. @@ -1661,11 +1646,11 @@ by a semicolon: .in -2 .sp -If \fBld\fR is called with any number of occurrences of \fB-L\fR, as in: +If \fBsunld\fR is called with any number of occurrences of \fB-L\fR, as in: .sp .in +2 .nf -\fBld ... -L\fIpath1\fR ... -L\fIpathn\fR ...\fR +\fBsunld ... -L\fIpath1\fR ... -L\fIpathn\fR ...\fR .fi .in -2 .sp @@ -1712,13 +1697,13 @@ find the use of the 32-bit link-editor f .ad .sp .6 .RS 4n -A default set of options to \fBld\fR. \fBLD_OPTIONS\fR is interpreted by -\fBld\fR just as though its value had been placed on the command line, -immediately following the name used to invoke \fBld\fR, as in: +A default set of options to \fBsunld\fR. \fBLD_OPTIONS\fR is interpreted by +\fBsunld\fR just as though its value had been placed on the command line, +immediately following the name used to invoke \fBsunld\fR, as in: .sp .in +2 .nf -\fBld $LD_OPTIONS ... \fIother-arguments\fR ...\fR +\fBsunld $LD_OPTIONS ... \fIother-arguments\fR ...\fR .fi .in -2 .sp @@ -1748,15 +1733,15 @@ Provides a colon-separated list of share link-editor and given information regarding the linking process. This environment variable can be specified with a _32 or _64 suffix. This makes the environment variable specific, respectively, to the 32-bit or 64-bit class of -\fBld\fR and overrides any non-suffixed version of the environment variable +\fBsunld\fR and overrides any non-suffixed version of the environment variable that is in effect. See the \fB-S\fR option. .RE .sp .LP Notice that environment variable-names that begin with the -characters '\fBLD_\fR' are reserved for possible future enhancements to \fBld\fR and -\fBld.so.1\fR(1). +characters '\fBLD_\fR' are reserved for possible future enhancements to \fBsunld\fR and +\fBsunld.so.1\fR(1). .SH FILES .sp .ne 2 @@ -1836,7 +1821,7 @@ Interface Stability Committed .SH NOTES .sp .LP -Default options applied by \fBld\fR are maintained for historic reasons. In +Default options applied by \fBsunld\fR are maintained for historic reasons. In today's programming environment, where dynamic objects dominate, alternative defaults would often make more sense. However, historic defaults must be maintained to ensure compatibility with existing program development @@ -1845,22 +1830,22 @@ manual. For a description of the current \fILink-Editor Quick Reference,\fR in \fILinker and Libraries Guide\fR. .sp .LP -If the file being created by \fBld\fR already exists, the file is unlinked +If the file being created by \fBsunld\fR already exists, the file is unlinked after all input files have been processed. A new file with the specified name -is then created. This allows \fBld\fR to create a new version of the file, +is then created. This allows \fBsunld\fR to create a new version of the file, while simultaneously allowing existing processes that are accessing the old file contents to continue running. If the old file has no other links, the disk space of the removed file is freed when the last process referencing the file terminates. .sp .LP -The behavior of \fBld\fR when the file being created already exists was changed +The behavior of \fBsunld\fR when the file being created already exists was changed with \fBSXCE\fR build \fB43\fR. In older versions, the existing file was rewritten in place, an approach with the potential to corrupt any running processes that is using the file. This change has an implication for output files that have multiple hard links in the file system. Previously, all links would remain intact, with all links accessing the new file contents. The new -\fBld\fR behavior \fBbreaks\fR such links, with the result that only the +\fBsunld\fR behavior \fBbreaks\fR such links, with the result that only the specified output file name references the new file. All the other links continue to reference the old file. To ensure consistent behavior, applications that rely on multiple hard links to linker output files should explicitly