This commit brings two patches that have been submitted to upstream
libffi by Synopsys people, to fix libffi build issues on ARC.
This build issue was introduced by upstream commit
c4df19c99f8d8841942e3edaadbf331d30e298c8, which landed in libffi
3.4.5, so the issue exists in Buildroot since we bumped from libffi
3.4.4 to 3.4.6 in commit f382de2b0f,
which landed in Buildroot 2024.05. This issue therefore doesn't exist
in the 2024.02.x LTS branch.
Fixes:
http://autobuild.buildroot.net/results/3accebc6775b9a479876a5898d55bde005d4b12b/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
57 lines
1.8 KiB
Diff
57 lines
1.8 KiB
Diff
From 4f25e5be1a8a429b6925527c1cb94b6acd05642b Mon Sep 17 00:00:00 2001
|
|
From: Yuriy Kolerov <ykolerov@synopsys.com>
|
|
Date: Wed, 17 Jul 2024 18:56:52 +0300
|
|
Subject: [PATCH] arc: Fix warnings
|
|
|
|
These warnings are fixed:
|
|
|
|
1. A series of "unused variables".
|
|
2. Implicit conversion from a pointer to uint32_t.
|
|
|
|
Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>
|
|
Upstream: https://github.com/libffi/libffi/pull/844
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|
---
|
|
src/arc/ffi.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/arc/ffi.c b/src/arc/ffi.c
|
|
index d729274..0632319 100644
|
|
--- a/src/arc/ffi.c
|
|
+++ b/src/arc/ffi.c
|
|
@@ -192,9 +192,10 @@ static void unmarshal_atom(call_builder *cb, int type, void *data) {
|
|
/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */
|
|
static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) {
|
|
size_t realign[2];
|
|
- void *pointer;
|
|
|
|
#if defined(__ARC64_ARCH64__)
|
|
+ void *pointer;
|
|
+
|
|
if (type->size > 2 * __SIZEOF_POINTER__) {
|
|
/* pass by reference */
|
|
unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer);
|
|
@@ -348,7 +349,10 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif,
|
|
void *user_data, void *codeloc)
|
|
{
|
|
uint32_t *tramp = (uint32_t *) & (closure->tramp[0]);
|
|
+
|
|
+#if defined(__ARC64_ARCH64__)
|
|
size_t address_ffi_closure = (size_t) ffi_closure_asm;
|
|
+#endif
|
|
|
|
switch (cif->abi)
|
|
{
|
|
@@ -367,7 +371,7 @@ ffi_prep_closure_loc (ffi_closure * closure, ffi_cif * cif,
|
|
FFI_ASSERT (tramp == codeloc);
|
|
tramp[0] = CODE_ENDIAN (0x200a1fc0); /* mov r8, pcl */
|
|
tramp[1] = CODE_ENDIAN (0x20200f80); /* j [long imm] */
|
|
- tramp[2] = CODE_ENDIAN (ffi_closure_asm);
|
|
+ tramp[2] = CODE_ENDIAN ((uint32_t) ffi_closure_asm);
|
|
break;
|
|
#endif
|
|
|
|
--
|
|
2.46.0
|
|
|