libffi: backport fix for implicit function declarations in libffi
On `clang-16` it's a build failure. On `gcc` it's a prototype mismatch with a potential invalid runtime results: ../src/tramp.c:262:22: warning: implicit declaration of function 'open_temp_exec_file' [-Wimplicit-function-declaration]
This commit is contained in:
parent
1a9dc0c41a
commit
de5c1c2f79
2 changed files with 49 additions and 0 deletions
|
@ -22,6 +22,9 @@ stdenv.mkDerivation rec {
|
||||||
# cgit) that are needed here should be included directly in Nixpkgs as
|
# cgit) that are needed here should be included directly in Nixpkgs as
|
||||||
# files.
|
# files.
|
||||||
patches = [
|
patches = [
|
||||||
|
# Fix implicit function declarations (clang-16 build failure):
|
||||||
|
# https://github.com/libffi/libffi/pull/764
|
||||||
|
./fix-implicit-fun-decl.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
https://github.com/libffi/libffi/commit/ce077e5565366171aa1b4438749b0922fce887a4.patch
|
||||||
|
|
||||||
|
From ce077e5565366171aa1b4438749b0922fce887a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: serge-sans-paille <serge.guelton@telecom-bretagne.eu>
|
||||||
|
Date: Thu, 2 Feb 2023 14:46:29 +0000
|
||||||
|
Subject: [PATCH] Forward declare open_temp_exec_file (#764)
|
||||||
|
|
||||||
|
It's defined in closures.c and used in tramp.c.
|
||||||
|
Also declare it as an hidden symbol, as it should be.
|
||||||
|
|
||||||
|
Co-authored-by: serge-sans-paille <sguelton@mozilla.com>
|
||||||
|
---
|
||||||
|
include/ffi_common.h | 4 ++++
|
||||||
|
src/tramp.c | 4 ++++
|
||||||
|
2 files changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/include/ffi_common.h b/include/ffi_common.h
|
||||||
|
index 2bd31b03d..c53a79493 100644
|
||||||
|
--- a/include/ffi_common.h
|
||||||
|
+++ b/include/ffi_common.h
|
||||||
|
@@ -128,6 +128,10 @@ void *ffi_data_to_code_pointer (void *data) FFI_HIDDEN;
|
||||||
|
static trampoline. */
|
||||||
|
int ffi_tramp_is_present (void *closure) FFI_HIDDEN;
|
||||||
|
|
||||||
|
+/* Return a file descriptor of a temporary zero-sized file in a
|
||||||
|
+ writable and executable filesystem. */
|
||||||
|
+int open_temp_exec_file(void) FFI_HIDDEN;
|
||||||
|
+
|
||||||
|
/* Extended cif, used in callback from assembly routine */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
diff --git a/src/tramp.c b/src/tramp.c
|
||||||
|
index 7e005b054..5f19b557f 100644
|
||||||
|
--- a/src/tramp.c
|
||||||
|
+++ b/src/tramp.c
|
||||||
|
@@ -39,6 +39,10 @@
|
||||||
|
#ifdef __linux__
|
||||||
|
#define _GNU_SOURCE 1
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+#include <ffi.h>
|
||||||
|
+#include <ffi_common.h>
|
||||||
|
+
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
Loading…
Reference in a new issue