From 3a5f81e19320707f992fc9dd59eb2ed33ed04d87 Mon Sep 17 00:00:00 2001 From: Nicolas Reynolds Date: Wed, 15 Jun 2011 11:16:13 -0300 Subject: Fixed libxi SIGBUSes (thanks mtjm!) --- extra/libxi/PKGBUILD | 9 ++++++--- extra/libxi/XExtInt-align-classes-n32.diff | 31 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 extra/libxi/XExtInt-align-classes-n32.diff (limited to 'extra/libxi') diff --git a/extra/libxi/PKGBUILD b/extra/libxi/PKGBUILD index 073d7ef27..b6657834e 100644 --- a/extra/libxi/PKGBUILD +++ b/extra/libxi/PKGBUILD @@ -2,7 +2,7 @@ # Maintainer: Jan de Groot pkgname=libxi -pkgver=1.4.2 +pkgver=1.4.3 pkgrel=1 pkgdesc="X11 Input extension library" arch=('i686' 'x86_64' 'mips64el') @@ -11,11 +11,14 @@ depends=('libxext' 'inputproto') makedepends=('pkgconfig' 'xorg-util-macros') options=(!libtool) license=('custom') -source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2) -sha1sums=('97e60a60dd789287e47df807e487f4952dd4ff95') +source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2 + XExtInt-align-classes-n32.diff) +sha1sums=('c66cfdee74e8d169a7992b5f257395e653ca761b' + '30931831efa9a7f8a888f41bb9284fa32f2e2392') build() { cd "${srcdir}/libXi-${pkgver}" + patch -Nup0 < "${srcdir}/XExtInt-align-classes-n32.diff" ./configure --prefix=/usr --sysconfdir=/etc --disable-static make } diff --git a/extra/libxi/XExtInt-align-classes-n32.diff b/extra/libxi/XExtInt-align-classes-n32.diff new file mode 100644 index 000000000..dc5cc4db3 --- /dev/null +++ b/extra/libxi/XExtInt-align-classes-n32.diff @@ -0,0 +1,31 @@ +--- src/XExtInt.c.orig 2011-06-14 20:46:50.254164713 +0200 ++++ src/XExtInt.c 2011-06-14 22:08:38.173047738 +0200 +@@ -1419,6 +1419,13 @@ + for (i = 0; i < nclasses; i++) + { + int l = 0; ++#ifdef _ABIN32 ++ /* On MIPS n32 doubles must be 8 byte aligned, but longs take ++ 4 bytes, so next_block could make this structure ++ unaligned. */ ++ if(len % 8 != 0) ++ len += 8 - len % 8; ++#endif + any_wire = (xXIAnyInfo*)ptr_wire; + switch(any_wire->type) + { +@@ -1467,6 +1474,14 @@ + + for (i = 0; i < nclasses; i++) + { ++#ifdef _ABIN32 ++ /* On MIPS n32 doubles must be 8 byte aligned, but longs take ++ 4 bytes, so next_block could make this structure ++ unaligned. */ ++ if(((size_t) ptr_lib) % 8 != 0) ++ ptr_lib += 8 - ((size_t) ptr_lib) % 8; ++#endif ++ + any_lib = (XIAnyClassInfo*)ptr_lib; + any_wire = (xXIAnyInfo*)ptr_wire; + -- cgit v1.2.3-54-g00ecf