mold 2.39.0
mold 2.39.0 is a new release of the high-speed linker. It includes the following new features and bug fixes.
New Features
-
[ARM32] Support for 32-bit big-endian ARM has been added. Although running ARM32 in big-endian mode is very rare, the processor does technically support both little- and big-endian modes, and we now support both.
There are two variants of big-endian mode for ARM32: BE32 and BE8. BE32 is now obsolete and uses big-endian format for both instructions and data. In BE8, instructions are always in little-endian (i.e., the same as little-endian ARM32), while only the data is in big-endian. mold supports only BE8 output. (157b16a)
Bug Fixes and Compatibility Improvements
-
Fixed a spurious
--no-allow-shlib-undefined
error. (3274bcb) -
[ARM][PPC] Fixed a regression introduced in 2.38.0 that mold could crash when linking a large program. (fded2d8)
-
Previously,
--default-symver
didn't set versions to symbols if the symbols were marked asglobal:
in a version script. Now,--default-symver
correctly version all symbols with the soname of the output file. (8bae43b) -
[RISC-V] Fixed an issue where mold reported an error on
R_RISCV_32
when the target was 64-bit RISC-V. (564757a) -
[RISC-V] Fixed an issue where a call to an weak undefined symbol within the same shared library was mistakenly turned into an infinite loop. Now, such calls are promoted to a function call through the PLT entry. (e08e7f6)
-
Fixed an issue that mold falls into an infinite loop in a rare occasion when computing an address of the program header. (83dd353)
Acknowledgements
mold is an open-source project, and we accept donations via GitHub Sponsors and OpenCollective. We thank everyone who sponsors our project. In particular, we would like to acknowledge the following organizations and people who have sponsored $32/month or more during this release cycle: