---
name: "ld.lld-4.0"
section: "1"
platform: "linux"
package: "lld-4.0"
version: "1:4.0.1-10~deb9u2"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/ld.lld-4.0"
---

# ld.lld-4.0(1)

manual page for ld.lld 4.0

## NAME

ld.lld - manual page for ld.lld 4.0

## DESCRIPTION

OVERVIEW: lld

USAGE: build-llvm/bin/ld.lld \[options\] \<inputs\>

### OPTIONS:

- **--allow-multiple-definition**

  Allow multiple definitions

- **--as-needed**

  Only set DT\_NEEDED for shared libraries if used

- **--auxiliary** \<value\>

  Set DT\_AUXILIARY field to the specified name

- **--Bdynamic**

  Link against shared libraries

- **--Bstatic**

  Do not link against shared libraries

- **--Bsymbolic-functions**

  Bind defined function symbols locally

- **--Bsymbolic**

  Bind defined symbols locally

- **--build-id=**\<value\>

  Generate build ID note

- **--build-id**

  Generate build ID note

- **--color-diagnostics=**\<value\>

  Use colors in diagnostics

- **--color-diagnostics**

  Use colors in diagnostics

- **--define-common**

  Assign space to common symbols

- **--disable-new-dtags**

  Disable new dynamic tags

- **--discard-all**

  Delete all local symbols

- **--discard-locals**

  Delete temporary local symbols

- **--discard-none**

  Keep all symbols in the symbol table

- **--dynamic-linker** \<value\>

  Which dynamic linker to use

- **--dynamic-list** \<value\>

  Read a list of dynamic symbols

- **--eh-frame-hdr**

  Request creation of .eh\_frame\_hdr section and PT\_GNU\_EH\_FRAME segment header

- **--enable-new-dtags**

  Enable new dynamic tags

- **--end-lib**

  End a grouping of objects that should be treated as if they were together in an archive

- **--entry** \<entry\>

  Name of entry point symbol

- **--error-limit** \<value\>

  Maximum number of errors to emit before stopping (0 = no limit)

- **--export-dynamic-symbol** \<value\>

  Put a symbol in the dynamic symbol table

- **--export-dynamic**

  Put symbols in the dynamic symbol table

- **--fatal-warnings**

  Treat warnings as errors

- **--fini** \<symbol\>

  Specify a finalizer function

**--format=**\<input-format\> Change the input format of the inputs following this option

- **--full-shutdown**

  Perform a full shutdown instead of calling \_exit

- **--gc-sections**

  Enable garbage collection of unused sections

- **--gdb-index**

  Generate .gdb\_index section

- **--hash-style** \<value\>

  Specify hash style (sysv, gnu or both)

- **--help**

  Print option help

- **--icf**=*all*

  Enable identical code folding

- **--image-base=**\<value\>

  Set the base address

- **--init** \<symbol\>

  Specify an initializer function

- **--lto-aa-pipeline=**\<value\>

  AA pipeline to run during LTO. Used in conjunction with **-lto-newpm-passes**

- **--lto-newpm-passes=**\<value\>

  Passes to run during LTO

- **--lto-O**\<opt-level\>

  Optimization level for LTO

- **--lto-partitions=**\<value\>

  Number of LTO codegen partitions

- **-L** \<dir\>

  Add a directory to the library search path

- **-l** \<libName\>

  Root name of library to use

- **-m** \<value\>

  Set target emulation

- **--no-as-needed**

  Always DT\_NEEDED for shared libraries

- **--no-color-diagnostics**

  Do not use colors in diagnostics

- **--no-define-common**

  Do not assign space to common symbols

- **--no-demangle**

  Do not demangle symbol names

- **--no-gc-sections**

  Disable garbage collection of unused sections

- **--no-gnu-unique**

  Disable STB\_GNU\_UNIQUE symbol binding

- **--no-rosegment**

  Do not put read-only non-executable sections in their own segment

