Files
rpi-buildroot/package/libffi/0002-arc-Fix-warnings.patch
Thomas Petazzoni 62fd55d272 package/libffi: fix build on ARC
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>
2024-08-18 09:28:44 +02:00

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