From 0c912ff67fcdb6f43cd8cc81525daf0210a5b69f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 7 May 2019 05:45:46 -0400 Subject: [PATCH] import libffi-3.1-18.el8 --- .gitignore | 1 + .libffi.metadata | 1 + SOURCES/ffi-multilib.h | 23 ++ SOURCES/ffitarget-multilib.h | 23 ++ .../libffi-3.1-aarch64-fix-exec-stack.patch | 11 + SOURCES/libffi-3.1-fix-exec-stack.patch | 31 ++ SOURCES/libffi-3.1-fix-include-path.patch | 17 ++ SOURCES/libffi-aarch64-rhbz1174037.patch | 11 + SPECS/libffi.spec | 266 ++++++++++++++++++ 9 files changed, 384 insertions(+) create mode 100644 .gitignore create mode 100644 .libffi.metadata create mode 100644 SOURCES/ffi-multilib.h create mode 100644 SOURCES/ffitarget-multilib.h create mode 100644 SOURCES/libffi-3.1-aarch64-fix-exec-stack.patch create mode 100644 SOURCES/libffi-3.1-fix-exec-stack.patch create mode 100644 SOURCES/libffi-3.1-fix-include-path.patch create mode 100644 SOURCES/libffi-aarch64-rhbz1174037.patch create mode 100644 SPECS/libffi.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..203c8ad --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libffi-3.1.tar.gz diff --git a/.libffi.metadata b/.libffi.metadata new file mode 100644 index 0000000..6d7e282 --- /dev/null +++ b/.libffi.metadata @@ -0,0 +1 @@ +cb373ef2115ec7c57913b84ca72eee14b10ccdc3 SOURCES/libffi-3.1.tar.gz diff --git a/SOURCES/ffi-multilib.h b/SOURCES/ffi-multilib.h new file mode 100644 index 0000000..50a6226 --- /dev/null +++ b/SOURCES/ffi-multilib.h @@ -0,0 +1,23 @@ +/* This file is here to prevent a file conflict on multiarch systems. */ +#ifdef ffi_wrapper_h +#error "Do not define ffi_wrapper_h!" +#endif +#define ffi_wrapper_h + +#if defined(__i386__) +#include "ffi-i386.h" +#elif defined(__powerpc64__) +#include "ffi-ppc64.h" +#elif defined(__powerpc__) +#include "ffi-ppc.h" +#elif defined(__s390x__) +#include "ffi-s390x.h" +#elif defined(__s390__) +#include "ffi-s390.h" +#elif defined(__x86_64__) +#include "ffi-x86_64.h" +#else +#error "The libffi-devel package is not usable with the architecture." +#endif + +#undef ffi_wrapper_h diff --git a/SOURCES/ffitarget-multilib.h b/SOURCES/ffitarget-multilib.h new file mode 100644 index 0000000..b2ed545 --- /dev/null +++ b/SOURCES/ffitarget-multilib.h @@ -0,0 +1,23 @@ +/* This file is here to prevent a file conflict on multiarch systems. */ +#ifdef ffitarget_wrapper_h +#error "Do not define ffitarget_wrapper_h!" +#endif +#define ffitarget_wrapper_h + +#if defined(__i386__) +#include "ffitarget-i386.h" +#elif defined(__powerpc64__) +#include "ffitarget-ppc64.h" +#elif defined(__powerpc__) +#include "ffitarget-ppc.h" +#elif defined(__s390x__) +#include "ffitarget-s390x.h" +#elif defined(__s390__) +#include "ffitarget-s390.h" +#elif defined(__x86_64__) +#include "ffitarget-x86_64.h" +#else +#error "The libffi-devel package is not usable with the architecture." +#endif + +#undef ffitarget_wrapper_h diff --git a/SOURCES/libffi-3.1-aarch64-fix-exec-stack.patch b/SOURCES/libffi-3.1-aarch64-fix-exec-stack.patch new file mode 100644 index 0000000..e20c920 --- /dev/null +++ b/SOURCES/libffi-3.1-aarch64-fix-exec-stack.patch @@ -0,0 +1,11 @@ +--- a/src/aarch64/sysv.S ++++ b/src/aarch64/sysv.S +@@ -396,3 +396,8 @@ + #ifdef __ELF__ + .size CNAME(ffi_closure_SYSV), .-CNAME(ffi_closure_SYSV) + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",%progbits ++#endif ++ diff --git a/SOURCES/libffi-3.1-fix-exec-stack.patch b/SOURCES/libffi-3.1-fix-exec-stack.patch new file mode 100644 index 0000000..4c2a59f --- /dev/null +++ b/SOURCES/libffi-3.1-fix-exec-stack.patch @@ -0,0 +1,31 @@ +From 978c9540154d320525488db1b7049277122f736d Mon Sep 17 00:00:00 2001 +From: Samuli Suominen +Date: Sat, 31 May 2014 08:53:10 -0400 +Subject: [PATCH] Add missing GNU stack markings in win32.S + +--- + src/x86/win32.S | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/x86/win32.S b/src/x86/win32.S +index daf0e79..e42baf2 100644 +--- a/src/x86/win32.S ++++ b/src/x86/win32.S +@@ -1,5 +1,6 @@ + /* ----------------------------------------------------------------------- +- win32.S - Copyright (c) 1996, 1998, 2001, 2002, 2009 Red Hat, Inc. ++ win32.S - Copyright (c) 2014 Anthony Green ++ Copyright (c) 1996, 1998, 2001, 2002, 2009 Red Hat, Inc. + Copyright (c) 2001 John Beniton + Copyright (c) 2002 Ranjit Mathew + Copyright (c) 2009 Daniel Witte +@@ -1304,3 +1305,6 @@ L_ffi_closure_SYSV_inner$stub: + + #endif /* !_MSC_VER */ + ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +-- +1.9.3 + diff --git a/SOURCES/libffi-3.1-fix-include-path.patch b/SOURCES/libffi-3.1-fix-include-path.patch new file mode 100644 index 0000000..5a3b7a5 --- /dev/null +++ b/SOURCES/libffi-3.1-fix-include-path.patch @@ -0,0 +1,17 @@ +diff -up libffi-3.1/libffi.pc.in.fixpath libffi-3.1/libffi.pc.in +--- libffi-3.1/libffi.pc.in.fixpath 2014-04-25 19:45:13.000000000 +0200 ++++ libffi-3.1/libffi.pc.in 2014-06-12 12:06:06.000000000 +0200 +@@ -1,11 +1,10 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ +-toolexeclibdir=@toolexeclibdir@ +-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include ++includedir=@includedir@ + + Name: @PACKAGE_NAME@ + Description: Library supporting Foreign Function Interfaces + Version: @PACKAGE_VERSION@ +-Libs: -L${toolexeclibdir} -lffi ++Libs: -L${libdir} -lffi + Cflags: -I${includedir} diff --git a/SOURCES/libffi-aarch64-rhbz1174037.patch b/SOURCES/libffi-aarch64-rhbz1174037.patch new file mode 100644 index 0000000..dbf6308 --- /dev/null +++ b/SOURCES/libffi-aarch64-rhbz1174037.patch @@ -0,0 +1,11 @@ +--- libffi-3.1/src/aarch64/ffi.c.orig 2014-04-25 18:45:13.000000000 +0100 ++++ libffi-3.1/src/aarch64/ffi.c 2015-01-15 02:36:56.314906455 +0000 +@@ -728,7 +728,7 @@ + state.ngrn = N_X_ARG_REG; + + memcpy (allocate_to_stack (&state, stack, ty->alignment, +- ty->size), ecif->avalue + i, ty->size); ++ ty->size), ecif->avalue[i], ty->size); + } + break; + diff --git a/SPECS/libffi.spec b/SPECS/libffi.spec new file mode 100644 index 0000000..45b762f --- /dev/null +++ b/SPECS/libffi.spec @@ -0,0 +1,266 @@ +%global multilib_arches %{ix86} ppc ppc64 ppc64p7 s390 s390x x86_64 + +Name: libffi +Version: 3.1 +Release: 18%{?dist} +Summary: A portable foreign function interface library + +Group: System Environment/Libraries +License: MIT +URL: http://sourceware.org/libffi +Source0: ftp://sourceware.org/pub/libffi/libffi-%{version}.tar.gz +Source1: ffi-multilib.h +Source2: ffitarget-multilib.h +Patch0: libffi-3.1-fix-include-path.patch +Patch1: libffi-3.1-fix-exec-stack.patch +Patch2: libffi-aarch64-rhbz1174037.patch +Patch3: libffi-3.1-aarch64-fix-exec-stack.patch + +%description +Compilers for high level languages generate code that follow certain +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the "calling convention". +The calling convention is a set of assumptions made by the compiler +about where function arguments will be found on entry to a function. A +calling convention also specifies where the return value for a function +is found. + +Some programs may not know at the time of compilation what arguments +are to be passed to a function. For instance, an interpreter may be +told at run-time about the number and types of arguments used to call a +given function. `Libffi' can be used in such programs to provide a +bridge from the interpreter program to compiled code. + +The `libffi' library provides a portable, high level programming +interface to various calling conventions. This allows a programmer to +call any function specified by a call interface description at run time. + +FFI stands for Foreign Function Interface. A foreign function +interface is the popular name for the interface that allows code +written in one language to call code written in another language. The +`libffi' library really only provides the lowest, machine dependent +layer of a fully featured foreign function interface. A layer must +exist above `libffi' that handles type conversions for values passed +between the two languages. + + +%package devel +Summary: Development files for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: pkgconfig +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%setup -q +%patch0 -p1 -b .fixpath +%patch1 -p1 -b .execstack +%patch2 -p1 -b .aarch64 +%patch3 -p1 -b .aarch64execstack + + +%build +export CFLAGS="%{build_cflags} -Wa,--generate-missing-build-notes=yes" +%configure --disable-static +make %{?_smp_mflags} + + +%install +make install DESTDIR=$RPM_BUILD_ROOT +find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' +rm -f $RPM_BUILD_ROOT%{_infodir}/dir + +# Determine generic arch target name for multilib wrapper +basearch=%{_arch} +%ifarch %{ix86} +basearch=i386 +%endif + +mkdir -p $RPM_BUILD_ROOT%{_includedir} +%ifarch %{multilib_arches} +# Do header file switcheroo to avoid file conflicts on systems where you +# can have both a 32- and 64-bit version of the library, and they each need +# their own correct-but-different versions of the headers to be usable. +for i in ffi ffitarget; do + mv $RPM_BUILD_ROOT%{_libdir}/libffi-%{version}/include/$i.h $RPM_BUILD_ROOT%{_includedir}/$i-${basearch}.h +done +install -m644 %{SOURCE1} $RPM_BUILD_ROOT%{_includedir}/ffi.h +install -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_includedir}/ffitarget.h +%else +mv $RPM_BUILD_ROOT%{_libdir}/libffi-%{version}/include/{ffi,ffitarget}.h $RPM_BUILD_ROOT%{_includedir} +%endif +rm -rf $RPM_BUILD_ROOT%{_libdir}/libffi-%{version} + + +%ldconfig_scriptlets + +%post devel +/sbin/install-info --info-dir=%{_infodir} %{_infodir}/libffi.info.gz || : + +%preun devel +if [ $1 = 0 ] ;then + /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/libffi.info.gz || : +fi + + +%files +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc README +%{_libdir}/*.so.* + +%files devel +%{_libdir}/pkgconfig/*.pc +%{_includedir}/ffi*.h +%{_libdir}/*.so +%{_mandir}/man3/*.gz +%{_infodir}/libffi.info.gz + +%changelog +* Tue Nov 27 2018 Severin Gehwolf - 3.1-18 +- Compile with -Wa,--generate-missing-build-notes=yes + +* Fri Aug 10 2018 Severin Gehwolf - 3.1-17 +- Fix declared license: BSD => MIT. + +* Wed Feb 07 2018 Fedora Release Engineering - 3.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 3.1-15 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 3.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jul 5 2017 Jens Petersen - 3.1-12 +- protect install-info in the rpm scriptlets + https://fedoraproject.org/wiki/Packaging:Scriptlets#Texinfo + +* Tue Jun 20 2017 Anthony Green - 3.1-11 +- fix exec stack problem on aarch64 build + +* Fri Feb 10 2017 Fedora Release Engineering - 3.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 3.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jan 15 2015 Peter Robinson 3.1-7 +- Add patch to fix issues on aarch64 (rhbz 1174037) + +* Sun Aug 17 2014 Fedora Release Engineering - 3.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 17 2014 Tom Callaway - 3.1-5 +- fix license handling + +* Sun Jun 29 2014 Anthony Green - 3.1-4 +- fix exec stack problem on 32-bit build + +* Thu Jun 12 2014 Dan Horák - 3.1-3 +- fix header path in pkgconfig file + +* Sat Jun 07 2014 Fedora Release Engineering - 3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 19 2014 Anthony Green - 3.1-1 +- fix non-multiarch builds (arm). + +* Mon May 19 2014 Anthony Green - 3.1-0 +- update to 3.1. + +* Sat Aug 03 2013 Fedora Release Engineering - 3.0.13-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue May 28 2013 Tom Callaway - 3.0.13-4 +- fix typos in wrapper headers + +* Mon May 27 2013 Tom Callaway - 3.0.13-3 +- make header files multilib safe + +* Sat May 25 2013 Tom Callaway - 3.0.13-2 +- fix incorrect header pathing (and .pc file) + +* Wed Mar 20 2013 Anthony Green - 3.0.13-1 +- update to 3.0.13 + +* Thu Feb 14 2013 Fedora Release Engineering - 3.0.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 14 2013 Dennis Gilmore - 3.0.11-1 +- update to 3.0.11 + +* Fri Nov 02 2012 Deepak Bhole - 3.0.10-4 +- Fixed source location + +* Fri Aug 10 2012 Dennis Gilmore - 3.0.10-3 +- drop back to 3.0.10, 3.0.11 was never pushed anywhere as the soname bump broke buildroots +- as 3.0.11 never went out no epoch needed. + +* Thu Jul 19 2012 Fedora Release Engineering - 3.0.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Apr 13 2012 Anthony Green - 3.0.11-1 +- Upgrade to 3.0.11. + +* Fri Jan 13 2012 Fedora Release Engineering - 3.0.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Aug 23 2011 Anthony Green - 3.0.10-1 +- Upgrade to 3.0.10. + +* Fri Mar 18 2011 Dan Horák - 3.0.9-3 +- added patch for being careful when defining relatively generic symbols + +* Mon Feb 07 2011 Fedora Release Engineering - 3.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Dec 29 2009 Anthony Green - 3.0.9-1 +- Upgrade + +* Fri Jul 24 2009 Fedora Release Engineering - 3.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 3.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Jul 08 2008 Anthony Green 3.0.5-1 +- Upgrade to 3.0.5 + +* Fri Feb 15 2008 Anthony Green 3.0.1-1 +- Upgrade to 3.0.1 + +* Fri Feb 15 2008 Anthony Green 2.99.9-1 +- Upgrade to 2.99.9 +- Require pkgconfig for the devel package. +- Update summary. + +* Fri Feb 15 2008 Anthony Green 2.99.8-1 +- Upgrade to 2.99.8 + +* Thu Feb 14 2008 Anthony Green 2.99.7-1 +- Upgrade to 2.99.7 + +* Thu Feb 14 2008 Anthony Green 2.99.6-1 +- Upgrade to 2.99.6 + +* Thu Feb 14 2008 Anthony Green 2.99.4-1 +- Upgrade to 2.99.4 + +* Thu Feb 14 2008 Anthony Green 2.99.3-1 +- Upgrade to 2.99.3 + +* Thu Feb 14 2008 Anthony Green 2.99.2-1 +- Created.