diff --git a/patches/libffi b/patches/libffi index c8b95893c3c838cc556630449ca04bf05cd0fd8c..224844e10d067fdcc9c1f154c3425d234885d284 100755 --- a/patches/libffi +++ b/patches/libffi @@ -5,123 +5,51 @@ set -e # breaking MR: https://github.com/libffi/libffi/pull/739/files # upstream issue: https://github.com/libffi/libffi/issues/744 patch -p1 << 'EOF' -diff -Nru libffi-3.4.3/debian/patches/739.diff libffi-3.4.3/debian/patches/739.diff ---- libffi-3.4.3/debian/patches/739.diff 2022-10-20 12:32:50.000000000 +0200 -+++ libffi-3.4.3/debian/patches/739.diff 1970-01-01 01:00:00.000000000 +0100 -@@ -1,53 +0,0 @@ --diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c --index 83e56531..be87051b 100644 ----- a/src/aarch64/ffi.c --+++ b/src/aarch64/ffi.c --@@ -323,24 +323,40 @@ extend_integer_type (void *source, int type) -- switch (type) -- { -- case FFI_TYPE_UINT8: --- return *(UINT8 *) source; --+ UINT8 u8; --+ memcpy (&u8, source, sizeof (u8)); --+ return u8; -- case FFI_TYPE_SINT8: --- return *(SINT8 *) source; --+ SINT8 s8; --+ memcpy (&s8, source, sizeof (s8)); --+ return s8; -- case FFI_TYPE_UINT16: --- return *(UINT16 *) source; --+ UINT16 u16; --+ memcpy (&u16, source, sizeof (u16)); --+ return u16; -- case FFI_TYPE_SINT16: --- return *(SINT16 *) source; --+ SINT8 s16; --+ memcpy (&s16, source, sizeof (s16)); --+ return s16; -- case FFI_TYPE_UINT32: --- return *(UINT32 *) source; --+ UINT8 u32; --+ memcpy (&u32, source, sizeof (u32)); --+ return u32; -- case FFI_TYPE_INT: -- case FFI_TYPE_SINT32: --- return *(SINT32 *) source; --+ SINT8 s32; --+ memcpy (&s32, source, sizeof (s32)); --+ return s32; -- case FFI_TYPE_UINT64: -- case FFI_TYPE_SINT64: --- return *(UINT64 *) source; --+ UINT64 u64; --+ memcpy (&u64, source, sizeof (u64)); --+ return u64; -- break; -- case FFI_TYPE_POINTER: --- return *(uintptr_t *) source; --+ uintptr_t uptr; --+ memcpy (&uptr, source, sizeof (uptr)); --+ return uptr; -- default: -- abort(); -- } +diff -Nru libffi-3.4.3/debian/patches/745.diff libffi-3.4.3/debian/patches/745.diff +--- libffi-3.4.3/debian/patches/745.diff 1970-01-01 01:00:00.000000000 +0100 ++++ libffi-3.4.3/debian/patches/745.diff 2022-10-23 12:57:42.000000000 +0200 +@@ -0,0 +1,35 @@ ++From 80d984377d8d5fc3b86786b8a99fdd8d2ee4ec4c Mon Sep 17 00:00:00 2001 ++From: Icecream95 <ixn@disroot.org> ++Date: Sun, 23 Oct 2022 19:15:11 +1300 ++Subject: [PATCH] Fix types of temporary variables in aarch64 ++ extend_integer_type ++ ++Fixes truncated values in weston-info output. ++--- ++ src/aarch64/ffi.c | 6 +++--- ++ 1 file changed, 3 insertions(+), 3 deletions(-) ++ ++diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c ++index dc6338bc..6544ac0f 100644 ++--- a/src/aarch64/ffi.c +++++ b/src/aarch64/ffi.c ++@@ -335,16 +335,16 @@ extend_integer_type (void *source, int t ++ memcpy (&u16, source, sizeof (u16)); ++ return u16; ++ case FFI_TYPE_SINT16: ++- SINT8 s16; +++ SINT16 s16; ++ memcpy (&s16, source, sizeof (s16)); ++ return s16; ++ case FFI_TYPE_UINT32: ++- UINT8 u32; +++ UINT32 u32; ++ memcpy (&u32, source, sizeof (u32)); ++ return u32; ++ case FFI_TYPE_INT: ++ case FFI_TYPE_SINT32: ++- SINT8 s32; +++ SINT32 s32; ++ memcpy (&s32, source, sizeof (s32)); ++ return s32; ++ case FFI_TYPE_UINT64: diff -Nru libffi-3.4.3/debian/patches/series libffi-3.4.3/debian/patches/series --- libffi-3.4.3/debian/patches/series 2022-10-20 12:32:50.000000000 +0200 -+++ libffi-3.4.3/debian/patches/series 2022-10-22 16:16:32.000000000 +0200 -@@ -1,5 +1,4 @@ - # empty - no-toolexeclibdir.diff ++++ libffi-3.4.3/debian/patches/series 2022-10-23 12:57:42.000000000 +0200 +@@ -3,3 +3,4 @@ 738.diff --739.diff + 739.diff 740.diff -diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c -index 83e56531..be87051b 100644 ---- a/src/aarch64/ffi.c -+++ b/src/aarch64/ffi.c -@@ -323,40 +323,24 @@ extend_integer_type (void *source, int type) - switch (type) - { - case FFI_TYPE_UINT8: -- UINT8 u8; -- memcpy (&u8, source, sizeof (u8)); -- return u8; -+ return *(UINT8 *) source; - case FFI_TYPE_SINT8: -- SINT8 s8; -- memcpy (&s8, source, sizeof (s8)); -- return s8; -+ return *(SINT8 *) source; - case FFI_TYPE_UINT16: -- UINT16 u16; -- memcpy (&u16, source, sizeof (u16)); -- return u16; -+ return *(UINT16 *) source; - case FFI_TYPE_SINT16: -- SINT8 s16; -- memcpy (&s16, source, sizeof (s16)); -- return s16; -+ return *(SINT16 *) source; - case FFI_TYPE_UINT32: -- UINT8 u32; -- memcpy (&u32, source, sizeof (u32)); -- return u32; -+ return *(UINT32 *) source; - case FFI_TYPE_INT: - case FFI_TYPE_SINT32: -- SINT8 s32; -- memcpy (&s32, source, sizeof (s32)); -- return s32; -+ return *(SINT32 *) source; - case FFI_TYPE_UINT64: - case FFI_TYPE_SINT64: -- UINT64 u64; -- memcpy (&u64, source, sizeof (u64)); -- return u64; -+ return *(UINT64 *) source; - break; - case FFI_TYPE_POINTER: -- uintptr_t uptr; -- memcpy (&uptr, source, sizeof (uptr)); -- return uptr; -+ return *(uintptr_t *) source; - default: - abort(); - } ++745.diff EOF