ATOM-based lld — lld 12 documentation

# ATOM-based lld

Note: this document discuss Mach-O port of LLD. For ELF and COFF, see LLD - The LLVM Linker.

ATOM-based lld is a new set of modular code for creating linker tools. Currently it supports Mach-O.

- End-User Features:

  - Compatible with existing linker options

  - Reads standard Object Files

  - Writes standard Executable Files

  - Remove clang’s reliance on “the system linker”

  - Uses the LLVM “UIUC” BSD-Style license.

- Applications:

  - Modular design

  - Support cross linking

  - Easy to add new CPU support

  - Can be built as static tool or library

- Design and Implementation:

  - Extensive unit tests

  - Internal linker model can be dumped/read to textual format

  - Additional linking features can be plugged in as “passes”

  - OS specific and CPU specific code factored out

## Why a new linker?

The fact that clang relies on whatever linker tool you happen to have installed means that clang has been very conservative adopting features which require a recent linker.

In the same way that the MC layer of LLVM has removed clang’s reliance on the system assembler tool, the lld project will remove clang’s reliance on the system linker tool.

## Contents

- Linker Design
  - Introduction
  - Atom Model
  - File Model
  - Linking Steps
  - lld::File representations
  - Testing
  - Design Issues
- Getting Started: Building and Running lld
  - Building lld
- Development
  - Creating a Reader
  - Modifying the Driver
  - Debugging
  - Documentation
- Open Projects
  - Documentation TODOs
- Sphinx Introduction for LLVM Developers
  - Quickstart
  - Learning More
  - Installing Sphinx in a Virtual Environment

## Indices and tables

- Index

- Search Page