- Update to version 2.32.1
OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/mold?expand=0&rev=124
This commit is contained in:
commit
ab5fd87d0b
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
7
_constraints
Normal file
7
_constraints
Normal file
@ -0,0 +1,7 @@
|
||||
<constraints>
|
||||
<hardware>
|
||||
<memoryperjob>
|
||||
<size unit="M">1800</size>
|
||||
</memoryperjob>
|
||||
</hardware>
|
||||
</constraints>
|
13
build-blake-3-as-static.patch
Normal file
13
build-blake-3-as-static.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/third-party/blake3/c/CMakeLists.txt b/third-party/blake3/c/CMakeLists.txt
|
||||
index 3aa6c15..4790918 100644
|
||||
--- a/third-party/blake3/c/CMakeLists.txt
|
||||
+++ b/third-party/blake3/c/CMakeLists.txt
|
||||
@@ -31,7 +31,7 @@ set(BLAKE3_X86_NAMES i686 x86 X86)
|
||||
endif()
|
||||
|
||||
# library target
|
||||
-add_library(blake3
|
||||
+add_library(blake3 STATIC
|
||||
blake3.c
|
||||
blake3_dispatch.c
|
||||
blake3_portable.c
|
3
mold-2.32.1.tar.gz
Normal file
3
mold-2.32.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f3c9a527d884c635834fe7d79b3de959b00783bf9446280ea274d996f0335825
|
||||
size 10010384
|
848
mold.changes
Normal file
848
mold.changes
Normal file
@ -0,0 +1,848 @@
|
||||
-------------------------------------------------------------------
|
||||
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.
|
115
mold.spec
Normal file
115
mold.spec
Normal file
@ -0,0 +1,115 @@
|
||||
#
|
||||
# spec file for package mold
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: mold
|
||||
Version: 2.32.1
|
||||
Release: 0
|
||||
Summary: A Modern Linker (mold)
|
||||
License: MIT
|
||||
Group: Development/Tools/Building
|
||||
URL: https://github.com/rui314/mold
|
||||
Source: https://github.com/rui314/mold/archive/v%{version}/mold-%{version}.tar.gz
|
||||
Patch0: build-blake-3-as-static.patch
|
||||
BuildRequires: cmake
|
||||
%if %{suse_version} < 1550
|
||||
BuildRequires: gcc11-c++
|
||||
%else
|
||||
# These libraries are not present for openSUSE Leap
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: clang
|
||||
BuildRequires: libdwarf-tools
|
||||
BuildRequires: llvm
|
||||
BuildRequires: llvm-gold
|
||||
BuildRequires: tbb-devel
|
||||
%ifarch x86_64
|
||||
BuildRequires: gcc-32bit
|
||||
%endif
|
||||
%endif
|
||||
BuildRequires: gdb
|
||||
BuildRequires: glibc-devel-static
|
||||
BuildRequires: libzstd-devel
|
||||
%ifnarch ppc64
|
||||
BuildRequires: valgrind
|
||||
%endif
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: zstd
|
||||
PreReq: update-alternatives
|
||||
|
||||
%if %{suse_version} < 1600
|
||||
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}
|
||||
%else
|
||||
%define build_args -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_MIMALLOC=OFF -DMOLD_USE_SYSTEM_TBB=ON
|
||||
%endif
|
||||
|
||||
%description
|
||||
mold is a faster drop-in replacement for existing Unix linkers.
|
||||
It is several times faster than LLVM lld linker, the second-fastest
|
||||
open-source linker.
|
||||
mold is created for increasing developer productivity by reducing
|
||||
build time especially in rapid debug-edit-rebuild cycles.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
%if %{suse_version} < 1550
|
||||
export CC=gcc-11
|
||||
export CXX=g++-11
|
||||
%endif
|
||||
%cmake %{build_args}
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
|
||||
%check
|
||||
%if %{suse_version} < 1550
|
||||
export TEST_CC=gcc-11
|
||||
export TEST_CXX=g++-11
|
||||
%endif
|
||||
%ctest
|
||||
|
||||
%post
|
||||
"%_sbindir/update-alternatives" --install \
|
||||
"%_bindir/ld" ld "%_bindir/ld.mold" 1
|
||||
|
||||
%pre
|
||||
if [ "$1" -gt 0 ] && [ -f %{_sbindir}/update-alternatives ] ; then
|
||||
"%_sbindir/update-alternatives" --remove ld "%_bindir/ld.mold";
|
||||
fi;
|
||||
|
||||
%postun
|
||||
if [ ! -f %{_bindir}/lld ] ; then
|
||||
"%{_sbindir}/update-alternatives" --remove ld "%{_bindir}/ld.mold"
|
||||
fi
|
||||
|
||||
%files
|
||||
%ghost %_sysconfdir/alternatives/ld
|
||||
%{_bindir}/mold
|
||||
%{_bindir}/ld.mold
|
||||
%dir %{_libdir}/mold
|
||||
%{_libexecdir}/mold/ld
|
||||
%dir %{_libexecdir}/mold
|
||||
%{_libdir}/mold/mold-wrapper.so
|
||||
%{_mandir}/man1/mold.1.gz
|
||||
%{_mandir}/man1/ld.mold.1.gz
|
||||
%dir %{_docdir}/mold
|
||||
%doc %{_docdir}/mold/LICENSE
|
||||
%doc %{_docdir}/mold/LICENSE.third-party
|
||||
|
||||
%changelog
|
Loading…
Reference in New Issue
Block a user