summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
Diffstat (limited to 'packaging')
-rw-r--r--packaging/0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch34
-rw-r--r--packaging/Makefile6
-rw-r--r--packaging/includedir.patch24
-rw-r--r--packaging/libffi.changes33
-rw-r--r--packaging/libffi.spec122
5 files changed, 219 insertions, 0 deletions
diff --git a/packaging/0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch b/packaging/0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch
new file mode 100644
index 0000000..232f7f8
--- /dev/null
+++ b/packaging/0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch
@@ -0,0 +1,34 @@
+From f092b034d2253f29cf50bb38ad33f9534a89cfb8 Mon Sep 17 00:00:00 2001
+From: Neil Roberts <neil@linux.intel.com>
+Date: Fri, 26 Feb 2010 14:42:49 +0000
+Subject: [PATCH] x86: Align the stack to 16-bytes before making the call
+
+If gcc is targetting i686 then it will use SSE registers for the
+floating point operations. It will then sometimes use 16-byte
+temporary variables on the stack to store the registers and it will
+use aligned instructions to access them. This will segfault if the
+variable is not aligned to 16-bytes. Apparently GCC assumes that the
+stack is 16-byte aligned when a function is entered and it uses this
+to position its temporary variables. Therefore libffi needs to align
+the stack or the called function will crash in some circumstances.
+---
+ src/x86/sysv.S | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/x86/sysv.S b/src/x86/sysv.S
+index f4b6c1e..81374cc 100644
+--- a/src/x86/sysv.S
++++ b/src/x86/sysv.S
+@@ -48,6 +48,9 @@ ffi_call_SYSV:
+ movl 16(%ebp),%ecx
+ subl %ecx,%esp
+
++ /* Align the stack pointer to 16-bytes */
++ andl $0xfffffff0, %esp
++
+ movl %esp,%eax
+
+ /* Place all of the ffi_prep_args in position */
+--
+1.6.5.rc1.46.g4d818
+
diff --git a/packaging/Makefile b/packaging/Makefile
new file mode 100644
index 0000000..60ffa1c
--- /dev/null
+++ b/packaging/Makefile
@@ -0,0 +1,6 @@
+PKG_NAME := libffi
+SPECFILE = $(addsuffix .spec, $(PKG_NAME))
+YAMLFILE = $(addsuffix .yaml, $(PKG_NAME))
+
+include /usr/share/packaging-tools/Makefile.common
+
diff --git a/packaging/includedir.patch b/packaging/includedir.patch
new file mode 100644
index 0000000..b0fc125
--- /dev/null
+++ b/packaging/includedir.patch
@@ -0,0 +1,24 @@
+Index: libffi-3.0.9/libffi.pc.in
+===================================================================
+--- libffi-3.0.9.orig/libffi.pc.in
++++ libffi-3.0.9/libffi.pc.in
+@@ -1,7 +1,7 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
++includedir=@includedir@
+
+ Name: @PACKAGE_NAME@
+ Description: Library supporting Foreign Function Interfaces
+Index: libffi-3.0.9/include/Makefile.am
+===================================================================
+--- libffi-3.0.9.orig/include/Makefile.am
++++ libffi-3.0.9/include/Makefile.am
+@@ -5,5 +5,5 @@ AUTOMAKE_OPTIONS=foreign
+ DISTCLEANFILES=ffitarget.h
+ EXTRA_DIST=ffi.h.in ffi_common.h
+
+-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
++includesdir = $(prefix)/include
+ nodist_includes_HEADERS = ffi.h ffitarget.h
diff --git a/packaging/libffi.changes b/packaging/libffi.changes
new file mode 100644
index 0000000..5da95cf
--- /dev/null
+++ b/packaging/libffi.changes
@@ -0,0 +1,33 @@
+* Fri Jun 01 2012 vivian zhang <vivian.zhang@intel.com> - 3.0.9
+- Initial import for Tizen
+
+* Thu Mar 15 02:08:32 UTC 2012 - tracy.graydon@intel.com
+- De-yamlfy
+
+* Mon May 02 2011 Anas Nashif <anas.nashif@intel.com> - 3.0.9
+- Apply patch to fix includesdir instead of hacking in spec file
+
+* Sun May 01 2011 Anas Nashif <anas.nashif@intel.com> - 3.0.9
+- Clean up spec file
+
+* Thu Apr 30 2011 Liu, Xinyun <xinyun.liu@intel.com> - 3.0.9
+- Fix for BMC 16784.
+- Updated previous fix for libffi.pc.
+
+* Thu Apr 28 2011 Junfeng Dong <junfeng.dong@intel.com> - 3.0.9
+- Fix for BMC 16784: Move the header files to standard /usr/include.
+
+* Thu Mar 04 2010 Damien Lespiau <damien.lespiau@intel.com> 3.0.9
+- Really apply the alignment fix patch
+
+* Fri Feb 26 2010 Neil Roberts <neil@linux.intel.com> 3.0.9
+- Add a patch to fix alignment problems
+ This was causing problems when using libffi with gobject-introspection
+
+* Thu Jan 28 2010 Jian-feng Ding <jian-feng.ding@intel.com> 3.0.9
+- Upgrade to 3.0.9, and enabled spectacle
+
+* Thu Sep 27 2009 Austin Zhang <austin.zhang@intel.com> - 3.0.8
+- Update to 3.0.8 into moblin (libffi was there but was removed,
+ now, add it back).
+
diff --git a/packaging/libffi.spec b/packaging/libffi.spec
new file mode 100644
index 0000000..7652125
--- /dev/null
+++ b/packaging/libffi.spec
@@ -0,0 +1,122 @@
+Name: libffi
+Summary: A portable foreign function interface library
+Version: 3.0.9
+Release: 100
+Group: System/Libraries
+License: BSD
+URL: http://sourceware.org/libffi
+Source0: ftp://sourceware.org/pub/libffi/libffi-%{version}.tar.gz
+Patch0: 0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch
+Patch1: includedir.patch
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+
+%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(post): /sbin/install-info
+Requires(postun): /sbin/install-info
+
+%description devel
+The %{name}-devel package contains libraries and header files for
+developing applications that use %{name}.
+
+
+
+%prep
+%setup -q -n %{name}-%{version}
+
+# 0001-x86-Align-the-stack-to-16-bytes-before-making-the-ca.patch
+%patch0 -p1
+# includedir.patch
+%patch1 -p1
+# >> setup
+# << setup
+
+%build
+# >> build pre
+# << build pre
+
+%reconfigure --disable-static \
+ --includedir=%{_includedir}
+
+make %{?jobs:-j%jobs}
+
+# >> build post
+# << build post
+%install
+rm -rf %{buildroot}
+# >> install pre
+# << install pre
+%make_install
+
+# >> install post
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+# << install post
+
+
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+
+
+%post devel
+%install_info --info-dir=%_infodir %{_infodir}/libffi.info.gz
+
+%postun devel
+if [ $1 = 0 ] ;then
+%install_info_delete --info-dir=%{_infodir} %{_infodir}/libffi.info.gz
+fi
+
+%files
+%defattr(-,root,root,-)
+# >> files
+%doc LICENSE README
+%{_libdir}/*.so.*
+# << files
+
+
+%files devel
+%defattr(-,root,root,-)
+# >> files devel
+%{_prefix}/include/ffi.h
+%{_prefix}/include/ffitarget.h
+%{_libdir}/pkgconfig/*.pc
+%{_libdir}/*.so
+%doc %{_mandir}/man3/*.gz
+%{_infodir}/libffi.info.gz
+# << files devel
+