Index: ELF/Options.td =================================================================== --- ELF/Options.td +++ ELF/Options.td @@ -58,8 +58,8 @@ "Do not allow multiple definitions (default)">; defm apply_dynamic_relocs: B<"apply-dynamic-relocs", - "Apply dynamic relocations to place", - "Do not apply dynamic relocations to place">; + "Apply link-time values for dynamic relocations", + "Do not apply link-time values for dynamic relocations (default)">; defm as_needed: B<"as-needed", "Only set DT_NEEDED for shared libraries if used", Index: docs/ld.lld.1 =================================================================== --- docs/ld.lld.1 +++ docs/ld.lld.1 @@ -26,26 +26,40 @@ as GNU linkers. .Pp These options are available: -.Bl -tag -width indent +.Bl -tag -width indent -compact +.Pp .It Fl -allow-multiple-definition Do not error if a symbol is defined multiple times. The first definition will be used. +.Pp +.It Fl -apply-dynamic-relocs +Apply link-time values for dynamic relocations. +.Pp .It Fl -as-needed Only set .Dv DT_NEEDED for shared libraries if used. +.Pp .It Fl -auxiliary Ns = Ns Ar value Set the .Dv DT_AUXILIARY field to the specified name. +.Pp .It Fl -Bdynamic +.It Fl -dy Link against shared libraries. +.Pp .It Fl -Bstatic +.It Fl -static +.It Fl -dn Do not link against shared libraries. +.Pp .It Fl -Bsymbolic-functions Bind defined function symbols locally. +.Pp .It Fl -Bsymbolic Bind defined symbols locally. +.Pp .It Fl -build-id Ns = Ns Ar value Generate a build ID note. .Ar value @@ -70,9 +84,11 @@ are calculated from the object contents. .Cm fast is not intended to be cryptographically secure. +.Pp .It Fl -build-id Synonym for .Fl -build-id Ns = Ns Cm fast . +.Pp .It Fl -color-diagnostics Ns = Ns Ar value Use colors in diagnostics. .Ar value @@ -83,9 +99,11 @@ .Cm never . .Cm auto enables color if and only if output is to a terminal. +.Pp .It Fl -color-diagnostics Alias for .Fl -color-diagnostics Ns = Ns Cm auto . +.Pp .It Fl -compress-debug-sections Ns = Ns Ar value Compress DWARF debug sections. .Ar value @@ -93,8 +111,14 @@ .Cm none or .Cm zlib . +.Pp +.It Fl -cref +Output cross reference table. +.Pp .It Fl -define-common +.It Fl d Assign space to common symbols. +.Pp .It Fl -defsym Ns = Ns Ar symbol Ns = Ns Ar expression Define a symbol alias. .Ar expression @@ -103,60 +127,81 @@ .Ql --defsym=foo=bar or .Ql --defsym=foo=bar+0x100 . -.It Fl -demangle -Demangle symbol names. +.Pp .It Fl -disable-new-dtags Disable new dynamic tags. +.Pp .It Fl -discard-all +.It Fl x Delete all local symbols. +.Pp .It Fl -discard-locals +.It Fl X Delete temporary local symbols. +.Pp .It Fl -discard-none Keep all symbols in the symbol table. +.Pp .It Fl -dynamic-linker Ns = Ns Ar value Specify the dynamic linker to be used for a dynamically linked executable. This is recorded in an ELF segment of type .Dv PT_INTERP . +.Pp .It Fl -dynamic-list Ns = Ns Ar file Read a list of dynamic symbols from .Ar file . +.Pp .It Fl -eh-frame-hdr Request creation of .Li .eh_frame_hdr section and .Dv PT_GNU_EH_FRAME segment header. +.Pp .It Fl -emit-relocs +.It Fl q Generate relocations in the output. -.It Fl -enable-new-dtags -Enable new dynamic tags. +.Pp .It Fl -end-lib End a grouping of objects that should be treated as if they were together in an archive. +.Pp .It Fl -entry Ns = Ns Ar entry Name of entry point symbol. +.Pp .It Fl -error-limit Ns = Ns Ar value Maximum number of errors to emit before stopping. A value of zero indicates that there is no limit. +.Pp .It Fl -error-unresolved-symbols Report unresolved symbols as errors. +.Pp .It Fl -exclude-libs Ns = Ns Ar value Exclude static libraries from automatic export. +.Pp .It Fl -export-dynamic-symbol Ns = Ns Ar symbol Include .Ar symbol in the dynamic symbol table. +.Pp .It Fl -export-dynamic +.It Fl E Put symbols in the dynamic symbol table. +.Pp .It Fl -fatal-warnings Treat warnings as errors. +.Pp .It Fl -filter Ns = Ns Ar value +.It Fl F Ar value Set the .Dv DT_FILTER field to the specified value. +.Pp .It Fl -fini Ns = Ns Ar symbol Specify a finalizer function. +.Pp .It Fl -format Ns = Ns Ar input-format +.It Fl b Ar input-format Specify the format of the inputs following this option. .Ar input-format may be one of @@ -167,12 +212,15 @@ .Cm default is a synonym for .Cm elf . +.Pp .It Fl -gc-sections Enable garbage collection of unused sections. +.Pp .It Fl -gdb-index Generate .Li .gdb_index section. +.Pp .It Fl -hash-style Ns = Ns Ar value Specify hash style. .Ar value @@ -183,72 +231,102 @@ .Cm both . .Cm both is the default. +.Pp .It Fl -help Print a help message. +.Pp .It Fl -icf Ns = Ns Cm all Enable identical code folding. +.Pp .It Fl -icf Ns = Ns Cm safe Enable safe identical code folding. +.Pp .It Fl -icf Ns = Ns Cm none Disable identical code folding. +.Pp .It Fl -image-base Ns = Ns Ar value Set the base address to .Ar value . +.Pp .It Fl -init Ns = Ns Ar symbol Specify an initializer function. +.Pp +.It Fl -keep-unique Ns = Ns Ar symbol +Do not fold this symbol during ICF. +.Pp +.It Fl L Ar dir +.It Fl -library-path Ns = Ns Ar dir +Add a directory to the library search path. +.Pp +.It Fl l Ar libName +.It Fl -library Ns = Ns Ar libName +Root name of library to use. +.Pp .It Fl -lto-aa-pipeline Ns = Ns Ar value AA pipeline to run during LTO. Used in conjunction with .Fl -lto-newpm-passes . +.Pp .It Fl -lto-newpm-passes Ns = Ns Ar value Passes to run during LTO. +.Pp .It Fl -lto-O Ns Ar opt-level Optimization level for LTO. +.Pp .It Fl -lto-partitions Ns = Ns Ar value Number of LTO codegen partitions. -.It Fl L Ar dir -Add a directory to the library search path. -.It Fl l Ar libName -Root name of library to use. +.Pp .It Fl -Map Ns = Ns Ar file +.It Fl M Ar file Print a link map to .Ar file . +.Pp .It Fl m Ar value Set target emulation. +.Pp .It Fl -no-as-needed Always set .Dv DT_NEEDED for shared libraries. +.Pp .It Fl -no-color-diagnostics Do not use colors in diagnostics. +.Pp .It Fl -no-define-common Do not assign space to common symbols. +.Pp .It Fl -no-demangle Do not demangle symbol names. +.Pp .It Fl -no-dynamic-linker Inhibit output of an .Li .interp section. -.It Fl -no-gc-sections -Disable garbage collection of unused sections. +.Pp .It Fl -no-gnu-unique Disable STB_GNU_UNIQUE symbol binding. +.Pp .It Fl -no-rosegment Do not put read-only non-executable sections in their own segment. +.Pp .It Fl -no-threads Do not run the linker multi-threaded. +.Pp .It Fl -no-undefined-version Report version scripts that refer undefined symbols. +.Pp .It Fl -no-undefined Report unresolved symbols even if the linker is creating a shared library. +.Pp .It Fl -no-whole-archive Restores the default behavior of loading archive members. +.Pp .It Fl -noinhibit-exec Retain the executable output file whenever it is still usable. -.It Fl -no-pie -Do not create a position independent executable. +.Pp .It Fl -nostdlib Only search directories specified on the command line. +.Pp .It Fl -oformat Ns = Ns Ar format Specify the format for the output object file. The only supported @@ -256,13 +334,18 @@ is .Cm binary , which produces output with no ELF header. +.Pp .It Fl -omagic +.It Fl N Set the text and data sections to be readable and writable. +.Pp .It Fl -opt-remarks-filename Ar file Write optimization remarks in YAML format to .Ar file . +.Pp .It Fl -opt-remarks-with-hotness Include hotness information in the optimization remarks file. +.Pp .It Fl O Ns Ar value Optimize output file size. .Ar value @@ -279,79 +362,109 @@ .Pp .Fl O Ns Cm 1 is the default. +.Pp .It Fl o Ar path Write the output executable, library, or object to .Ar path . If not specified, .Dv a.out is used as a default. +.Pp .It Fl -pie Create a position independent executable. +.Pp .It Fl -print-gc-sections List removed unused sections. +.Pp .It Fl -print-map Print a link map to the standard output. +.Pp .It Fl -push-state Save the current state of .Fl -as-needed , .Fl -static , and .Fl -while-archive. +.Pp .It Fl -pop-state Undo the effect of .Fl -push-state. +.Pp .It Fl -relocatable +.It Fl r Create relocatable object file. +.Pp .It Fl -reproduce Ns = Ns Ar value Dump linker invocation and input files for debugging. +.Pp .It Fl -retain-symbols-file Ns = Ns Ar file Retain only the symbols listed in the file. +.Pp .It Fl -rpath Ns = Ns Ar value +.It Fl R Ar value Add a .Dv DT_RUNPATH to the output. +.Pp .It Fl -rsp-quoting Ns = Ns Ar value Quoting style for response files. The supported values are .Cm windows and .Cm posix . +.Pp .It Fl -script Ns = Ns Ar file +.It Fl T Ar file Read linker script from .Ar file . +.Pp .It Fl -section-start Ns = Ar section Ns = Ns Ar address Set address of section. +.Pp .It Fl -shared +.It Fl -Bsharable Build a shared object. +.Pp .It Fl -soname Ns = Ns Ar value Set .Dv DT_SONAME to .Ar value . +.Pp .It Fl -sort-section Ns = Ns Ar value Specifies sections sorting rule when linkerscript is used. +.Pp .It Fl -start-lib Start a grouping of objects that should be treated as if they were together in an archive. +.Pp .It Fl -strip-all +.It Fl s Strip all symbols. +.Pp .It Fl -strip-debug +.It Fl S Strip debugging information. +.Pp .It Fl -symbol-ordering-file Ns = Ns Ar file Lay out sections in the order specified by .Ar file . +.Pp .It Fl -sysroot Ns = Ns Ar value Set the system root. +.Pp .It Fl -target1-abs Interpret .Dv R_ARM_TARGET1 as .Dv R_ARM_ABS32 . +.Pp .It Fl -target1-rel Interpret .Dv R_ARM_TARGET1 as .Dv R_ARM_REL32 . +.Pp .It Fl -target2 Ns = Ns Ar type Interpret .Dv R_ARM_TARGET2 @@ -364,118 +477,159 @@ .Cm abs , or .Cm got-rel . +.Pp .It Fl -Tbss Ns = Ns Ar value Same as .Fl -section-start with .Li .bss as the sectionname. +.Pp .It Fl -Tdata Ns = Ns Ar value Same as .Fl -section-start with .Li .data as the sectionname. +.Pp .It Fl -thinlto-cache-dir Ns = Ns Ar value Path to ThinLTO cached object file directory. +.Pp .It Fl -thinlto-cache-policy Ns = Ns Ar value Pruning policy for the ThinLTO cache. +.Pp .It Fl -thinlto-jobs Ns = Ns Ar value Number of ThinLTO jobs. +.Pp .It Fl -threads Run the linker multi-threaded. This option is enabled by default. +.Pp .It Fl -trace-symbol Ns = Ns Ar symbol +.It Fl y Ar symbol Trace references to .Ar symbol . +.Pp .It Fl -trace Print the names of the input files. +.Pp .It Fl -Ttext Ns = Ns Ar value Same as .Fl -section-start with .Li .text as the sectionname. +.Pp .It Fl -undefined Ns = Ns Ar symbol +.It Fl u Ar symbol Force .Ar symbol to be an undefined symbol during linking. +.Pp .It Fl -unresolved-symbols Ns = Ns Ar value Determine how to handle unresolved symbols. +.Pp +.It Fl v +Display the version number and proceed with linking if object files are +specified. +.Pp .It Fl -verbose Verbose mode. +.Pp +.It Fl -version +.It Fl V +Display the version number and exit. +.Pp .It Fl -version-script Ns = Ns Ar file Read version script from .Ar file . -.It Fl V , Fl -version -Display the version number and exit. -.It Fl v -Display the version number and proceed with linking if object files are -specified. +.Pp .It Fl -warn-backrefs Warn about reverse or cyclic dependencies to or between static archives. This can be used to ensure linker invocation remains compatible with traditional Unix-like linkers. +.Pp .It Fl -warn-common Warn about duplicate common symbols. +.Pp .It Fl -warn-unresolved-symbols Report unresolved symbols as warnings. +.Pp .It Fl -whole-archive Force load of all members in a static library. +.Pp .It Fl -wrap Ns = Ns Ar symbol Use wrapper functions for symbol. +.Pp .It Fl z Ar option Linker option extensions. .Bl -tag -width indent +.Pp .It Cm execstack Make the main stack executable. Stack permissions are recorded in the .Dv PT_GNU_STACK segment. +.Pp +.It Cm initfirst +Sets the +.Dv DF_1_INITFIRST +flag to indicate the module should be initialized first. +.Pp .It Cm muldefs Do not error if a symbol is defined multiple times. The first definition will be used. This is a synonym for .Fl -allow-multiple-definition. +.Pp .It Cm nocombreloc Disable combining and sorting multiple relocation sections. +.Pp .It Cm nocopyreloc Disable the creation of copy relocations. +.Pp .It Cm nodelete Set the .Dv DF_1_NODELETE flag to indicate that the object cannot be unloaded from a process. +.Pp .It Cm nodlopen Set the .Dv DF_1_NOOPEN flag to indcate that the object may not be opened by .Xr dlopen 3 . +.Pp .It Cm norelro Do not indicate that portions of the object shold be mapped read-only after initial relocation processing. The object will omit the .Dv PT_GNU_RELRO segment. +.Pp .It Cm notext Allow relocations against read-only segments. Sets the .Dv DT_TEXTREL flag in the .Dv DYNAMIC section. +.Pp .It Cm now Set the .Dv DF_BIND_NOW flag to indicate that the run-time loader should perform all relocation processing as part of object initialization. By default relocations may be performed on demand. +.Pp .It Cm origin Set the .Dv DF_ORIGIN flag to indicate that the object requires $ORIGIN processing. +.Pp .It Cm retpolineplt Emit retpoline format PLT entries as a mitigation for CVE-2017-5715. +.Pp .It Cm rodynamic Make the .Li .dynamic @@ -483,6 +637,7 @@ The .Dv DT_DEBUG tag will not be emitted. +.Pp .It Cm stack-size Ns = Ns Ar size Set the main thread's stack size to .Ar size . @@ -490,9 +645,11 @@ .Ar size . .Dv PT_GNU_STACK program segment. +.Pp .It Cm text Do not allow relocations against read-only segments. This is the default. +.Pp .It Cm wxneeded Create a .Dv PT_OPENBSD_WXNEEDED