- **--no-threads**

  Do not run the linker multi-threaded

- **--no-undefined-version**

  Report version scripts that refer undefined symbols

- **--no-undefined**

  Report unresolved symbols even if the linker is creating a shared library

- **--no-whole-archive**

  Restores the default behavior of loading archive members

- **--noinhibit-exec**

  Retain the executable output file whenever it is still usable

- **--nopie**

  Do not create a position independent executable

- **--nostdlib**

  Only search directories specified on the command line

- **--oformat** \<format\>

  Specify the binary format for the output object file

- **--omagic**

  Set the text and data sections to be readable and writable

- **-O**\<value\>

  Optimize output file size

- **-o** \<path\>

  Path to file to write output

- **--pie**

  Create a position independent executable

- **--print-gc-sections**

  List removed unused sections

- **--relocatable**

  Create relocatable object file

- **--reproduce** \<value\>

  Dump linker invocation and input files for debugging

- **--retain-symbols-file=**\<file\>

  Retain only the symbols listed in the file

- **--rpath** \<value\>

  Add a DT\_RUNPATH to the output

- **--rsp-quoting=**\<value\>

  Quoting style for response files. Values supported: windows\|posix

- **--script** \<value\>

  Read linker script

- **--section-start** \<address\>

  Set address of section

- **--shared**

  Build a shared object

- **--soname=**\<value\>

  Set DT\_SONAME

- **--sort-section** \<value\>

  Specifies sections sorting rule when linkerscript is used

- **--start-lib**

  Start a grouping of objects that should be treated as if they were together in an archive

- **--strip-all**

  Strip all symbols

- **--strip-debug**

  Strip debugging information

- **--symbol-ordering-file** \<value\>

  Layout sections in the order specified by symbol file

- **--sysroot=**\<value\>

  Set the system root

- **--target1-abs**

  Interpret R\_ARM\_TARGET1 as R\_ARM\_ABS32

- **--target1-rel**

  Interpret R\_ARM\_TARGET1 as R\_ARM\_REL32

- **--target2=**\<type\>

  Interpret R\_ARM\_TARGET2 as \<type\>, where \<type\> is one of rel, abs, or got-rel

- **--Tbss** \<value\>

  Same as **--section-start** with .bss as the sectionname

- **--Tdata** \<value\>

  Same as **--section-start** with .data as the sectionname

- **--thinlto-jobs=**\<value\>

  Number of ThinLTO jobs

- **--threads**

  Run the linker multi-threaded

- **--trace-symbol=**\<value\>

  Trace references to symbols

- **--trace**

  Print the names of the input files

- **--Ttext** \<value\>

  Same as **--section-start** with .text as the sectionname

- **--undefined** \<value\>

  Force undefined symbol during linking

- **--unresolved-symbols=**\<value\>

  Determine how to handle unresolved symbols

- **--verbose**

  Verbose mode

- **--version-script** \<value\>

  Read a version script

- **--version**

  Display the version number and exit

- **-v**

  Display the version number

- **--warn-common**

  Warn about duplicate common symbols

- **--whole-archive**

  Force load of all members in a static library

- **--wrap** \<symbol\>

  Use wrapper functions for symbol

- **-z** \<option\>

  Linker option extensions

build-llvm/bin/ld.lld: supported targets: elf32-i386 elf32-iamcu elf32-littlearm elf32-powerpc elf32-tradbigmips elf32-tradlittlemips elf32-x86-64 elf32-ntradbigmips elf32-ntradlittlemips elf32-x86-64 elf64-amdgpu elf64-littleaarch64 elf64-powerpc elf64-tradbigmips elf64-tradlittlemips elf64-x86-64

## SEE ALSO

The full documentation for **ld.lld** is maintained as a Texinfo manual.  If the **info** and **ld.lld** programs are properly installed at your site, the command

-

  **info ld.lld**

should give you access to the complete manual.
