D86142 introduced --fortran-common and defaulted it to true (matching GNU ld but deviates from gold/macOS ld64). The default state was motivated by transparently supporting some FORTRAN 77 programs (Fortran 90 deprecated common blocks). Now I think it again. I believe we made a mistake to change the default: * this is a weird and legacy rule, though the breakage is very small * --fortran-common introduced complexity to parallel symbol resolution and will slow down it * --fortran-common more likely causes issues when users mix COMMON and STB_GLOBAL definitions (see https://github.com/llvm/llvm-project/issues/48570 and https://maskray.me/blog/2022-02-06-all-about-common-symbols). I have seen several issues in our internal projects and Android. On the other hand, --no-fortran-common is safer since COMMON/STB_GLOBAL have the same semantics related to archive member extraction. Therefore I think we should switch back, not punishing the common uage. A platform wanting --fortran-common can implement ld.lld as a shell script wrapper around `lld -flavor gnu --fortran-common "$@"`. Reviewed By: ikudrin, sfertile Differential Revision: https://reviews.llvm.org/D122450
63 lines
1.7 KiB
ReStructuredText
63 lines
1.7 KiB
ReStructuredText
===========================
|
|
lld |release| Release Notes
|
|
===========================
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
.. only:: PreRelease
|
|
|
|
.. warning::
|
|
These are in-progress notes for the upcoming LLVM |release| release.
|
|
Release notes for previous releases can be found on
|
|
`the Download Page <https://releases.llvm.org/download.html>`_.
|
|
|
|
Introduction
|
|
============
|
|
|
|
This document contains the release notes for the lld linker, release |release|.
|
|
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 <https://llvm.org/releases/>`_.
|
|
|
|
Non-comprehensive list of changes in this release
|
|
=================================================
|
|
|
|
ELF Improvements
|
|
----------------
|
|
|
|
* ``-z pack-relative-relocs`` is now available to support ``DT_RELR`` for glibc 2.36+.
|
|
(`D120701 <https://reviews.llvm.org/D120701>`_)
|
|
* ``--no-fortran-common`` (pre 12.0.0 behavior) is now the default.
|
|
|
|
Breaking changes
|
|
----------------
|
|
|
|
* The GNU ld incompatible ``--no-define-common`` has been removed.
|
|
* The obscure ``-dc``/``-dp`` options have been removed.
|
|
* ``-d`` is now ignored.
|
|
* If a prevailing COMDAT group defines STB_WEAK symbol, having a STB_GLOBAL symbol in a non-prevailing group is now rejected with a diagnostic.
|
|
(`D120626 <https://reviews.llvm.org/D120626>`_)
|
|
|
|
COFF Improvements
|
|
-----------------
|
|
|
|
* Added autodetection of MSVC toolchain, a la clang-cl. Also added /winsysroot
|
|
support for explicit specification of MSVC toolchain location.
|
|
(`D118070 <https://reviews.llvm.org/D118070>`_)
|
|
* ...
|
|
|
|
MinGW Improvements
|
|
------------------
|
|
|
|
* ...
|
|
|
|
MachO Improvements
|
|
------------------
|
|
|
|
* Item 1.
|
|
|
|
WebAssembly Improvements
|
|
------------------------
|
|
|