Path to this page:
Subject: CVS commit: pkgsrc/devel/lld
From: Adam Ciarcinski
Date: 2020-04-18 10:00:50
Message id: 20200418080050.5811EFB27@cvs.NetBSD.org
Log Message:
lld: updated to 10.0.0
Non-comprehensive list of changes in this release
ELF Improvements
Glob pattern, which you can use in linker scripts or version scripts, now \
supports ` and `[!…]. Except character classes
New elf32btsmipn32_fbsd and elf32ltsmipn32_fbsd emulations are supported.
Relax MIPS jalr and jr instructions marked by the R_MIPS_JALR relocation.
For certain “undefined symbol” errors, a definition with a close spelling \
will be suggested.
extern "C" is suggested if an undefined reference is \
mangled(unmangled) while there is a likely unmangled(mangled) definition.
New -z noseparate-code, -z separate-code and -z separate-loadable-segments. -z \
noseparate-code is the default, which can reduce sizes of linked binaries by up \
to 3 times maxpagesize.
-z force-bti and -z pac-plt are added for AArch64 Branch Target Identification \
and Pointer Authentication.
--fix-cortex-a8 is added to fix erratum 657417.
-z force-ibt and -z shstk are added for Intel Control-flow Enforcement Technology.
PT_GNU_PROPERTY is added to help loaders locate the .note.gnu.property section. \
It may be used by a future Linux kernel.
For --compress-debug-sections=zlib, -O0 and -O1 enable compression level 1 while \
-O2 enables compression level 6. -O1
Range extension thunks with addends are implemented for AArch64, PowerPC32 and \
PowerPC64.
R_RISCV_ALIGN will be errored because linker relaxation for RISC-V is not \
supported. Pass -mno-relax to disable R_RISCV_ALIGN.
The ARM port will no longer insert interworking thunks for non STT_FUNC symbols.
The quality of PowerPC32 port has been greatly improved
The PowerPC64 port supports non-preemptible IFUNC.
lld creates a RO PT_LOAD and a RX PT_LOAD without a linker script. lld creates a \
unified RX PT_LOAD with a linker script. A future release will eliminate this \
difference and use a RO PT_LOAD and a RX PT_LOAD by default. The linker script \
case will require --no-rosegment to restore the current behavior.
GNU style compressed debug sections .zdebug
Breaking changes
-Ttext=$base
-Ttext-segment is no longer supported. Its meaning was different from GNU ld’s \
and could cause subtle bugs.
MinGW Improvements
Allow using custom .edata sections from input object files
Don’t implicitly create import libraries unless requested
Support merging multiple resource object files
Demangle itanium symbol names in warnings/error messages
Print source locations for undefined references and duplicate symbols, if possible
Look for more filename patterns when resolving -l options
Don’t error out on duplicate absolute symbols with the same value
WebAssembly Improvements
__data_end and __heap_base are no longer exported by default, as it’s best to \
keep them internal when possible. They can be explicitly exported with \
–export=__data_end and –export=__heap_base, respectively.
wasm-ld now elides .bss sections when the memory is not imported
Files: