diff options
author | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-06-15 11:16:13 -0300 |
---|---|---|
committer | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-06-15 11:16:13 -0300 |
commit | 3a5f81e19320707f992fc9dd59eb2ed33ed04d87 (patch) | |
tree | 12f5f47895dbe7f5a66ad84462f547d955096b5c /extra/libxi | |
parent | a83e242d1ed979147bf58a24bacd90f2e4584e00 (diff) |
Fixed libxi SIGBUSes (thanks mtjm!)
Diffstat (limited to 'extra/libxi')
-rw-r--r-- | extra/libxi/PKGBUILD | 9 | ||||
-rw-r--r-- | extra/libxi/XExtInt-align-classes-n32.diff | 31 |
2 files changed, 37 insertions, 3 deletions
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 <jgc@archlinux.org> 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; + |