2022-08-19 10:59:48 by Frederic Cambus | Files touched by this commit (4) | |
Log message:
mold: update to 1.4.1.
New features:
- 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.
Bug fixes and compatibility improvements:
- 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. The bug has been
fixed.
- --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.
- 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.
- Symbols in mergeable string sections now have correct output section indices
instead of SHN_UNDEF.
- [ARM32] Previously, calling a function from ARM code to Thumb code caused a
program crash due to bug #442. This issue has been fixed.
|
2022-08-06 11:13:47 by Frederic Cambus | Files touched by this commit (3) | |
Log message:
mold: update to 1.4.0.
New features:
- Initial support for the 32-bit RISC-V (RV32) has landed.
- mold now demangles Rust symbols in error messages thanks to eddyb's
rust-demangle.c.
- --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.
- [x86-64] PLT entries created by mold now always begins with ENDBR64
instruction to improve compatibility with Intel IBT (Indirect Branch
Tracking.)
Bug fixes and compatibility improvements:
- mold now defines __dso_handle symbol. The lack of this linker-synthesized
symbol caused a link error with GCC in some environments.
|
2022-07-02 23:22:44 by Frederic Cambus | Files touched by this commit (2) | |
Log message:
mold: update to 1.3.1.
mold 1.3.1 is a maintenance release of the high-speed linker. This release
contains the following minor bug fixes.
Bug fixes and compatibility improvements:
- 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)
|
2022-06-23 16:24:33 by Frederic Cambus | Files touched by this commit (1) |
Log message:
mold: fix the build by reverting to using SYSTEM_TBB=1.
|
2022-06-18 16:23:13 by Frederic Cambus | Files touched by this commit (3) | |
Log message:
mold: update to 1.3.0.
Pkgsrc changes:
- Remove now unneeded pkg-config from USE_TOOLS
- Use <stdlib.h> on systems where <alloca.h> doesn't exist
- Link the bundled (patched) libtbb, as per upstream recommendation
Bug fixes and compatibility improvements:
- The --icf=safe option has been supported. This option enables a feature
to find and deduplicate identical code that can be merged safely. For C++
programs, it typically reduces the output binary size by a few percent.
--icf=safe needs to be used with a compiler that supports .llvm_addrsig
section; if a compiler does not support it, --icf=safe doesn't do any harm
but cannot optimize a given program at all. That section is supported by
LLVM/Clang at the moment, and we are working on adding it to GCC.
- 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).
- mold now prints out undefined symbol errors in a format similar to LLVM lld.
- mold now prints out a better error message for the disk full situation.
- mold can now build GCC 12 with LTO.
- Fixed an LTO issue on 32-bits hosts such as i686.
- mold is now AddressSanitizer and UndefinedSanitizer clean.
- mold used to create broken debug info on 32-bits hosts. The bug has been
fixed.
- 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.
- --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.
Removed features:
- An experimental --preload flag has been removed.
|
2022-05-11 09:02:11 by Frederic Cambus | Files touched by this commit (1) |
Log message:
mold: install phase uses python3 command, provide a symlink.
Thanks to wiz@ once again for the heads up.
|
2022-05-05 23:22:29 by Frederic Cambus | Files touched by this commit (1) |
Log message:
mold: the install target requires Python.
|
2022-05-05 23:11:55 by Frederic Cambus | Files touched by this commit (1) |
Log message:
mold: needs pkg-config.
|
2022-04-29 08:45:45 by Frederic Cambus | Files touched by this commit (2) | |
Log message:
mold: update to 1.2.1.
Bug fixes and compatibility improvements:
- 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)
|
2022-04-15 18:30:37 by Frederic Cambus | Files touched by this commit (2) | |
Log message:
mold: update to 1.2.0.
mold 1.2.0 is a new release of the high-speed linker. The highlight of this
release is the 32-bit ARM support. We also added other features, and as
always, we fixed many bugs and compatibility issues in this release.
New features:
- The ARM32 target is now supported.
- --gdb-index is implemented. If this option is given, mold creates an
.gdb_index section in an output file to speed up GNU debugger. Users have
to compile their object files with -ggnu-pubnames to use this flag. mold
used to ignore --gdb-index. (a7475dd)
- mold now supports the following flags: --start-address, -Tbss, -Tdata,
-Ttext, --oformat=binary, --disable-new-dtags
Deprecated features:
- An experimental, mold-specific --preload flag has been marked as
deprecated. It's still usable, but a warning message will be displayed
if that flag is given.
Bug fixes and compatibility improvements:
- -dy and -dn are now accepted as aliases for -Bdynamic and -Bstatic,
respectively. (82e8072)
- -static-pie now works with older versions of glibc thanks to a few bug
fixes. (3d68824, 0884f27)
- Issues found by UndefinedBehaviorSanizer, AddressSanitizer and
ThreadSanitizer are fixed. (bf26753, f4753b3, e1e4e9f)
- mold used to place sections with very large section alignment
requirements to wrong places in an output file. That caused a mysterious
crash of a produced binary (#405). That bug was most noticeable when
Nvidia-provided object files are given because they tend to contain such
sections. This bug has been fixed. (100922b)
- .ctors and .dtors sections are now recognized by mold, and their contents
are sorted with a special rule. This shouldn't affect most build
environments because these sections have been superseded by .init_array
and .fini_array sections a long time ago. But it looks like some old
i386 compilers are still using .ctors and .dtors. (392781a)
- For a non-position-independent executable, we have to make address-taken
PLT entries as "canonical". Marking all PLT entries canonical should be
harmless in theory, so we did so. However, some programs, notably Qt
library, assume that non-address-taken PLTs can never be canonical
(#352). For the sake of compatibility with such programs, we now make
PLTs canonical only when their addresses are taken. (e0bc74a)
- mold now defines _TLS_MODULE_BASE_ symbol. A reference to this symbol
can occur if -mtls-dialect=gnu2 is given to a compiler. The flag tells
the compiler to use TLSDESC mechanism instead of the regular TLS access
mechanism to access thread-local variables. (5feab82)
- libbacktrace sometimes fail to read compressed debug sections in
mold-generated files due to a bug. We not only fix that libbacktrace's
bug (ianlancetaylor/libbacktrace#87) but also implemented a workaround
to mold (ba63479) so that mold works with older versions of libbacktrace.
- [ARM64] mold now recognizes R_AARCH64_LD_PREL_LO19 relocation. (146ddd7)
- [RISCV64] The correct semantics of R_RISCV_ALIGN is implemented.
(0daf623)
|