Commit ef6c41f
fix(libunwind): rebuild the archives with LLVM 23
The checked-in `libunwind.a` / `libunwind_lto.a` were built with clang
13, whose MIPS backend always tagged `.MIPS.abiflags` as `FP_DOUBLE`,
even under `-msingle-float`. LLVM 23 started emitting `FP_SINGLE` for
`-msingle-float` and lld now rejects the mismatch, so linking against
the old archives fails with current nightly:
```
rust-lld: error: libpsp-*.rlib(UnwindRegistersSave.o): floating point ABI
'-mdouble-float' is incompatible with target floating point ABI '-msingle-float'
```
The code in the archives was already single-float (`swc1`/`lwc1`, no
`sdc1`/`ldc1`), only the tag was wrong, so this is a straight rebuild:
`make patch && make` with clang/llvm-ar 23.1.0, matching the LLVM that
rustc 1.100.0-nightly ships. All five objects now report
`FP ABI: Hard float (single precision)` and the exported `_Unwind_*` API
is unchanged.
The submodule is bumped from a 2020 rustc to 787af2b8c (1.100.0-nightly,
the minimum nightly this repo now requires) so that `make patch` actually
reproduces the sources the archives are built from. `no-sdc1.patch` still
applies, with an offset.
`cargo psp --manifest-path=./ci/tests/Cargo.toml` links again and the
resulting EBOOT reaches `FINAL_SUCCESS` under headless PPSSPP.1 parent 998cd52 commit ef6c41f
3 files changed
Lines changed: 1 addition & 1 deletion
0 commit comments