@@ -35,8 +35,60 @@ ELF Improvements
35
35
36
36
* Relax MIPS ``jalr``and ``jr `` instructions marked by the ``R_MIPS_JALR ``
37
37
relocation.
38
+ * For certain "undefined symbol" errors, a definition with a close spelling will be suggested.
39
+ (`D67039 <https://reviews.llvm.org/D67039 >`_)
40
+ * ``extern "C" `` is suggested if an undefined reference is mangled(unmangled) while there
41
+ is a likely unmangled(mangled) definition.
42
+ (`D69592 <https://reviews.llvm.org/D69592 >`_ `D69650 <https://reviews.llvm.org/D69650 >`_)
43
+ * New ``-z noseparate-code ``, ``-z separate-code `` and ``-z separate-loadable-segments ``.
44
+ ``-z noseparate-code `` is the default, which can reduce sizes of linked binaries by up to
45
+ 3 times maxpagesize.
46
+ (`D64903 <https://reviews.llvm.org/D64903 >`_ `D67481 <https://reviews.llvm.org/D67481 >`_)
47
+ * ``-z force-bti `` and ``-z pac-plt `` are added for AArch64 Branch Target Identification and Pointer Authentication.
48
+ (`D62609 <https://reviews.llvm.org/D62609 >`_)
49
+ * ``--fix-cortex-a8 `` is added to fix erratum 657417.
50
+ (`D67284 <https://reviews.llvm.org/D67284 >`_)
51
+ * ``-z force-ibt `` and ``-z shstk `` are added for Intel Control-flow Enforcement Technology.
52
+ (`D59780 <https://reviews.llvm.org/D59780 >`_)
53
+ * ``PT_GNU_PROPERTY `` is added to help loaders locate the ``.note.gnu.property `` section.
54
+ It may be used by a future Linux kernel.
55
+ (`D70961 <https://reviews.llvm.org/D70961 >`_)
56
+ * For ``--compress-debug-sections=zlib ``, ``-O0 `` and ``-O1 `` enable compression level 1
57
+ while ``-O2 `` enables compression level 6. ``-O1 `` (default) is faster than before.
58
+ (`D70658 <https://reviews.llvm.org/D70658 >`_)
59
+ * Range extension thunks with addends are implemented for AArch64, PowerPC32 and PowerPC64.
60
+ (`D70637 <https://reviews.llvm.org/D70637 >`_ `D70937 <https://reviews.llvm.org/D70937 >`_
61
+ `D73424 <https://reviews.llvm.org/D73424 >`_)
62
+ * ``R_RISCV_ALIGN `` will be errored because linker relaxation for RISC-V is not supported.
63
+ Pass ``-mno-relax `` to disable ``R_RISCV_ALIGN ``.
64
+ (`D71820 <https://reviews.llvm.org/D71820 >`_)
65
+ * The ARM port will no longer insert interworking thunks for non STT_FUNC symbols.
66
+ (`D73474 <https://reviews.llvm.org/D73474 >`_)
67
+ * The quality of PowerPC32 port has been greatly improved (canonical PLT, copy
68
+ relocations, non-preemptible IFUNC, range extension thunks with addends).
69
+ It can link FreeBSD 13.0 userland.
70
+ * The PowerPC64 port supports non-preemptible IFUNC.
71
+ (`D71509 <https://reviews.llvm.org/D71509 >`_)
72
+ * lld creates a RO PT_LOAD and a RX PT_LOAD without a linker script.
73
+ lld creates a unified RX PT_LOAD with a linker script.
74
+ A future release will eliminate this difference and use a RO PT_LOAD and a RX PT_LOAD by default.
75
+ The linker script case will require ``--no-rosegment `` to restore the current behavior.
76
+ * GNU style compressed debug sections ``.zdebug `` (obsoleted by ``SHF_COMPRESSED ``)
77
+ are supported for input files, but not for the output.
78
+ A future release may drop ``.zdebug `` support.
79
+
80
+ Breaking changes
81
+ ----------------
38
82
39
- * Reduced size of linked MIPS binaries.
83
+ * ``-Ttext=$base `` (base is usually 0) is no longer supported.
84
+ If PT_PHDR is needed, use ``--image-base=$base `` instead.
85
+ If PT_PHDR is not needed, use a linker script with `.text 0 : { *(.text*) } ` as the first
86
+ output section description.
87
+ See https://bugs.llvm.org/show_bug.cgi?id=44715 for more information.
88
+ (`D67325 <https://reviews.llvm.org/D67325 >`_)
89
+ * ``-Ttext-segment `` is no longer supported. Its meaning was different from GNU ld's and
90
+ could cause subtle bugs.
91
+ (`D70468 <https://reviews.llvm.org/D70468 >`_)
40
92
41
93
COFF Improvements
42
94
-----------------
0 commit comments