From 04b49f4e8d44ccd9f13b58ac4c31f8af4c28d4a1 Mon Sep 17 00:00:00 2001 From: Emily Date: Wed, 9 Apr 2025 15:25:59 +0100 Subject: [PATCH] apple-sdk: add hack for C++ issues on `x86_64-darwin` --- .../ap/apple-sdk/common/process-stubs.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/by-name/ap/apple-sdk/common/process-stubs.nix b/pkgs/by-name/ap/apple-sdk/common/process-stubs.nix index 1720d9f27cd7..0f87f9c326bd 100644 --- a/pkgs/by-name/ap/apple-sdk/common/process-stubs.nix +++ b/pkgs/by-name/ap/apple-sdk/common/process-stubs.nix @@ -38,5 +38,21 @@ self: super: { llvm-readtapi --filetype=tbd-v4 usr/lib/$libSystem~ -o usr/lib/$libSystem rm usr/lib/$libSystem~ done + + # Strip weak C++ symbols to work around `libc++` leakage in system + # frameworks for now. These are only present on `x86_64-darwin`, so + # it should hopefully be harmless. + # + # TODO FIXME: This is kind of horrible. + while read -r -d "" stub; do + printf 'Stripping weak C++ symbols from %s\n' "$stub" + llvm-readtapi --filetype=tbd-v5 "$stub" \ + | jq ' + (.main_library, .libraries[]?).exported_symbols[]?.data.weak[]? |= + select(startswith("__Z") | not) + ' > $stub~ + llvm-readtapi --filetype=tbd-v4 $stub~ -o $stub + rm $stub~ + done < <(find . -name '*.tbd' -print0) ''; }