blob: 86de622031cad7bf821fea6aa41825e5b6afcbde [file] [log] [blame]
Michael J. Spencerd01c8fe2012-04-08 02:06:04 +00001.. _index:
2
3lld - The LLVM Linker
4=====================
5
6lld is a new set of modular code for creating linker tools.
7
8* End-User Features:
9
10 * Compatible with existing linker options
11 * Reads standard Object Files (e.g. ELF, Mach-O, PE/COFF)
12 * Writes standard Executable Files (e.g. ELF, Mach-O, PE)
13 * Fast link times
14 * Minimal memory use
15 * Remove clang's reliance on "the system linker"
16 * Uses the LLVM `"UIUC" BSD-Style license`__.
17
18* Applications:
19
20 * Modular design
21 * Support cross linking
22 * Easy to add new CPU support
23 * Can be built as static tool or library
24
25* Design and Implementation:
26
27 * Extensive unit tests
28 * Internal linker model can be dumped/read to textual format
29 * Internal linker model can be dumped/read to a new native format
30 * Native format designed to be fast to read and write
31 * Additional linking features can be plugged in as "passes"
32 * OS specific and CPU specific code factored out
33
34Why a new linker?
35-----------------
36
37The fact that clang relies on whatever linker tool you happen to have installed
38means that clang has been very conservative adopting features which require a
39recent linker.
40
41In the same way that the MC layer of LLVM has removed clang's reliance on the
42system assembler tool, the lld project will remove clang's reliance on the
43system linker tool.
44
45
46Current Status
47--------------
48
49lld is in its very early stages of development.
50
Michael J. Spencer31dffbb2013-01-15 02:00:48 +000051On Linux it can currently statically link `Lua_` against both `diet libc_` +
52`OpenLibm_` and `musl_` on x86-64. It can not currently link against glibc due
53to unimplemented features.
54
55.. _Lua: http://www.lua.org/
56.. _diet libc: http://www.fefe.de/dietlibc/
57.. _OpenLibm: https://github.com/JuliaLang/openlibm#readme
58.. _musl: http://www.musl-libc.org/
59
Michael J. Spencerd01c8fe2012-04-08 02:06:04 +000060Source
61------
62
63lld is available in the LLVM SVN repository::
64
65 svn co http://llvm.org/svn/llvm-project/lld/trunk
66
67lld is also available via the read-only git mirror::
68
69 git clone http://llvm.org/git/lld.git
70
71Contents
72--------
73
74.. toctree::
75 :maxdepth: 2
76
77 design
Michael J. Spencer365f1ec2012-04-25 19:34:24 +000078 getting_started
Michael J. Spencerd01c8fe2012-04-08 02:06:04 +000079 development
80 open_projects
81 sphinx_intro
82
83Indices and tables
84------------------
85
86* :ref:`genindex`
87* :ref:`search`
88
89__ http://llvm.org/docs/DeveloperPolicy.html#license