darwin stdenv fixes needed for llvm_19 (#353229)
This commit is contained in:
commit
5248318e58
@ -128,6 +128,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
./0006-Add-libcd_is_blob_a_linker_signature-implementation.patch
|
||||
# Add OpenSSL implementation of CoreCrypto digest functions. Avoids use of private and non-free APIs.
|
||||
./0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch
|
||||
./remove-unused-and-incomplete-blob-clone.diff
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
@ -0,0 +1,14 @@
|
||||
diff --git a/src/ld/code-sign-blobs/blob.h b/src/ld/code-sign-blobs/blob.h
|
||||
index 19c63a9..1dfb380 100644
|
||||
--- a/src/ld/code-sign-blobs/blob.h
|
||||
+++ b/src/ld/code-sign-blobs/blob.h
|
||||
@@ -180,9 +180,6 @@ public:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- BlobType *clone() const
|
||||
- { assert(validateBlob()); return specific(this->BlobCore::clone()); }
|
||||
-
|
||||
static BlobType *readBlob(int fd)
|
||||
{ return specific(BlobCore::readBlob(fd, _magic, sizeof(BlobType), 0), true); }
|
||||
|
@ -188,6 +188,13 @@ stdenv.mkDerivation ({
|
||||
substituteInPlace ../libcxx/utils/merge_archives.py \
|
||||
--replace-fail "import distutils.spawn" "from shutil import which as find_executable" \
|
||||
--replace-fail "distutils.spawn." ""
|
||||
'' + lib.optionalString (lib.versionAtLeast release_version "19")
|
||||
# codesign in sigtool doesn't support the various options used by the build
|
||||
# and is present in the bootstrap-tools. Removing find_program prevents the
|
||||
# build from trying to use it and failing.
|
||||
''
|
||||
substituteInPlace cmake/Modules/AddCompilerRT.cmake \
|
||||
--replace-fail 'find_program(CODESIGN codesign)' ""
|
||||
'';
|
||||
|
||||
# Hack around weird upsream RPATH bug
|
||||
|
@ -22,6 +22,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# cgit) that are needed here should be included directly in Nixpkgs as
|
||||
# files.
|
||||
patches = [
|
||||
# https://github.com/libffi/libffi/pull/857
|
||||
# function label needs to come before .cfi_startproc
|
||||
./label-before-cfi_startproc.patch
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
@ -0,0 +1,47 @@
|
||||
From 3065c530d3aa50c2b5ee9c01f88a9c0b61732805 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Tadeu Ferreira Antunes Filho <antunesi@google.com>
|
||||
Date: Mon, 16 Sep 2024 16:10:39 -0400
|
||||
Subject: [PATCH] Move cfi_startproc after CNAME(label)
|
||||
|
||||
This is a fix for https://github.com/libffi/libffi/issues/852: error: invalid CFI advance_loc expression on apple targets.
|
||||
|
||||
The CFI for darwin arm64 was broken because the CNAME macro was being used after the
|
||||
cfi_startproc macro.
|
||||
---
|
||||
src/aarch64/sysv.S | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
|
||||
index 6a9a5611f..e83bc65de 100644
|
||||
--- a/src/aarch64/sysv.S
|
||||
+++ b/src/aarch64/sysv.S
|
||||
@@ -89,8 +89,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
x5 closure
|
||||
*/
|
||||
|
||||
- cfi_startproc
|
||||
CNAME(ffi_call_SYSV):
|
||||
+ cfi_startproc
|
||||
BTI_C
|
||||
PAC_CFI_WINDOW_SAVE
|
||||
/* Sign the lr with x1 since that is the CFA which is the modifer used in auth instructions */
|
||||
@@ -348,8 +348,8 @@ CNAME(ffi_closure_SYSV_V):
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
- cfi_startproc
|
||||
CNAME(ffi_closure_SYSV):
|
||||
+ cfi_startproc
|
||||
BTI_C
|
||||
SIGN_LR
|
||||
PAC_CFI_WINDOW_SAVE
|
||||
@@ -647,8 +647,8 @@ CNAME(ffi_go_closure_SYSV_V):
|
||||
#endif
|
||||
|
||||
.align 4
|
||||
- cfi_startproc
|
||||
CNAME(ffi_go_closure_SYSV):
|
||||
+ cfi_startproc
|
||||
BTI_C
|
||||
SIGN_LR_LINUX_ONLY
|
||||
PAC_CFI_WINDOW_SAVE
|
@ -191,6 +191,7 @@ let
|
||||
shell = bash + "/bin/bash";
|
||||
initialPath = [
|
||||
bash
|
||||
prevStage.file
|
||||
bootstrapTools
|
||||
];
|
||||
|
||||
@ -370,6 +371,7 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check
|
||||
ld64 = null;
|
||||
|
||||
coreutils = null;
|
||||
file = null;
|
||||
gnugrep = null;
|
||||
|
||||
pbzx = null;
|
||||
@ -416,6 +418,7 @@ assert bootstrapTools.passthru.isFromBootstrapFiles or false; # sanity check
|
||||
|
||||
coreutils = bootstrapTools;
|
||||
cpio = bootstrapTools;
|
||||
file = null;
|
||||
gnugrep = bootstrapTools;
|
||||
pbzx = bootstrapTools;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user