Releases: davidlattimore/wild
Releases Β· davidlattimore/wild
0.7.0
Only 6 weeks since our last release, but the team still got a lot done! We've split changes into separate sections this time, so hopefully it's a bit easier to read.
π Features
- Add handling of the .symver asm directives (#994)
 - Allow absolute-value symbol to be used as an entry point
 - Allow setting entry point for shared objects
 - Reintroduce handling of tail-merged strings (#1117)
 - Implement --retain-symbols-file (#1262)
 - Allow mixing of argument files and regular arguments (#1148)
 - Support 
VERSIONcommand in linker script - Ignore '-no-fatal-warnings' option (#1192)
 - Increase maximal supported alignment to 2^16 (#1190)
 - Include git commit in linker version (#1203)
 - Add support for .note.stapsdt sections (#1202)
 - Check for overflow on 32bit relocations (#1175)
 - Support tokens enclosed in double quotes in linker scripts
 - Support flag --no-mmap-output-file (#1215)
 
β‘ Performance
- Limit default parallelism in string merging
 - Rewrite scheduling of string merging tasks (#1240)
 
πͺ² Bug Fixes
- Fill some bytes with zeros (affects --update-in-place) (#1237)
 - Improve handling of non-absolute paths in save-dir (#1244)
 - Pad copy relocations according to alignment (#1251)
 - Don't allow hidden/protected symbols to reference shared objects (#1258)
 - Use local symbol interposability when processing relocations (#1259)
 - Make --strip-debug suppress earlier --strip-all (#1261)
 - Fix compilation on riscv (#1100)
 - Distinguish default version (@@) from non-default (@). (#1129)
 - Only emit 
PT_INTERPfor shared executables - Add RISCV_ATTRIBUTE program segment (#1166)
 - Don't create GOT/PLT entries for ifuncs that aren't referenced (#1185)
 - Improve handling of relocations in non-alloc sections (#1196)
 - Fix lookup of the riscv-fix-hi-part (#1198)
 - Make --warn-unresolved-symbols match GNU ld's behaviour (#1217)
 - Handle missing GNU_PROPERTY .note.gnu.property values (#1222)
 - Allow dynamic symbols to refer to merged strings (#1147)
 
ποΈ Builds
- Build for 
(aarch|x86_|riscv)64(|gc)-unknown-linux-(musl|gnu)(#1151) - Link musl releases with Wild
 
π Documentation
- Move nix docs to a separate file and update supported features list (#1113)
 - Remove 
archive_splitter.rsreference from DESIGN.md (#1145) - Update benchmarks, this time with bar charts
 - Add instructions for using Wild with Rust on Illumos. (#1171)
 - Document crate dependency version policy (#1140)
 - Customise git-cliff config and document commit message format (#1267)
 
πΉοΈ Porting
- Initial support for Illumos (#1197)
 
βοΈ Linker Diff
π§ͺ Testing
- Use wild for build in CI (#1091)
 - Verify build on riscv (#1101)
 - Verify minimal versions in CI (#1142)
 - Ignore some diffs in risc-v tests (#1236)
 - Use test-config-ci.toml in CI (#1234)
 - Report sections where --update-in-place misses writes (#1239)
 - Set the 
TRIPLEenvironment variable if needed when running mold tests - Fix potential template-injection in CI
 - Fix a couple of tests that were failing on recent opensuse (#1241)
 - Don't skip running dynamically linked executables (#1248)
 - Apt-get update before installing for riscv build workflow (#1255)
 - Prevent race between test cases re-creating the same .so file (#1107)
 - Use depfile in integrationtests (#1123)
 - Use correct exit syscall number on Illumos (#1138)
 - Look for dynamic linker in /bin/less in integ test (#1159)
 - Unignore 
symbol-versions3.shMold test - Make integration test diffing an opt-in feature (#1158)
 - Integration tests: Make symbol assertions more extensible (#1169)
 - Better error message when test unexpectedly pasess (#1176)
 - Print clang version when clang-format fails (#1183)
 - Clarify clang-format version mismatch instructions (#1193)
 - Increase test binary execution timeout (#1188)
 - Add a test for handling of note sections (#1211)
 - Integration tests: Make skipping tests on unsupported flags more generic (#1225)
 - Integration tests: Make compilation errors easier to find (#1224)
 - Add basic testing for update-in-place flag (#1230)
 - Limit the conditions for executing 
update-nix-lockfile 
π¨ Refactor
- Use u32_from_slice (#1128)
 - Introduce BitExtraction trait for u64 (#1157)
 - Restructure code in symbol_db.rs a bit (#1252)
 - Build only C++ and Rust demanglers
 - Simplify get_host_architecture (#1164)
 - Merge ResolutionFlags and ValueFlags (#1180)
 - Move per-symbol-flags out of SymbolDb (#1186)
 - Delete ValueFlags::ADDRESS (#1189)
 - Replace all uses of bytemuck with zerocopy (#1210)
 - Add readable Debug implementations for internal data structures (#1227)
 - Macro to generate ELF newtypes and new SymbolType (#1228)
 
π₯ Contributors
- davidlattimore
 - marxin
 - mati865
 - daniel-levin
 - lapla-cogito
 - karolzwolak
 - andrewdavidmackenzie
 - el-yawd
 - TechnoPorg
 - jarjk
 - jakobhellermann
 - YamasouA
 
π² Sponsors
Thanks to everyone who has sponsored davidlattimore, in particular the following people who have sponsored at least $30 since the last release:
- repi
 - rrbutani
 - Rafferty97
 - CodeursenLiberte
 - mati865
 - ArthurBrussee
 - wasmerio
 - +50 others
 
0.6.0
274 commits since the last release.
- Installation changes
 - Mold's test suite is now run in CI #903 (lapla-cogito)
 - Override 
-sharedby (-no)-pie #1095 (mati865) - Emit error if as-yet unsupported .symver directive is used #1089 (marxin)
 - Discard sections with exclude bit set #1077 (lqd)
 - Do not look up files from args in search paths #1058 (mati865)
 - Support escaping in version scripts #1053 (lapla-cogito)
 - Avoid adding input files multiple times #1057 (mati865)
 - Fix R_X86_64_GOTPC32_TLSDESC relaxations #1051 (marxin)
 - Improve error message when LTO objects cause undefined symbols #1050 (AadiWaghray)
 - Support -z interpose #1048 (lapla-cogito)
 - Obtain verdefnum from verdef section header #1041 (mati865)
 - Added support for CREL #981 (marxin)
 - Support --help #1029 (lapla-cogito)
 - Support -z undefs #1030 (AadiWaghray)
 - Support --time=cycles,instructions,cache-misses etc #1027 (davidlattimore)
 - Don't error when there are multiple alias definitions pointing to the same symbol #1021
(lapla-cogito) - Autoformat C/C++ test code #1006 (mati865)
 - Implement 
--allow-multiple-definitionand-z muldefs#1015 (lapla-cogito) - Implement more arguments for exporting symbols #974 (mati865)
 - Add 
--unresolved-symbols=and--{warn, error}-unresolved-symbolsoptions support #993
(lapla-cogito) - Discard empty string-merge sections. Fixes #932 (davidlattimore)
 - Write dynsym in parallel. Fixes #1000 (davidlattimore)
 - Compute dynamic symbols versions during layout. #1000 (davidlattimore)
 - Fix infinite loop on string-merge errors. #1008 (davidlattimore)
 - Implement --wrap. #998 (davidlattimore)
 - Support 
extern "C"andextern "C++"in version scripts. #963 (marxin), #1004 (mati865) - Allow parallelism when resolving symbols for an object. #1001 (davidlattimore)
 - Implement proper symbol lookup in a collections of versions #972 (marxin)
 - Fix handling of custom NOBITS TLS sections #966 (davidlattimore)
 - Use segment rather than section layout for TLS addresses #975 (davidlattimore)
 - Change behaviour of --no-allow-shlib-undefined to match lld #897 (davidlattimore)
 - Put custom TLS section into TLS segment #965 (davidlattimore)
 - Don't emit non-standard .phdr and .shdr section headers #957 (davidlattimore)
 - Support 
-Roption if it points to a directory #956 (marxin) - Version script glob support #943 (marxin)
 - Added jobserver support #923 (marxin)
 - Improve symbol priority handling #826 (davidlattimore)
 - Don't propagate retain bit to output sections #914 (davidlattimore)
 - linker-diff: Handle empty .got #831 (Noratrieb)
 - Allow undefined symbols in shared objects to trigger archive entries #930 (davidlattimore)
 - Report errors as coming from wild and add some colour #896 (davidlattimore)
 - Input shared objects now implies -shared #879 (mati865)
 - Support 
--no-relaxonly for mandatory situations #885 (mati865) - Don't report shlib undefined when writing an shlib #884 (davidlattimore)
 - Add support for --[no-]allow-shlib-undefined #881 (davidlattimore)
 - Use TLS end-offset for TLSLD GOT entry in executables #882 (davidlattimore)
 - Allow R_X86_64_GOTPC32_TLSDESC for all executable outputs. Fixes #849 (marxin)
 - Add Nix package, overlay, stdenv adapter, and flake. #847 (RossSmyth with help from dawnofmidnight
and Noratrieb) - Add support for -z defs #850 (AadiWaghray)
 - Fix when TLSDESC and TLSDESC_CALL aren't adjacent. Fixes #842 (davidlattimore)
 - Fix infinite loop when we have no input files. Fixes #835 (davidlattimore)
 - Add flag non-standard flag 
--got-plt-syms#827 (lapla-cogito) - Parallelise opening of input files. #816 (davidlattimore)
 - Sort .eh_frame_hdr in parallel. #824 (davidlattimore)
 - Add support for --exclude-libs ALL. #812 (davidlattimore)
 - Don't apply -Bsymbolic* to undefined symbols (davidlattimore)
 - Don't error if debug info references undefined / GCed symbol
 - Alias 
-sharedto-Bshareable(lapla-cogito) - Support 
-Bsymbolic,-Bsymbolic-non-weak,-Bsymbolic-non-weak-functionsand-Bno-symbolic
#782 (lapla-cogito) - RISC-V support #704 + other commits (marxin)
 - save-dir:
 - Improve handling of relative sysroots #772 (davidlattimore)
 - Support 
-Bsymbolic-functions#770 (lapla-cogito) - Use debug info to show where error came from #768 (davidlattimore)
 - Update .preinit_array section locations and flags #761 (marxin)
 - Set DT_PREINIT_ARRAY{,SZ} if .preinit_array is present #759 (marxin)
 
Thanks to everyone who has sponsored davidlattimore, in particular the following people who have sponsored at least $30 since the last release:
- CodeursenLiberte
 - pmarks
 - mati865
 - repi
 - Urgau
 - teburd
 - flba-eb
 - tommythorn
 - binarybana
 - bcmyers
 - Kobzol
 - HadrienG2
 - bes
 - twilco
 - mstange
 - marxin
 - joshtriplett
 - jonhoo
 
0.5.0
Release Notes
A lot of fixes and new features since 0.4.0. We had 200 commits.
- Improve error message for LTO objects in archives (mati865)
 - Fix setting of STATIC_TLS on non-x86-64 arch (marxin)
 - linker-diff: Diff program segments (lapla-cogito)
 - Fix alignment of stack segment (lapla-cogito)
 - Basic linker script support #44 (davidlattimore)
- Defining custom output sections
 - Mapping input sections to output sections
 - Defining symbols relative to sections
 - Setting the address of output sections
 - Setting alignment
 - KEEP command
 - ENTRY command
 
 - Support for --entry flag (davidlattimore)
 - Ignore some flags that we don't yet support (mati865)
 - Don't error if multiple COMDAT groups define the same symbol (davidlattimore)
 - Output section attributes now inherit from corresponding input section attributes (davidlattimore)
 - Fix linking against protected symbols in shared objects (davidlattimore)
 - Integration tests now support a test configuration file (lapla-cogito)
 - Added support for -z norelro (davidlattimore)
 - Fix misalignment of TLS when TDATA is absent #614 (davidlattimore)
 - TLSDESC handling improvements (marxin)
 - Set DF_ORIGIN and DF_1_ORIGIN when -z origin is passed (davidlattimore)
 - Don't error if _start is undefined #613 (davidlattimore)
 - Fix direct references to ifuncs in relocatable executables #580 (davidlattimore)
 - Support 
-l:<name.ext>args (mati865) - Make sure that we don't export hidden symbols #604 (davidlattimore)
 - Don't emit duplicate symbol error on STB_GNU_UNIQUE #598 (davidlattimore)
 - Fix dynamic relocations with non-zero addends on recent glibc #576 (davidlattimore)
 - Better error reporting for duplicate symbols (lapla-cogito)
 - Fix sysroot handling when sysroot indicators are not followed by a slash #590 (mati865)
 - Handle symbol aliases when doing copy relocations #576 (davidlattimore)
 - Fix error message if an empty linker script is provided (marxin)
 - A few performance improvements (davidlattimore, mati865, marxin)
 - Support outputting versioned symbols in shared objects #41 (mati865)
 - Support for --start-lib and --end-lib (davidlattimore)
 - Verify that input files didn't change while we were running (davidlattimore)
 - Added support for thin archives (GlowingScrewdriver)
 - Don't delete old output file if it's not a regular file #546 (davidlattimore)
 - Added support for --undefined #528 (davidlattimore)
 - More aarch64 relaxations (marxin)
 
wild-linker 0.5.0
Install wild-linker 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.5.0/wild-linker-installer.sh | shDownload wild-linker 0.5.0
| File | Platform | Checksum | 
|---|---|---|
| wild-linker-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum | 
| wild-linker-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
linker-diff 0.5.0
Install linker-diff 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.5.0/linker-diff-installer.sh | shDownload linker-diff 0.5.0
| File | Platform | Checksum | 
|---|---|---|
| linker-diff-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum | 
| linker-diff-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
0.4.0
Release Notes
A huge release with more than 250 commits since 0.3.0. We've also had several new contributors,
which is awesome.
- Wild now supports aarch64 on Linux (marxin)
 - Support for TLSDESC (marxin)
 - Linker diff mostly rewritten. Now gives much less false positives and diffs more stuff.
(davidlattimore) - Added support for --sysroot (mati865)
 - Added support for --whole-archive (riverbl)
 - Added support for -z nocopyreloc (davidlattimore)
 - Added support for references to versioned symbols (davidlattimore)
 - Added support declaring default symbol versions via '@@' in symbol names (davidlattimore)
 - Added support for RELRO (inflation)
 - Report errors on undefined symbols (mati865)
 - Allow --version to be specified with regular linker arguments (inflation)
 - Detect objects built for wrong architecture and report proper error (inflation)
 - Keep sections if 
__start_/__stop_{SEC}is referenced. Fixes linkme crate (davidlattimore) - Improved performance of string merging, which affects debug info link time (davidlattimore,
marxin) - Remove unnecessary and unwanted copy relocations (davidlattimore)
 - Emit debug symbols for copy relocations (davidlattimore)
 - Demangle symbol names in various error messages (davidlattimore, marxin)
 - Improve error message when an absolute relocation is used against a read-only section with a
relocatable output (davidlattimore) - Handle initialisers / destructors in .ctors.* / .dtors.* (davidlattimore)
 - Added flag --update-in-place (davidlattimore)
 - Fixed referenced to merged strings in relocatable binaries (davidlattimore)
 - Optimise x86-64 jmp instructions to bypass GOT (mati865)
 - Ignore or warn on various flags that we don't yet support (marxin)
 - Don't strip 
.debug_sections if they have the alloc flag set (davidlattimore) - Lots of improvements to testing (marxin, mati865, davidlattimore)
 - Fixed link error if a shared object had a strong reference to a symbol defined by a discarded
archive entry (davidlattimore) - We should now be publishing to crates.io, so tools like cargo-binstall should work.
 - Numerous bugfixes
 
wild-linker 0.4.0
Install wild-linker 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.4.0/wild-linker-installer.sh | shDownload wild-linker 0.4.0
| File | Platform | Checksum | 
|---|---|---|
| wild-linker-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
linker-diff 0.4.0
Install linker-diff 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.4.0/linker-diff-installer.sh | shDownload linker-diff 0.4.0
| File | Platform | Checksum | 
|---|---|---|
| linker-diff-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
0.3.0
wild 0.3.0
Install wild 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.3.0/wild-installer.sh | shDownload wild 0.3.0
| File | Platform | Checksum | 
|---|---|---|
| wild-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum | 
linker-diff 0.3.0
Install linker-diff 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/davidlattimore/wild/releases/download/0.3.0/linker-diff-installer.sh | shDownload linker-diff 0.3.0
| File | Platform | Checksum | 
|---|---|---|
| linker-diff-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |