Extends the native debug-symbol pipeline from Android to the remaining
native platforms so their crashes symbolicate too.
Taskfile:
- Apple gomobile bind: drop -s -w and add -g (new GOMOBILE_BIND_CMD_APPLE),
so the tun2socks framework keeps DWARF and Xcode's archive produces
dSYMs that resolve native (Go) frames.
- Electron (linux/windows) go builds: drop -s -w (keep -X version), so the
desktop tun2socks binary and backend library keep DWARF. The desktop
package ships them unstripped; the size delta is negligible next to
Electron.
- Remove the now-unused stripped GOMOBILE_BIND_CMD.
upload_debug_symbols action:
- Handle linux/windows: upload libbackend.so/backend.dll + the tun2socks
binary from output/client/<platform>-<goArch>/.
- Handle ios/macos: upload the .dSYM bundles from the Xcode archive, whose
location the release script passes via SENTRY_DSYMS_PATH (the archive
lands in Xcode's default folder, not derivable here). dSYM bundles are
checked by inspecting the DWARF binary inside them.
- Relax the check gate: DWARF (debug) + Usable is the hard requirement
(this is what a stripped binary lacks); missing unwind tables are now a
warning, since their presence varies by object format.
Verified locally:
- Electron linux: built libbackend.so + tun2socks with the new flags;
the action gates both (symtab, debug, unwind / Usable: yes) and proceeds
to upload (sentry-cli then asks for `sentry-cli login`, as expected).
- Apple: built Tun2socks.xcframework; dwarfdump shows ~143k DWARF entries
(a stripped build has none), confirming the un-strip. The full dSYM
upload needs a signed Xcode archive and must be verified in the release
environment.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>