lld 16.0.0git Release Notes

Warning

These are in-progress notes for the upcoming LLVM 16.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 16.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

  • ELFCOMPRESS_ZSTD compressed input sections are now supported. (D129406)
  • --compress-debug-sections=zstd is now available to compress debug sections with zstd (ELFCOMPRESS_ZSTD). (D133548)
  • --no-warnings/-w is now available to suppress warnings. (D136569)

COFF Improvements

  • The linker command line entry in S_ENVBLOCK of the PDB is now stripped from input files, to align with MSVC behavior. (D137723)
  • Switched from SHA1 to BLAKE3 for PDB type hashing / -gcodeview-ghash (D137101)
  • Improvements to the PCH.OBJ files handling. Now LLD behaves the same as MSVC link.exe when merging PCH.OBJ files that don’t have the same signature. (D136762)

MinGW Improvements

  • The lld-specific options --guard-cf, --no-guard-cf, --guard-longjmp and --no-guard-longjmp has been added to allow enabling Control Flow Guard and long jump hardening. These options are disabled by default, but enabling --guard-cf will also enable --guard-longjmp unless --no-guard-longjmp is also specified. --guard-longjmp depends on --guard-cf and cannot be used by itself. Note that these features require the _load_config_used symbol to contain the load config directory and be filled with the required symbols. (D132808)