Skip to content

Commit ef6c41f

Browse files
ItsNoHaxsajattack
authored andcommitted
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

File tree

libunwind/rustc

Submodule rustc updated 77488 files

psp/libunwind.a

3.43 KB
Binary file not shown.

psp/libunwind_lto.a

11.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)