#6 Fix handling Float128 structs on ppc64le (#2045797)
Merged 2 years ago by sharkcz. Opened 2 years ago by sharkcz.
rpms/ sharkcz/libffi ppc  into  rawhide

@@ -0,0 +1,26 @@ 

+ From 83ce80f3194bbf95c39764d075b070389c0f8522 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>

+ Date: Mon, 31 Jan 2022 09:21:53 +0000

+ Subject: [PATCH] powerpc64: fix handling of homogeneous float128 structs

+ 

+ If there is a homogeneous struct with float128 members, they should be

+ copied to vector register save area. The current code incorrectly copies

+ only the value of the first member, not increasing the pointer with each

+ iteration. Fix this.

+ ---

+  src/powerpc/ffi_linux64.c | 2 +-

+  1 file changed, 1 insertion(+), 1 deletion(-)

+ 

+ diff --git a/src/powerpc/ffi_linux64.c b/src/powerpc/ffi_linux64.c

+ index 4d50878e4..3454dacd3 100644

+ --- a/src/powerpc/ffi_linux64.c

+ +++ b/src/powerpc/ffi_linux64.c

+ @@ -680,7 +680,7 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)

+                      {

+                        if (vecarg_count < NUM_VEC_ARG_REGISTERS64

+                            && i < nfixedargs)

+ -		        memcpy (vec_base.f128++, arg.f128, sizeof (float128));

+ +		        memcpy (vec_base.f128++, arg.f128++, sizeof (float128));

+                        else

+  		        memcpy (next_arg.f128, arg.f128++, sizeof (float128));

+                        if (++next_arg.f128 == gpr_end.f128)

file modified
+7 -1
@@ -13,6 +13,9 @@ 

  Source1:	ffi-multilib.h

  Source2:	ffitarget-multilib.h

  

+ # https://github.com/libffi/libffi/pull/689

+ Patch0:		libffi-3.4.2-ppc.patch

+ 

  BuildRequires: make

  BuildRequires: gcc

  %if %{without bootstrap}
@@ -57,7 +60,7 @@ 

  developing applications that use %{name}.

  

  %prep

- %setup -q

+ %autosetup -p1

  

  %build

  # For now we disable the static templates to avoid ghc and
@@ -113,6 +116,9 @@ 

  %{_infodir}/libffi.info.*

  

  %changelog

+ * Mon Jan 31 2022 Dan Horák <dan[at]danny.cz> - 3.4.2-8

+ - Fix handling Float128 structs on ppc64le (#2045797)

+ 

  * Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.4.2-7

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

  

no initial comment

fix merged upstream, merging here too

Pull-Request has been merged by sharkcz

2 years ago
Metadata