deno
3cfcdcc1 - fix(compile): bump libsui to 0.16.1 to survive eu-strip in flatpak (#35699)

Commit
136 days ago
fix(compile): bump libsui to 0.16.1 to survive eu-strip in flatpak (#35699) Fixes #35633 ## Problem Standalone binaries produced by `deno compile` segfault (exit 139) after `eu-strip` runs over them — which `flatpak-builder` does automatically during a flatpak build. Regression in Deno 2.9, bisected to the libsui 0.16.0 bump (#35467). ## Root cause libsui's in-place `Elf::append` (new in 0.16.0) relocates the program header table past the original EOF, into the file gap just before the appended note. `eu-strip` (elfutils, as run by flatpak-builder) lays the stripped output out itself with `ELF_F_LAYOUT` and zero-fills every file gap that falls between two allocated sections. With only a note-sized `.note.sui` section past that gap, eu-strip treats the relocated program header table as dead space and zeroes it → all-NULL program headers → segfault on exec. ## Fix libsui 0.16.1 (denoland/sui#75) covers the relocated program header table with a dedicated allocated `.sui.phdrs` section so section-based strip tools preserve it. This bumps the dependency and adds a spec test that `eu-strip`s a compiled binary and asserts it still runs (skips gracefully where `eu-strip` isn't installed). ## Verification Reproduced and fixed against the exact flatpak toolchain (elfutils **0.193**, built from source) on Linux x86_64: - real `deno 2.9.0` compiled binary + eu-strip 0.193 (flatpak flags) → **segfault 139**; with 0.16.1 → **runs** - every binary shape (PIE+RELR, plain PIE, non-PIE, large `.bss`, section-header-stripped, fully stripped) × eu-strip 0.193 & 0.190 → runs, program headers intact - payload sizes 1 B – 1 MB → payload still recoverable after strip - real denort 2.9.0 base → program headers intact after strip - binutils `strip` note-survival preserved (unchanged from 0.16.0)
Author
Parents
Loading