1001 lines
57 KiB
Plaintext
1001 lines
57 KiB
Plaintext
|
-------------------------------------------------------------------
|
||
|
Tue Dec 17 06:02:19 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.35.1
|
||
|
* mold guarantees that outputs are reproducible, meaning that if you provide the
|
||
|
exact same set of input files and command-line options to the same version of
|
||
|
mold, the output is assured to be byte-for-byte identical. However, there was a
|
||
|
bug where the --icf option caused outputs to be indeterministic, even though all
|
||
|
possible outputs were logically correct (#1377). This issue has now been
|
||
|
resolved. (2a78b1b)
|
||
|
* [RISC-V] Support for obsolete GP-relative relocations has been removed. These
|
||
|
relocations were ratified (riscv-non-isa/riscv-elf-psabi-doc@d49e480) but then
|
||
|
removed (riscv-non-isa/riscv-elf-psabi-doc@ad02546) from the processor-specific
|
||
|
ABI. There are no known real-world use cases for these relocations. (04066d1)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Dec 8 08:58:41 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.35.0
|
||
|
* Big-endian ARM64 is now supported. ARM64 is a bi-endian processor, meaning that
|
||
|
the processor can run in either little- or big-endian mode. Even though
|
||
|
little-endian is the de facto standard, the ARM64 processor-specific ABI defines
|
||
|
its big-endian variant, and the ARM toolchain supports it. Now we support it
|
||
|
too. (882e7eb)
|
||
|
* Big-endian SH4 is now supported. SH4 has become a minor CPU nowadays, and its
|
||
|
big-endian variant is even more so, but some SHARP scientific calculators still
|
||
|
use SH4 processors in big-endian mode. (0cb9fc6)
|
||
|
* mold attempts to overwrite an existing file if a specified output file already
|
||
|
exists because reusing an existing file is much faster than creating a fresh
|
||
|
file and writing to it on Linux. If an existing file is currently running,
|
||
|
open(2) for that file fails with ETXTBSY. When that happens, mold falls back to
|
||
|
creating a new file. The problem here is that Linux kernel version 6.11 changed
|
||
|
that well-known behavior of open(2), and it now allows user programs to
|
||
|
overwrite a running executable. That caused a very mysterious issue for programs
|
||
|
that rebuild themselves during the build, such as gcc or ninja (#1361). Even
|
||
|
though the kernel's change has been reverted (torvalds/linux@3b83203), we need
|
||
|
to make adjustments to mold for that particular version of the Linux kernel. So,
|
||
|
if mold detects that it is running on Linux 6.11, it no longer tries to reuse an
|
||
|
existing output file. (8e4f7b5)
|
||
|
* On rare occasions, mold could fail with a "ConcurrentMap is full" error. Now the
|
||
|
issue has been resolved. (e56b649)
|
||
|
* Even if a user choose not to use mimalloc memory allocator (i.e. built mold with
|
||
|
-DMOLD_USE_MIMALLOC=0), mold was still being built with mimalloc. This issue has
|
||
|
been resolved. (ffd10dd)
|
||
|
* [s390x] s390x uses nonstandard 8-byte entries for the .hash section. Previously,
|
||
|
mold created 4-byte entries for .hash, which caused mold-generated executables
|
||
|
to crash on startup if they were built with -Wl,--hash-style=sysv. Now, mold
|
||
|
generates a psABI-compliant .hash section. (e2e1146)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Oct 4 18:37:30 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.34.1
|
||
|
* [ARM32] Fixed a regression that R_ARM_TARGET1 wasn't handled as a synonym for
|
||
|
R_ARM_ABS32 relocation. This issue caused some ARM32 programs to crash on
|
||
|
startup if linked with mold. (186272a)
|
||
|
* [RISC-V] mold now sets the STO_RISCV_VARIANT_CC dynamic tag if the ELF module
|
||
|
exports a function symbol with a non-standard calling convention. (16eb513)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Sep 25 14:21:13 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.34.0
|
||
|
* [ARM32] mold now deduplicates exception handling records in a .ARM.exidx section
|
||
|
to reduce the size of the table. (742ea87)
|
||
|
* [LoongArch] TLSDESC relocations are now supported. (dbaa6d7)
|
||
|
* --build-id=fast is now supported for compatibility with LLVM lld. mold handles
|
||
|
it as a synonym for --build-id=sha256. (afc52ee)
|
||
|
* Previously, if the same symbol was provided both by a static archive and dynamic
|
||
|
library, and if the symbol's visibility was hidden, mold sometimes failed to
|
||
|
link it and handled the symbol as if it were undefined. Now, mold can correctly
|
||
|
link such programs. (1efbe3f)
|
||
|
* Under rare circumstances, mold could create corrupted binaries if they were
|
||
|
linked with --retain-symbols-file. This bug has been fixed. (0ee12e4)
|
||
|
* [LoongArch] R_LARCH_CALL36 relocation with a large offset is now correctly
|
||
|
written. (1c32102)
|
||
|
* [FreeBSD] If all thread-local variables in a program have no initial values,
|
||
|
mold-produced executables could crash or misbehave on FreeBSD. This bug has been
|
||
|
fixed. (f6822fb)
|
||
|
* DEC Alpha support has been removed due to lack of demand. In fact, mold's Alpha
|
||
|
support has never been tested for real-world programs and was likely unable to
|
||
|
link them in the first place. This should not affect anyone because the last
|
||
|
Alpha processor was released more than 20 years ago. (3711ddb)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Aug 7 06:37:53 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.33.0
|
||
|
* mold gained a new linker flag --separate-debug-info to bundle debug info
|
||
|
sections into a separate file instead of putting them into a main output file.
|
||
|
You can optionally specify a filename in the form of
|
||
|
--separate-debug-info=<filename>. By default, a debug info file is created in
|
||
|
the same directory as the main output file with the .dbg extension. mold embeds
|
||
|
the debug file's filename into the main output file so that gdb can
|
||
|
automatically follow the link to find debug info when debugging the main output
|
||
|
file.
|
||
|
|
||
|
* The main objective of this flag is to speed up the mold linker even more. By
|
||
|
default, mold creates a separate debug file in the background after creating a
|
||
|
main output file, so that you can start running the executable as soon as
|
||
|
possible while mold is still working on linking its debug info sections. For
|
||
|
example, linking clang with debug info normally takes ~1.70s on a Threadripper
|
||
|
7980X machine, while it takes only ~0.52s with --separate-debug-info. Shaving
|
||
|
off a full second in quick edit-rebuild-run cycles should improve programmers'
|
||
|
productivity. If you do not want mold to work in the background, pass the
|
||
|
--no-detach option. (596ffa9)
|
||
|
|
||
|
* mold now supports the --no-allow-shlib-undefined flag. If the option is given,
|
||
|
mold checks if all undefined symbols are resolved not only for input object
|
||
|
files but also for shared libraries passed to the linker. To use the feature,
|
||
|
you need to pass all shared libraries, including transitively dependent ones, to
|
||
|
the linker so that the linker can resolve all symbols that are available at
|
||
|
runtime. (3001f02)
|
||
|
|
||
|
* mold gained the --dynamic-list-data flag for the sake of compatibility with GNU
|
||
|
ld. If the flag is given, all data symbols are exported as dynamic symbols.
|
||
|
(dd8d971)
|
||
|
|
||
|
* [x86-64] -z x86-64-v2, -z x86-64-v3, -z x86-64-v4 flags are supported. (5606087)
|
||
|
|
||
|
* [x86-64] Recent x86-64 processors support Intel CET to protect control flow
|
||
|
integrity. When the feature is enabled, the instruction that is executed
|
||
|
immediately after an indirect branch must be endbr64 or a CPU fault will raise.
|
||
|
In other words, it restricts the locations where the control can transfer to
|
||
|
with indirect branches. Doing that makes ROP attacks harder to conduct.
|
||
|
|
||
|
* A problem with that is the compiler needs to conservatively emit an endbr64 at
|
||
|
the beginning of each global function because the compiler doesn't know whether
|
||
|
or not the function's address is taken in other translation units. As a result,
|
||
|
the resulting binary contains more endbr64s than necessary, weakening the
|
||
|
protection.
|
||
|
|
||
|
* mold supports the -z rewrite-endbr option to conduct a whole program analysis
|
||
|
and rewrite endbr64 with nop if a function's address is not actually taken
|
||
|
within the program. Previously, mold didn't take section symbols into account
|
||
|
when conducting the analysis, which resulted in culling some endbr64s that must
|
||
|
not be removed. Now, the bug has been fixed. We confirmed that mold can build
|
||
|
itself with -z rewrite-endbr, and the resulting mold executable works fine with
|
||
|
Intel CET. (ed7eec5)
|
||
|
|
||
|
* mold now creates a .eh_frame section even if it's empty. (14a4b05)
|
||
|
|
||
|
* [LoongArch] The following relocations are now supported: R_LARCH_TLS_LE_HI20_R,
|
||
|
R_LARCH_TLS_LE_ADD_R, R_LARCH_TLS_LE_LO12_R, R_LARCH_CALL36, R_LARCH_RELAX
|
||
|
(36e5b4b, 98a7cff, 2c6f379)
|
||
|
|
||
|
* [LoongArch] Some relaxations that reduce the section size are now supported.
|
||
|
(74b359f, 121f917)
|
||
|
|
||
|
* [LoongArch] Range extension thunk support has been removed in favor of
|
||
|
R_LARCH_CALL36 relocations. (47c092a)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Jun 27 06:56:15 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.32.1
|
||
|
* Previously, shared libraries specified with --as-needed were not considered as
|
||
|
"needed" if they were referenced only by weak undefined symbols. Such weak
|
||
|
symbols were converted to absolute symbols at address zero at link-time.
|
||
|
Although this behavior was not technically wrong, it caused a significant issue
|
||
|
in a rare occasion (#1286). Now, weak undefined symbols retain --as-needed
|
||
|
shared libraries. (06b5926)
|
||
|
* [RISC-V] RISC-V object files contain ISA strings in the .riscv.attributes
|
||
|
section. Previously, we had reported valid ISA strings containing digits as
|
||
|
errors. The issue has now been resolved. (841a186)
|
||
|
* [RISC-V] We no longer write dynamic relocation addends to relocated places
|
||
|
because it caused static position-independent executables to crash on process
|
||
|
startup in some environments. In other words, --no-apply-dynamic-relocs is
|
||
|
enabled by default.
|
||
|
* LTO now works on MinGW. (50bf031)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Jun 9 10:41:50 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.32.0
|
||
|
* mold supports a feature called Identical Code Folding, or ICF. As the name
|
||
|
suggests, ICF finds identical functions and merges them to reduce the size of an
|
||
|
output file. This is especially effective for template-heavy C++ programs since
|
||
|
templates tend to be instantiated to the same machine code for different types.
|
||
|
For example, std::vector<int> is likely to be instantiated to the same code as
|
||
|
std::vector<unsigned>. We've made an improvement to our ICF algorithm so that
|
||
|
the --icf feature is ~50% faster than the previous version. (fa8e95a)
|
||
|
* The -z rodynamic option is now supported for compatibility with LLVM lld. With
|
||
|
the option, mold places the .dynamic section into a read-only segment. (9a233df)
|
||
|
* Previously, mold behaved differently compared to other linkers if both -z defs
|
||
|
and --undefined=ignore-in-object-files were given (#1270). Now, they override
|
||
|
each other so that the mold's behavior is compatible with others. (8cd85aa)
|
||
|
* Previously, --dependency-file mistakenly recorded response files as dependencies
|
||
|
(#1258). This bug has been fixed. (4281f45)
|
||
|
* There was a bug that mold corrupted debug info section contents when the
|
||
|
--relocatable option was given (#1265). This issue has been fixed. (08b0a16)
|
||
|
* [PPC64] The R_PPC64_TPREL16_LO_DS relocation type is supported. (a8cd2e8)
|
||
|
* [ARM64, PPC64, LoongArch] mold 2.31.0 or earlier may have failed with an
|
||
|
assertion failure when creating a large output file (#1224). This issue has been
|
||
|
resolved. (c7c8583)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri May 3 05:46:37 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.31.0
|
||
|
* mold is now up to 10% faster when linking very large, debug info-enabled
|
||
|
executables such as Blender (~1.8 GiB) or Clang (~3.8 GiB), thanks to several
|
||
|
improvements we've made to the string merging algorithm. (53ebcd8, d714301,
|
||
|
40f6b17, c9faf3d)
|
||
|
* -z start-stop-visibility=hidden is now supported so that linker-synthesized
|
||
|
__start_<section-name> and __stop_<section-name> symbols can be completely
|
||
|
hidden from other ELF modules. Previously, only -z
|
||
|
start-stop-visibility=protected was supported. (99a5b15)
|
||
|
* -Bsymbolic-non-weak and -Bsymbolic-non-weak-functions options are now supported
|
||
|
for compatibility with LLVM lld. Just like lld, these options control which
|
||
|
symbols are exported as dynamic symbols. -Bsymbolic-non-weak makes the linker to
|
||
|
export only weak symbols, whereas -Bsymbolic-non-weak-functions makes it to
|
||
|
export only weak function symbols. (7d17aa8)
|
||
|
* Previously, if a linker script contains a newline character in the beginning
|
||
|
four bytes of a file, it was not recognized as a linker script by mold. Now,
|
||
|
mold allows newlines at the beginning of a file. (ea054cc)
|
||
|
* Under rare circumstances, the INPUT linker script command may have found a
|
||
|
different file than GNU ld would. Now, mold's behavior aligns with GNU ld's.
|
||
|
(163975d)
|
||
|
* Previously, the --repro option produced corrupted tar files. Now the bug has
|
||
|
been fixed. (32c4a09)
|
||
|
* mold generally guarantees that its output is reproducible, meaning that if you
|
||
|
run the linker with the exact same command line options and input files, the
|
||
|
output is guaranteed to be bit-for-bit identical to the previous outputs.
|
||
|
However, under rare circumstances, it might produce different output due to a
|
||
|
bug. It's reported that this nondeterminism caused random crashes for some
|
||
|
programs (#1247). This bug has been fixed. (6463a7c)
|
||
|
* mold no longer sets the address of the .text section as the entry point address
|
||
|
if --entry option is not given, just like LLVM lld. (020b1a7)
|
||
|
* [RISC-V] __global_pointer$ symbol is now exported from executables as required
|
||
|
by the processor-specific ABI. (3df7c8e)
|
||
|
* [ARM32] --long-plt option is now recognized as known option by mold. mold
|
||
|
ignores the option, though, because the PLTs generated by our linker is always
|
||
|
long. (d432e98)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Mar 17 05:42:45 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.30.0
|
||
|
* We have increased the version number from 2.4.1 to 2.30.0, even though this
|
||
|
release contains only minor bug fixes. This change was made to prevent GNU
|
||
|
libtool from mistaking mold 2.4.1 for GNU ld 2.4.1, which led it to incorrectly
|
||
|
conclude that our linker was an outdated version of the GNU linker. Bumping up
|
||
|
the version number to align with GNU ld may not be the most elegant solution,
|
||
|
but it is a practical approach to resolve the compatibility issue with GNU
|
||
|
libtool. (c7f6a91)
|
||
|
* Previously, mold may have inserted an unnecessary gap before the .bss section in
|
||
|
an output file, thereby creating an extra segment for it. While not technically
|
||
|
incorrect, it was certainly unnecessary. mold 2.30.0 eliminates this unnecessary
|
||
|
on-disk gap for .bss. (c395da1)
|
||
|
* Previously, under rare circumstances, mold might fail with the "ConcurrentMap is
|
||
|
full" error message if --gdb-index was used. This bug has been resolved.
|
||
|
(c60d1d0)
|
||
|
* Previously, mold might generate an excessive number of "ignoring .llvm_addrsig
|
||
|
section without sh_link" warnings. These warnings are now suppressed. (51f871f)
|
||
|
* Sections with unknown section types are now reported as errors. (d21207c)
|
||
|
* [PPC32] A crash bug related to --gc-sections has been fixed. (8eae0a3)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Mar 1 16:17:35 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Align path for document installation between openSUSE versions.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Mar 1 14:47:15 UTC 2024 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.4.1
|
||
|
* mold 2.4.0 or prior may promote weak dynamic symbols to strong ones under a rare
|
||
|
circumstance, which caused "undefined symbol" error at runtime. The bug has been
|
||
|
fixed. (50bdf39)
|
||
|
* Previously, if two or more VERSION clauses in a version script match to the same
|
||
|
symbol, the first one took precedence. This was incompatible with GNU ld, which
|
||
|
gives the last one the highest priority, causing a Qt library link failure. This
|
||
|
compatibility issue has been resolved. (e1e16bf)
|
||
|
* By default, we demangle symbols in error messages so that they are easier to
|
||
|
read. Previously, Rust symbols could accidentally be demangled as C++ symbols.
|
||
|
Now, mold attempts to demangle symbols as Rust ones only for object files
|
||
|
created by rustc. (ea9864b)
|
||
|
* [RISC-V] mold now relaxes a GOT-load instruction sequence into a direct address
|
||
|
materialization if the symbol address is known at link time. This relaxation
|
||
|
eliminates one memory load and slightly improves the linked program's
|
||
|
performance. (2ccaa81)
|
||
|
* [PowerPC64 ELFv2] GCC may emit references to _savegpr0_*, _restgpr0_*,
|
||
|
_savegpr1_* and _restgpr1_* symbols for the -Os command line option to optimize
|
||
|
the output for code size. These symbols are not defined by any object file and
|
||
|
expected to be synthesized by the linker. mold didn't use to synthesize these
|
||
|
symbols, and therefore object files created with -Os sometimes failed due to
|
||
|
missing symbol errors. Now, mold synthesizes these symbols. (d4ff48a)
|
||
|
* [PowerPC64] R_PPC64_DTPREL16_LO_DS relocation type has now been supported.
|
||
|
(6d8e6af)
|
||
|
* [Illumos] On Illumos OS, absolute symbols in DSOs need to be resolved at runtime
|
||
|
because the dynamic linker treats such symbols in a special manner. Previously,
|
||
|
mold directly used absolute symbol addresses at link-time and did not place them
|
||
|
into the dynamic symbol table. That optimization has been removed for
|
||
|
compatibility with Illumos. (bed5b17, 7f8d77d)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Nov 30 05:33:24 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.4.0
|
||
|
* mold gained the --spare-program-headers=<number> option, which adds a specified
|
||
|
number of spare entries at the end of the program header. The option aims to
|
||
|
make post-processing tools to add program header entries very easily. Note that
|
||
|
sorting program header entries after adding new ones may be necessary to meet
|
||
|
the constraints of the ELF file format. For details, see the elf(5) man page.
|
||
|
(eb6c213)
|
||
|
* mold's -z rewrite-endbr option rewrites superflous endbr64 instructions with nop
|
||
|
as a countermeasure against control-flow highjacking attacks. Previously, this
|
||
|
worked exclusively with object files compiled with -ffunction-sections,
|
||
|
requiring each function to be compiled into a separate section. Starting from
|
||
|
this release, -z rewrite-endbr works on object files compiled without it. In
|
||
|
other words, mold is now capable of rewriting endbr64 instructions even if the
|
||
|
instruction is not at the beginning of a section. (3cb8a52)
|
||
|
* Previously, mold couldn't handle object files containing multiple .eh_frame
|
||
|
sections. The .eh_frame is a section containing data for exception handling.
|
||
|
Usually, an object file contains only one .eh_frame which describes how to
|
||
|
handle exceptions for all text sections in the same file. However, on rare
|
||
|
conditions, it seems ld -r creates an object file containing multiple .eh_frame
|
||
|
sections. mold is now able to handle such object files. (f4c5a8a)
|
||
|
* mold -run <command> is an easy way to run the given command with a virtual
|
||
|
environment in which the ld command is replaced with mold. The feature is
|
||
|
implemented using LD_PRELOAD to hook fork(2)-family functions. Before this
|
||
|
release, some invocations of ld were not intercepted correctly because we missed
|
||
|
the posix_spawnp(2) function. Now, the function is intercepted just like other
|
||
|
fork(2)-family functions. (3fd1cec)
|
||
|
* mold used to produce a non-working executable on a rare occasion when all
|
||
|
thread-local variables lacked an initial value and the read-only data required
|
||
|
alignment equal to or greater than the page size. This bug has been resolved.
|
||
|
(de7d37e)
|
||
|
* Previously, mold might assign a different symbol version to a symbol compared to
|
||
|
GNU ld if it matches both a wildcard pattern and an exact pattern in a version
|
||
|
script. Our behavior is now compatible with that of GNU ld. (0fdbace)
|
||
|
* [x86-64, i686] Recent versions of LLVM emit a machine code sequence for TLSDESC
|
||
|
thread-local variables that differs from GCC's, and mold previously
|
||
|
mis-optimized this sequence, leading to crashes in the linked programs. In other
|
||
|
words, if you are using LLVM/Clang and compile object files with
|
||
|
-mtls-dialect=gnu2, mold might mis-optimize the output file. Now, the bug has
|
||
|
been fixed. (000ce0e)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Nov 14 14:57:48 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.3.3
|
||
|
* --dynamic-list has different semantics for executables and DSOs. Previously,
|
||
|
mold implemented only the semantics for executables, causing issues with
|
||
|
libraries such as musl that used this option. mold now handles the option for
|
||
|
DSOs correctly. (da3f5dd)
|
||
|
* Old object files often contain .ctors and .dtors sections, which hold function
|
||
|
pointers for initializing and finalizing processes, respectively. Their roles
|
||
|
have been superseded by .init_array and .fini_array on most targets. mold worked
|
||
|
functioned correctly as long as input object files consistently use the old or
|
||
|
the new sections. However, mixing object files that contain both types of
|
||
|
initializers/finalizers resulted in some functions not being executed. This
|
||
|
issue has been fixed. (3f88964)
|
||
|
* --defsym can cause the linker to crash if a given symbol is not defined. The
|
||
|
crash bug has been fixed. (ff3d54d)
|
||
|
* [POWER10] On rare occasions, pointers statically initialized to functions could
|
||
|
be left as null pointers. This bug has been fixed. (31c3b53)
|
||
|
- Remove upstreamed patch power10-fix.patch.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Nov 6 18:20:07 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Add power10 fix power10-fix.patch for #1142.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Nov 5 06:53:29 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.3.2
|
||
|
* Remove upstream patch fix-arm.patch.
|
||
|
* mold no longer emits dynamic relocations against the text segment for GNU ifunc
|
||
|
symbols. Previously, mold emitted such relocations for position-dependent
|
||
|
executables. (4cdfc7e)
|
||
|
* mold no longer reports the "REL-type relocation table is not supported for this
|
||
|
target" error and instead ignore incompatible relocation tables. LLVM generates
|
||
|
such non-conforming relocation tables for the .llvm.call-graph-profile section.
|
||
|
This change was made for compatibility. (3791900)
|
||
|
* mold now pads unused gaps in the text segment with interrupt or NOP
|
||
|
instructions, instead of leaving them filled with zeros. This alteration does
|
||
|
not change the program's semantics but prevents disassemblers from interpreting
|
||
|
the spaces between functions as valid instructions. (c86a59a)
|
||
|
* mold now creates the .mold-lock file for MOLD_JOBS not in the home directory but
|
||
|
in $XDG_RUNTIME_DIR, which is usually /var/user/<uid>. (39cdf61)
|
||
|
* [ARM32] There was an issue preventing mold from being built on an ARMv8 64-bit
|
||
|
ARM processor with an ARM32 userland, such as the 32-bit Raspberry Pi OS running
|
||
|
on a Raspberry Pi 4. This build issue has been resolved. (02ead29)
|
||
|
* [LoongArch] mold can now handle R_LARCH_PCALA_LO12 relocation for the jirl
|
||
|
instruction. (d3188e3)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Oct 25 13:02:13 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Add fix-arm.patch in order to fix failing arm-arm_range-extension-thunk2 test.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Oct 20 08:21:20 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.3.1
|
||
|
* [ARM32, ARM64, PowerPC, LoongArch] mold 2.3.0 would crash when handling large
|
||
|
output files. This was due to a bug in the code that creates range extension
|
||
|
thunks. This issue has now been resolved. (7be1b66)
|
||
|
* [LoongArch] mold is now capable of handling relocations generated for the
|
||
|
-mcmodel=extreme flag. (4bd80ec)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Oct 18 12:34:13 UTC 2023 - Martin Liska <martin.liska@melowntech.com>
|
||
|
|
||
|
- Update to version 2.3.0
|
||
|
* [x86-64] mold 2.3.0 has introduced an experimental flag, -z rewrite-endbr, which
|
||
|
rewrites superfluous endbr64 instructions as nop.
|
||
|
* endbr64 is a relatively recent x86 instruction used to mark locations where an
|
||
|
indirect jump instruction can transfer control. With control-flow integrity
|
||
|
enabled (meaning endbr64 is effective), an indirect jump can only target an
|
||
|
endbr64 or it will trigger a runtime exception. This mechanism significantly
|
||
|
hinders certain control hijacking attacks, such as ROP or JOP, since attackers
|
||
|
cannot jump to just any location.
|
||
|
* When given the -fcf-protection flag, GCC conservatively places an endbr64 at the
|
||
|
beginning of every global function. This is because the function's address might
|
||
|
be taken as a pointer by other translation units. However, in most cases,
|
||
|
function addresses are not actually taken. This conservative approach results in
|
||
|
an overabundance of unnecessary endbr64 instructions, leading to not only code
|
||
|
bloating but also a potential decrease in security as there are more locations
|
||
|
for an attacker to exploit.
|
||
|
* The new linker option, -z rewrite-endbr, aims to alleviate this issue. The
|
||
|
linker can carry out a whole-program analysis on the input files to identify
|
||
|
functions whose addresses are never taken. If -z rewrite-endbr is specified,
|
||
|
mold will conduct this analysis and replace the initial endbr64 with a nop for
|
||
|
functions whose addresses aren't taken. (17f0d85)
|
||
|
* mold now produces a more compact .gdb_index section when using the --gdb-index
|
||
|
flag. Additionally, mold now generates a correct .gdb_index section for object
|
||
|
files created by Clang. (a396fa4)
|
||
|
* mold is now capable of handling input sections larger than 4 GiB. (0ce32d3)
|
||
|
* [PPC] mold can now generate executables for POWER10 processors. Previously,
|
||
|
executables produced by mold would crash immediately on startup on POWER10.
|
||
|
(0f71471)
|
||
|
* [ARM64] When a function with a non-standard calling convention is exported, it's
|
||
|
mandatory for the linker to turn on the STO_AARCH64_VARIANT_PCS flag to notify
|
||
|
the dynamic linker. mold now appropriately sets this flag. (2e3b56e)
|
||
|
* [RISC-V] mold now supports new GP-relative relocations. (ac3ee91)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Sep 26 20:11:13 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Add build-blake-3-as-static.patch that builts BLAKE 3 support as static library
|
||
|
into mold. The library is not provided in openSUSE yet.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Sep 24 17:50:53 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.2.0
|
||
|
* We now use BLAKE3 as a cryptographic hash function instead of SHA256. This
|
||
|
change has made --build-id a few percent faster. libssl is no longer a build
|
||
|
dependency. (7f7a744)
|
||
|
* mold is now a few percent faster than the previous version due to an
|
||
|
optimization of string merging code path. (1a13c50)
|
||
|
* mold now emits slightly optimized code for thread-local variable accesses.
|
||
|
(f057fda, d56f528)
|
||
|
* [RISC-V] mold now supports TLSDESC relocations. TLSDESC is a new mechanism for
|
||
|
faster thread-local variable access. We (@ishitatsuyuki) actually led the effort
|
||
|
to ratify the specification (riscv-non-isa/riscv-elf-psabi-doc#373) and
|
||
|
implement it to compiler toolchain including GCC, GNU binutils and, of course,
|
||
|
mold. (141556d)
|
||
|
* mold no longer marks an as-needed .so as "needed" if the .so file is not
|
||
|
directly used by the output file. Previously, mold marked a .so file as "needed"
|
||
|
if the .so file was used by another "needed" .so file. (f02db0f)
|
||
|
* [PPC64] --execute-only now works on 64-bit PowerPC. (ac20d87, 51fec5f)
|
||
|
- Remove openssl dependency.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Aug 13 19:37:35 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.1.0
|
||
|
* Loongson's LoongArch CPU has been supported. (03b1a1c)
|
||
|
* -z nosectionheader has been added to eliminate section headers from the output
|
||
|
file. (084ca55)
|
||
|
* Previously, linking with the -z pack-relative-relocs option produces an
|
||
|
executable that glibc 2.38 refuses to run with DT_RELR without GLIBC_ABI_DT_RELR
|
||
|
dependency error. Now, mold produces binaries compatible with glibc 2.38.
|
||
|
(f467ad1)
|
||
|
* [ARM64] R_AARCH64_ADR_PREL_PG_HI21_NC relocation type has been supported.
|
||
|
(17a5c3e)
|
||
|
* [ARM64] R_AARCH64_MOVW_UABS_G3 relocation type has now been handled as a
|
||
|
PLT-generating relocation to fix an issue when main is not defined in the main
|
||
|
executable but rather in a .so file. (e764557)
|
||
|
* [RISC-V] We now merge input .riscv.attributes contents. Previously, we just
|
||
|
concatenated them. (aa64491)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Jul 26 13:07:20 UTC 2023 - Martin Liška <martin.liska@hey.com>
|
||
|
|
||
|
- Update to version 2.0.0
|
||
|
* License changed to MIT.
|
||
|
* Previously, mold could not produce an object file with more than 65520 sections
|
||
|
using the --relocatable option. Now the bug has been fixed. (2e8bd0b)
|
||
|
* mold now interprets -undefined as a synonym for --undefined instead of -u
|
||
|
ndefined. This seems inconsistent, as -ufoo is generally treated as -u foo
|
||
|
(which is an alias for --undefined foo), but this is the behavior of the GNU
|
||
|
linkers and LLVM lld, so we prioritize compatibility over consistency.
|
||
|
* -nopie is now handled as a synonym for --no-pie.
|
||
|
* [RISC-V] R_RISCV_SET_ULEB128 and R_RISCV_SUB_ULEB128 relocation types are now
|
||
|
supported (4bffe26, 1ac5fe7)
|
||
|
* [PPC64] R_PPC64_REL32 relocation type is now supported. (ebd780e)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Mar 16 09:48:39 UTC 2023 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.11.0
|
||
|
* IBM Power10 has been supported. Previously, mold created broken executables for
|
||
|
that target. (5065547)
|
||
|
* --hash-style=none has been added to cancel --hash-style=sysv, --hash-style=gnu
|
||
|
or --hash-style=both. (ec75633)
|
||
|
* [ARM32] R_ARM_PLT32 relocation type has been supported. (e505900)
|
||
|
* [RISC-V] R_RISCV_PLT32 relocation type has been supported. (51845ac)
|
||
|
* Previous versions of mold failed to link some programs in rare corner cases if
|
||
|
Link-Time Optimization (LTO) is enabled. These bugs have been fixed. (e1a7590,
|
||
|
62d6537)
|
||
|
* mold used to ignore dependencies between DSOs. Since this version, if a required
|
||
|
DSO depends on other as-needed DSO, mold keeps the latter DSO as a required one.
|
||
|
This improves compatibility with GNU linkers. (1adde7a)
|
||
|
* [x86-64] mold can now link object files generated by old buggy versions of GCC.
|
||
|
(d2970e0)
|
||
|
* [x86-64] Previously, a program with a very large .bss section may fail to link
|
||
|
due to R_X86_64_REX_GOTPCRELX relocation overflow (#975). This bug has been
|
||
|
fixed. (627bf7c)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Jan 22 08:23:35 UTC 2023 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.10.1
|
||
|
* mold 1.10.0 had a buffer overrun bug that causes the linker to terminate
|
||
|
immediately if compiled with -D_GLIBCXX_ASSERTIONS. We fixed the unsafe memory
|
||
|
access in this release. (7e65546)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Jan 20 12:19:11 UTC 2023 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.10.0
|
||
|
* mold now officially supports the --print-dependencies option to print out
|
||
|
dependency information between input files. Here is a truncated example output
|
||
|
when linking mold itself with the option. There are many use cases of the
|
||
|
option; for example, if you want to eliminate the dependency to some library
|
||
|
from your program, you can use this option to find out all the functions that
|
||
|
use the library's function to fix them. (6fd47db)
|
||
|
* [x86-64][s390x] mold now optimizes thread-local variable accesses in shared
|
||
|
libraries if the library is linked with -z nodlopen. If your shared library is
|
||
|
not intended to be used via dlopen(2) and your library frequently accesses
|
||
|
thread-local variables, you might want to pass that option when linking your
|
||
|
library. (25d02bb, f32ce33)
|
||
|
* [arm64] mold is now able to optimize GOT load by rewriting an ADDR+LDR
|
||
|
instruction pair with an ADDR+ADD if the loaded GOT value is known at link-time.
|
||
|
(f2311b1)
|
||
|
* mold 1.9.0 was up to 10% slower than 1.8.0 on some multicore machines. We fixed
|
||
|
the performance regression and made it even faster than 1.8.0. (7132822)
|
||
|
* Previously, mold failed to report an undefined symbol error if there's a weak
|
||
|
undefined symbol of the same name. That bug resulted in producing a non-working
|
||
|
executable instead of reporting a link failure. Now, mold correctly reports such
|
||
|
link errors. (8936194)
|
||
|
* mold 1.9.0 might crash with SIGSEGV if --emit-relocs is used with object files
|
||
|
containing debug info. That bug has been fixed. (e17d7da)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Jan 6 11:38:43 UTC 2023 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
||
|
|
||
|
- Enable build on ppc now that the target is supported upstream
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Jan 6 09:38:06 UTC 2023 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.9.0
|
||
|
* mold gained support for the three new targets: 32-bit PowerPC, SH-4 and DEC
|
||
|
Alpha. Each porting work didn't take more than a few days for us to complete,
|
||
|
which demonstrate how portable the mold linker is. You can typically port mold
|
||
|
to a new target just by writing a few hundreds lines of target-specific code.
|
||
|
See arch-*.cc files in mold/elf/ directory to see how target-specific code
|
||
|
actually looks like. (651adad, 3411e17, 6231510)
|
||
|
* Bug fixes and compatibility improvements
|
||
|
* In a rare occasion, a statically-initialized function pointer might get a wrong
|
||
|
address in a statically-linked executable. This bug has been fixed. (ccd47db)
|
||
|
* Fixed a -gdb-index option's crash bug on big-endian hosts. (3c96828)
|
||
|
* [RISC-V] mold rewrote machine instructions in a wrong way as a result of a wrong
|
||
|
R_RISCV_HI20 relaxation if the output file was being linked against the high
|
||
|
address. It's not a problem for user-land programs, but kernels linked with mold
|
||
|
could crash due to this bug. This bug has been fixed. (3c96828)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Dec 27 09:47:12 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.8.0
|
||
|
* The --relocatable (or -r) option has been reimplemented to improve its
|
||
|
performance and compatibility with the GNU linkers. That option tells the linker
|
||
|
to combine input object files into another object file instead of into an
|
||
|
executable or a shared library file. mold has been supporting the feature since
|
||
|
version 0.9, but until now the output file created with -r looked fairly
|
||
|
different from what GNU linkers would produce. GHC (Glasgow Haskell Compiler) in
|
||
|
particular uses re-linkable object files as dynamic libraries instead of real
|
||
|
.so files, and it didn't work with mold. Now, mold can produce object files that
|
||
|
GHC can load. Note that this work was funded by Mercury, so thanks to the
|
||
|
company to help us improve the product. (Yes, you can ask us to prioritize your
|
||
|
feature request by funding the project.) (c9a7ae7)
|
||
|
* --relocatable-merge-sections option has been added. By default, mold keeps
|
||
|
original input section names for the --relocatable output and therefore does not
|
||
|
merge input sections into a single output sections unless they are of the same
|
||
|
name. If --relocatable-merge-sections is given, mold merges input by the usual
|
||
|
default merging rule. For example, .text.foo and .text.bar are merged to .text
|
||
|
if and only if --relocatable-merge-sections is given for the --relocatable
|
||
|
output. (c2a0ae1)
|
||
|
* -z [no]dynamic-undefined-weak options have been added. This option controls
|
||
|
whether an undefined weak symbol is promoted to a dynamic symbol or not.
|
||
|
(ed235f3)
|
||
|
* --[no-]undefined-version options have been supported. Now, mold warns on a
|
||
|
symbol name in a version script if it does not match with any defined symbol.
|
||
|
This change was made so that it is easy to find a typo in a version script.
|
||
|
(e2d7353)
|
||
|
* mold now warns on symbol type mismatch. If two object files have the same symbol
|
||
|
with different symbol types, it usually means your program has a bug. Chances
|
||
|
are, you are using the same identifier as a function name in one translation
|
||
|
unit and as a global variable name in another. So it makes sense to warn on the
|
||
|
mismatch. (b70211e)
|
||
|
* mold now merges .gnu.note.property sections for various x86 properties.
|
||
|
(d30d743)
|
||
|
* The experimental macOS/iOS support has been removed from mold. If you want to
|
||
|
use it, please use our sold linker instead.
|
||
|
* --wrap now works with LTO. (07d8911)
|
||
|
* A global variable initialized with an IFUNC function pointer is now initialized
|
||
|
correctly with the function's address. Previously, it was mistakenly initialized
|
||
|
to the function resolver's address. (b2858d2)
|
||
|
* The filename specified by --version-script or --dynamic-list is now searched
|
||
|
from library search paths if it does not exist in the current working directory.
|
||
|
This behavior is compatible with GNU linkers. (3c1a055, 8c87f16)
|
||
|
* mold now tries to avoid creating copy relocations as much as possible. This
|
||
|
change fixed a compatibility issue with GHC. (5866c9e)
|
||
|
* Thread-local variables are now correctly aligned even if there's a TLV with a
|
||
|
large alignment. (bd46edf)
|
||
|
* mold can now handle GCC LTO files created with -ffat-lto-objects. (804b843)
|
||
|
* mold now accepts -z nopack-relative-relocs as an alias for
|
||
|
--pack-dyn-relocs=none for the sake of compatibility with GNU linkers. (b510588)
|
||
|
* mold now recognizes -z start-stop-visibility=hidden but ignores it because it's
|
||
|
the default for mold. GNU linkers support this option to control the visibility
|
||
|
of linker-synthesized __start_<sectname> and __stop_<sectname> symbols, with
|
||
|
global as the default visibility. mold creates these symbols with the hidden
|
||
|
visibility by default, which is desirable for almost all cases. (22c9ec8)
|
||
|
* [ARM32, i386] mold now emits REL-type relocations instead of RELA-type for the
|
||
|
--relocatable output file. (8b373d3)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Nov 18 14:08:15 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.7.1
|
||
|
* mold 1.7.0 may generate the same build-id for two different output files. We
|
||
|
fixed the issue in 1.7.1 so that build-id is guaranteed to be unique for each
|
||
|
different output file. (d8dd124)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Nov 14 11:12:19 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.7.0
|
||
|
* [m68k] mold now supports the Motorola 68000 series microprocessors. Yes, it's
|
||
|
the processor in the original Mac or Sun workstations in the 80s. This work is
|
||
|
sponsored by m68k hobbyist communities.
|
||
|
* We fixed a few issues for Facebook/Meta's BOLT optimizer (#789). Starting from
|
||
|
the next LLVM release (we need llvm/llvm-project@20204db), BOLT should work on
|
||
|
mold-generated executables out of the box.
|
||
|
* We fixed a long-standing symbol resolution issue involving GNU UNIQUE symbols
|
||
|
which caused a link failure for a few programs. (730e970)
|
||
|
* Previously, if a version script contains a "C++" directive, and a symbol matches
|
||
|
a non-C++ version pattern and a C++ version pattern, a wrong version could be
|
||
|
assigned to the symbol. This has been fixed so that the mold's behavior matches
|
||
|
with GNU ld. (9875150)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Oct 19 08:20:22 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.6.0
|
||
|
* [ppc64] mold now supports the original 64-bit big-endian PowerPC ABI (which is
|
||
|
also known as PPC64 ELFv1 or just ppc64), so that you can build applications for
|
||
|
older PPC64 systems with mold. Note that this should not be confused with the
|
||
|
modern PPC64 ELFv2 ABI (which is also known as ppc64le), which is already
|
||
|
supported by mold.
|
||
|
* [s390x] Linux/s390x is now supported. Linux/s390x is the Linux environment
|
||
|
running on IBM z/Architecture mainframes. I've personally never seen a
|
||
|
mainframe, but we wanted to support it because many Linux distros actively
|
||
|
support that target, which in turn means there are many enterprise users who are
|
||
|
using IBM mainframes. Speaking of the porting effort, we do not only port our
|
||
|
linker to s390x but also found a couple of issues with the existing GCC
|
||
|
toolchain for s390x. So, we are improving the whole IBM mainframe ecosystem!
|
||
|
* mold now creates smaller output files. It is most noticeable on targets with
|
||
|
large page sizes such as PPC64 (on which the common page size is 64 KiB), but
|
||
|
even on x86-64, it should save a few kilobytes per an output file.
|
||
|
* [arm64] mold can now link executables with -static-pie. Previously, executables
|
||
|
linked with that flag crashed immediately.
|
||
|
- Exclude ppc architecture as it is not supported right now.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Sep 29 07:06:19 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.5.1
|
||
|
* We changed the memory layout to save both memory and disk space in 1.5.0. Even
|
||
|
though the new layout works fine on most systems, the change made the linker to
|
||
|
create unusable executables for systems with large pages. Specifically, if you
|
||
|
specify a large number for the -z max-page-size option, the loader refused to
|
||
|
execute it with the error while loading shared libraries: cannot apply
|
||
|
additional memory protection after relocation: Cannot allocate memory error. We
|
||
|
reverted our recent commits so that mold creates output files with the same
|
||
|
memory layout as it did before 1.5.0. (e62de0b)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Sep 27 07:10:17 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.5.0
|
||
|
* PPC64LE and SPARC64 are now supported as new targets. They haven't yet been as
|
||
|
well tested as other targets, but they are already able to link mold itself on
|
||
|
these platforms. (Note that PPC64LE is very unlikely to work on the most recent
|
||
|
POWER10 machines as we didn't have a chance to test it due to a limited
|
||
|
availability (POWER10 was released in 2021). If you can support us on this
|
||
|
matter, please contact us. We also accept donations, so please consider
|
||
|
supporting our project!)
|
||
|
* RV32BE and RV64BE (32-bit and 64-bit big-endian RISC-V) are now supported as
|
||
|
experimental targets. RISC-V is usually little-endian, but there exists a
|
||
|
big-endian RISC-V as an extension. You can make gcc to emit code for big-endian
|
||
|
RISC-V by passing -mbig-endian. mold can now link object files generated with
|
||
|
that option.
|
||
|
* --compress-debug-sections=zstd is now supported. This is an option to compress
|
||
|
debug info embedded to an output file with Zstandard compression algorithm.
|
||
|
Compared to the existing --compress-debug-sections=zlib, zstd is faster and
|
||
|
gives a higher compression ratio. You probably can't start using zstd
|
||
|
compression today though, because other tools such as gdb may not be able to
|
||
|
read zstd-compressed debug info yet. But adding this option early makes mold
|
||
|
future-proof. (ede7a5a)
|
||
|
* mold no longer aligns loadable segments to page boundaries to reduce output file
|
||
|
size. Previously, we allocated holes between loadable segments. The saving by
|
||
|
this change is most visible for small programs. For example, a "hello world"
|
||
|
program used to be ~18 KiB on x86-64. It's now 7.2 KiB. (2941d75)
|
||
|
* Bug fixes and compatibility improvements
|
||
|
* [RISCV] We optimized code so that the link speed for RISC-V is now comparable to
|
||
|
the other targets. As an example, linking mold itself (~150 MiB in size) for
|
||
|
RV64 used to take ~45 seconds on a simulated 16-core machine. It now takes only
|
||
|
~0.25 seconds. (3ab5489)
|
||
|
* mold used to create more than one .rodata section under a certain condition.
|
||
|
It's not technically wrong but confused Valgrind. This issue has been resolved.
|
||
|
(25c7aee)
|
||
|
* [ARM32] Previously, mold failed to promote remaining undefined symbols to
|
||
|
dynamic symbols if symbols are undefined weak. That caused a link failure for
|
||
|
libxml (#660). This issue has been resolved. (72e26d9)
|
||
|
* mold didn't copy symbol types when creating symbol aliases for the --defsym
|
||
|
option. (8c7f31c)
|
||
|
* --compress-debug-sections=zlib-gnu has been removed. LLVM lld removed that
|
||
|
option too as there seems to be no usage of the flag.
|
||
|
- Enable ppc64le and use system zstd library as package dependency.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Sep 4 06:29:52 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.4.2
|
||
|
* [RV32] We've fixed several issues for 32-bit RISC-V.
|
||
|
mold can now build complex programs including itself for the target.
|
||
|
* [ARM32] mold gained range extension thunks so that it can now link programs whose
|
||
|
.text is larger than 16 MiB. Previously, mold couldn't link such large programs.
|
||
|
We've also fixed general stability issues for ARM32.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Aug 18 09:28:25 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.4.1
|
||
|
* mold/macOS is now available as an alpha feature. We do not recommend using it for anything
|
||
|
serious though. Starting from this version, we accept not only mold/Unix issues but also
|
||
|
mold/macOS ones on our GitHub Issues. Feel free to file a bug if you encounter any problem.
|
||
|
* We started supporting CMake in addition to Make to build mold. Our long-term plan is to migrate
|
||
|
from Make to CMake because we want to support Windows eventually and CMake provides
|
||
|
a better Windows support than Make does. (e6a0e67)
|
||
|
* There was a bug that mold accidentally exported a hidden symbol from an executable
|
||
|
if a shared library linked to that executable happened to define the same symbol.
|
||
|
This caused a build issue with Blender (#606). The bug has been fixed. (b163068)
|
||
|
--hash-style=both is now the default if no --hash-style option is given. Previously,
|
||
|
--hash-style=sysv was the default. This change shouldn't affect most users because
|
||
|
the compiler driver (cc, gcc, clang, etc.) always passes --hash-style to the linker.
|
||
|
We made this change because GNU ld defaults to --hash-style=both.
|
||
|
* Alias symbols defined by the --defsym option now have the same scope as the aliased symbols.
|
||
|
Previously, alias symbols defined by --defsym were always hidden and never
|
||
|
be exported as dynamic symbols. (5dd1227)
|
||
|
* mold now accepts foo = bar-style linker script directive to define symbol aliases.
|
||
|
Previously, such statement was treated as a syntax error.
|
||
|
This change was made to link mariadb-connector-c correctly (f0e1237)
|
||
|
* Symbols in mergeable string sections now have correct output section
|
||
|
indices instead of SHN_UNDEF. (a595c48)
|
||
|
* [ARM32] Previously, calling a function from ARM code to Thumb code
|
||
|
caused a program crash due to bug #442. This issue has been fixed. (053b90b)
|
||
|
- Run tests in parallel.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Aug 5 16:54:51 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.4.0
|
||
|
* Initial support for the 32-bit RISC-V (RV32) has landed. (d9db6bc)
|
||
|
* mold now demangles Rust symbols in error messages thanks to @eddyb's rust-demangle.c. (22e1bba)
|
||
|
* --export-dynamic-symbol and --export-dynamic-symbol-list are now supported for
|
||
|
the sake of compatibility with LLVM lld. With these options, you can specify
|
||
|
symbols that should be exported using glob pattern. (e115aae)
|
||
|
* [x86-64] PLT entries created by mold now always begins with ENDBR64 instruction
|
||
|
to improve compatibility with Intel IBT (Indirect Branch Tracking.) (e3e371d)
|
||
|
* mold now defines __dso_handle symbol. The lack of this linker-synthesized symbol
|
||
|
caused a link error with GCC in some environments (#507). (764d757)
|
||
|
- Remove fix-tests.patch.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Aug 1 05:35:29 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Add fix-tests.patch which fixes tests on i586.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Jul 1 09:13:58 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.3.1
|
||
|
* mold now supports .preinit_array sections. Without this,
|
||
|
AddressSanitizer didn't work in some environments. (3b75398)
|
||
|
* [ARM32] R_ARM_MOVT_PREL and R_ARM_PREL31 relocations are now handled
|
||
|
correctly so that mold no longer emit spurious "recompile with -fPIC" errors. (5294300)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sat Jun 18 07:10:09 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.3.0
|
||
|
* The --icf=safe option has been supported.
|
||
|
* LTO now works reliably under a heavy load.
|
||
|
mold used to abort occasionally under such condition on Linux
|
||
|
due to a spurious failure of pthread_create(2). (d8a8877)
|
||
|
* mold now prints out undefined symbol errors in a format similar to LLVM lld. (13816a1)
|
||
|
* mold now prints out a better error message for the disk full situation. (5969260)
|
||
|
* mold can now build GCC 12 with LTO. (708ad63)
|
||
|
* Fixed an LTO issue on 32-bits hosts such as i686. (920266b)
|
||
|
* mold is now AddressSanitizer and UndefinedSanitizer clean. (fafb75b, 3499ee6)
|
||
|
* mold used to create broken debug info on 32-bits hosts (#490).
|
||
|
The bug has been fixed. (0abd0a4)
|
||
|
* mold used to accept not only a single dash but also double
|
||
|
dashes for single-letter options. For example, --S was accidentally accepted as an alias for-S.
|
||
|
This is unconventional, and such options are no longer accepted. (232dafa)
|
||
|
* --color-diagnostics is now an alias for --color-diagnostics=auto
|
||
|
instead of --color-diagnostics=always for compatibility with LLVM lld.
|
||
|
* pkg-config is no longer needed to build mold.
|
||
|
* The --package-metadata option is supported. (#505, e9f6715)
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri May 13 09:31:25 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Use better CC and TEST_CC variables.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri May 13 09:21:22 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Add memory per job constraint.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue May 10 12:30:07 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Do not use mimalloc, use system glibc allocator.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu May 5 11:17:01 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Add valgrind as BuildRequire argument.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Thu Apr 28 12:49:30 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.2.1
|
||
|
* Various bugs in --gdb-index have been fixed.
|
||
|
* mold now recognizes --thinlto-cache-dir and --thinlto-cache-policy
|
||
|
for the sake of compatibility with LLVM lld. (7ebd071)
|
||
|
* mold can now handle TLS common symbols. It looks like GCC
|
||
|
sometimes creates such symbol for a thread-local variable. (cf850f8)
|
||
|
* In some edge cases, mold created a non-versioned symbol and
|
||
|
a versioned one for the same symbol, even though if one symbol is versioned,
|
||
|
all symbols of the same name must be versioned.
|
||
|
This bug has been fixed. (8298c0a)
|
||
|
* mold used to write a PLT address of a symbol instead
|
||
|
of its address to .symtab. This bug has been fixed. (e088db7)
|
||
|
* mold can now handle an input file
|
||
|
with more than 219 symbols. (f1f2d40)
|
||
|
* /usr/local/libexec/mold/ld is now installed
|
||
|
as a relative symlink instead of an absolute symlink. (5803c3c)
|
||
|
- Removed upstreamed fix-gdb-index.patch patch.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Apr 20 06:50:40 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Run test serially.
|
||
|
- Install some packages in order to increase test coverage.
|
||
|
- Use ExclusiveArch.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Apr 19 06:43:50 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Add fix-gdb-index.patch.
|
||
|
- Enable tests.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Apr 15 11:53:51 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.2.0
|
||
|
* The ARM32 target is now supported.
|
||
|
* --gdb-index is implemented.
|
||
|
* mold now supports the following flags: --start-address, -Tbss,
|
||
|
-Tdata, -Ttext, --oformat=binary, --disable-new-dtags
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Fri Apr 8 15:40:19 UTC 2022 - Callum Farmer <gmbr3@opensuse.org>
|
||
|
|
||
|
- Set LIBEXECDIR
|
||
|
- Disable default stripping
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Mar 8 12:07:34 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Respect %{optflags}.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Mar 8 09:58:13 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.1.1
|
||
|
* Native LTO (Link-Time Optimization) support
|
||
|
* RISC-V CPU architecture support
|
||
|
* Optimize memory usage by reducing the sizes of
|
||
|
frequently-allocated objects; roughly 6% redux in the maximum
|
||
|
RSS.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Wed Feb 23 23:29:01 UTC 2022 - Christoph G <foss@grueninger.de>
|
||
|
|
||
|
- Fix building for openSUSE Leap 15.3 and 15.4.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Feb 21 07:51:37 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.1:
|
||
|
https://github.com/rui314/mold/releases/tag/v1.1.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Jan 31 10:24:17 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Start using system library mimalloc.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Jan 30 15:53:00 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.0.3:
|
||
|
https://github.com/rui314/mold/releases/tag/v1.0.3.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sun Jan 23 09:44:13 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.0.2: complete release notes can be found here:
|
||
|
https://github.com/rui314/mold/releases/tag/v1.0.2.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Mon Jan 3 08:33:39 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Start using %{_libexecdir} as an installation location.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sat Jan 1 22:23:26 UTC 2022 - Christoph G <foss@grueninger.de>
|
||
|
|
||
|
- Remove quotationsmarks from build_args as it prevented the use
|
||
|
of system packages for TBB and xxHash.
|
||
|
- Drop configure-fix.patch as xxHash is used from system package,
|
||
|
so we don't need to patch the wrong configuration of xxHash.
|
||
|
- Use telling name of source tarball, adjust GitHub url to have
|
||
|
matching names.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Sat Jan 1 21:37:43 UTC 2022 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Update to version 1.0.1:
|
||
|
* make install now creates /usr/local/libexec/mold/ld as
|
||
|
a symlink to the mold executable. We do this for GCC.
|
||
|
By passing -B/usr/local/libexec/mold, you can tell GCC to use ld
|
||
|
inside that directory instead of /usr/bin/ld. (e8dcecf)
|
||
|
* xxHash library is now included in the mold's source tree as a subtree for ease of building.
|
||
|
If you want to link against a libxxhash in a system library directory, pass SYSTEM_XXHASH=1 to make. (665bffa)
|
||
|
* The extern "C++" directive is now supported in the dynamic list. (7aa5c39)
|
||
|
* --color-diagnostics is supported. mold used to ignore that flag. (6e290aa)
|
||
|
* Not only * but also ? are now treated as special characters in the version script wildcard pattern. (31b0248)
|
||
|
* The --threads=N option has been added as
|
||
|
an alias for --thread-count=N. (f9ff048)
|
||
|
* The following option has been added: --defsym (f6e8006), -z nodefaultlib (8c86c28),
|
||
|
-z separate-code, -z noseparate-code and -z separate-lodable-segments (5601cf4), -z max-page-size (f3766cd)
|
||
|
- Add workaround patch configure-fix.patch.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Dec 21 17:04:56 UTC 2021 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Ignore -Wno-sign-compare for now.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Dec 21 16:35:38 UTC 2021 - Martin Liška <mliska@suse.cz>
|
||
|
|
||
|
- Use system package for tbb and xxhash.
|
||
|
|
||
|
-------------------------------------------------------------------
|
||
|
Tue Dec 21 15:03:07 UTC 2021 - Mark Nefedov <mark_nefedov@runbox.com>
|
||
|
|
||
|
- Start with version 1.0.0.
|