xref: /freebsd/contrib/llvm-project/lld/docs/ReleaseNotes.rst (revision 13138422bc354a1ec35f53a27c4efeccdffc5639)
185868e8aSDimitry Andric========================
285868e8aSDimitry Andriclld 10.0.0 Release Notes
385868e8aSDimitry Andric========================
40b57cec5SDimitry Andric
50b57cec5SDimitry Andric.. contents::
60b57cec5SDimitry Andric    :local:
70b57cec5SDimitry Andric
885868e8aSDimitry Andric.. warning::
985868e8aSDimitry Andric   These are in-progress notes for the upcoming LLVM 10.0.0 release.
1085868e8aSDimitry Andric   Release notes for previous releases can be found on
1185868e8aSDimitry Andric   `the Download Page <https://releases.llvm.org/download.html>`_.
1285868e8aSDimitry Andric
130b57cec5SDimitry AndricIntroduction
140b57cec5SDimitry Andric============
150b57cec5SDimitry Andric
1685868e8aSDimitry AndricThis document contains the release notes for the lld linker, release 10.0.0.
1785868e8aSDimitry AndricHere we describe the status of lld, including major improvements
1885868e8aSDimitry Andricfrom the previous release. All lld releases may be downloaded
1985868e8aSDimitry Andricfrom the `LLVM releases web site <https://llvm.org/releases/>`_.
200b57cec5SDimitry Andric
210b57cec5SDimitry AndricNon-comprehensive list of changes in this release
220b57cec5SDimitry Andric=================================================
230b57cec5SDimitry Andric
240b57cec5SDimitry AndricELF Improvements
250b57cec5SDimitry Andric----------------
260b57cec5SDimitry Andric
2785868e8aSDimitry Andric* Glob pattern, which you can use in linker scripts or version scripts,
2885868e8aSDimitry Andric  now supports `\` and `[!...]`. Except character classes
2985868e8aSDimitry Andric  (e.g. `[[:digit:]]`), lld's glob pattern should be fully compatible
3085868e8aSDimitry Andric  with GNU now. (`r375051
3185868e8aSDimitry Andric  <https://github.com/llvm/llvm-project/commit/48993d5ab9413f0e5b94dfa292a233ce55b09e3e>`_)
320b57cec5SDimitry Andric
33*13138422SDimitry Andric* New ``elf32btsmipn32_fbsd`` and ``elf32ltsmipn32_fbsd`` emulations
34*13138422SDimitry Andric  are supported.
35*13138422SDimitry Andric
36*13138422SDimitry Andric* Relax MIPS ``jalr``and ``jr`` instructions marked by the ``R_MIPS_JALR``
37*13138422SDimitry Andric  relocation.
38*13138422SDimitry Andric
39*13138422SDimitry Andric* Reduced size of linked MIPS binaries.
40*13138422SDimitry Andric
410b57cec5SDimitry AndricCOFF Improvements
420b57cec5SDimitry Andric-----------------
430b57cec5SDimitry Andric
4485868e8aSDimitry Andric* ...
450b57cec5SDimitry Andric
460b57cec5SDimitry AndricMinGW Improvements
470b57cec5SDimitry Andric------------------
480b57cec5SDimitry Andric
49*13138422SDimitry Andric* Allow using custom .edata sections from input object files (for use
50*13138422SDimitry Andric  by Wine)
51*13138422SDimitry Andric  (`dadc6f248868 <https://reviews.llvm.org/rGdadc6f248868>`)
52*13138422SDimitry Andric
53*13138422SDimitry Andric* Don't implicitly create import libraries unless requested
54*13138422SDimitry Andric  (`6540e55067e3 <https://reviews.llvm.org/rG6540e55067e3>`)
55*13138422SDimitry Andric
56*13138422SDimitry Andric* Support merging multiple resource object files
57*13138422SDimitry Andric  (`3d3a9b3b413d <https://reviews.llvm.org/rG3d3a9b3b413d>`)
58*13138422SDimitry Andric  and properly handle the default manifest object files that GCC can pass
59*13138422SDimitry Andric  (`d581dd501381 <https://reviews.llvm.org/rGd581dd501381>`)
60*13138422SDimitry Andric
61*13138422SDimitry Andric* Demangle itanium symbol names in warnings/error messages
62*13138422SDimitry Andric  (`a66fc1c99f3e <https://reviews.llvm.org/rGa66fc1c99f3e>`)
63*13138422SDimitry Andric
64*13138422SDimitry Andric* Print source locations for undefined references and duplicate symbols,
65*13138422SDimitry Andric  if possible
66*13138422SDimitry Andric  (`1d06d48bb346 <https://reviews.llvm.org/rG1d06d48bb346>`)
67*13138422SDimitry Andric  and
68*13138422SDimitry Andric  (`b38f577c015c <https://reviews.llvm.org/rGb38f577c015c>`)
69*13138422SDimitry Andric
70*13138422SDimitry Andric* Look for more filename patterns when resolving ``-l`` options
71*13138422SDimitry Andric  (`0226c35262df <https://reviews.llvm.org/rG0226c35262df>`)
72*13138422SDimitry Andric
73*13138422SDimitry Andric* Don't error out on duplicate absolute symbols with the same value
74*13138422SDimitry Andric  (which can happen for the default-null symbol for weak symbols)
75*13138422SDimitry Andric  (`1737cc750c46 <https://reviews.llvm.org/rG1737cc750c46>`)
760b57cec5SDimitry Andric
7785868e8aSDimitry AndricMachO Improvements
7885868e8aSDimitry Andric------------------
790b57cec5SDimitry Andric
8085868e8aSDimitry Andric* Item 1.
810b57cec5SDimitry Andric
8285868e8aSDimitry AndricWebAssembly Improvements
8385868e8aSDimitry Andric------------------------
840b57cec5SDimitry Andric
8585868e8aSDimitry Andric* `__data_end` and `__heap_base` are no longer exported by default,
8685868e8aSDimitry Andric  as it's best to keep them internal when possible. They can be
8785868e8aSDimitry Andric  explicitly exported with `--export=__data_end` and
8885868e8aSDimitry Andric  `--export=__heap_base`, respectively.
89