lld 23.0.0git Release Notes

Warning

These are in-progress notes for the upcoming LLVM 23.0.0git release. Release notes for previous releases can be found on the Download Page.

Introduction

This document contains the release notes for the lld linker, release 23.0.0git. Here we describe the status of lld, including major improvements from the previous release. All lld releases may be downloaded from the LLVM releases web site.

Non-comprehensive list of changes in this release

ELF Improvements

  • Added --bp-compression-sort-section=<glob>[=<layout_priority>[=<match_priority>]], replacing the old coarse --bp-compression-sort modes with a way to split input sections into multiple compression groups, run balanced partitioning independently per group, and leave out sections that are poor candidates for BP. layout_priority controls group placement order (lower value = placed first, default 0). match_priority resolves conflicts when multiple globs match the same section (lower value = higher priority; explicit priority beats positional last-match-wins; default: positional). In ELF, the glob matches input section names (e.g. .text.unlikely.code1).

Breaking changes

  • The symbol partition feature has been removed. lld no longer recognizes SHT_LLVM_SYMPART sections, which are now treated as ordinary sections. The feature saw no adoption beyond a Chromium experiment that has since been retired.

  • An OutputSection that has an address expression, and is also assigned to a MEMORY region, will now use the address expression in preference to the next available location in the MEMORY region. This brings LLD in line with GNU ld, but is a change in behavior from previous LLD releases.

COFF Improvements

MinGW Improvements

  • Added --push-state and --pop-state, offering the same semantics as when used with the ELF linker: The state of --Bstatic/--Bdynamic and --whole-archive are pushed onto a stack and popped from it.

MachO Improvements

  • --bp-compression-sort-section now accepts optional layout and match priorities (same syntax as ELF). In Mach-O, the glob matches the concatenated segment+section name (e.g. __TEXT__text).

  • Restructure thunk generation algorithm to be more efficiently create thunks (#193367)

  • Alphabetically sort LC_LINKER_OPTIONS before processing to match Apple linker behavior (#201604 https://github.com/llvm/llvm-project/pull/201604)

WebAssembly Improvements

Fixes