summaryrefslogtreecommitdiff
path: root/extra/libxi
diff options
context:
space:
mode:
authorNicolas Reynolds <fauno@kiwwwi.com.ar>2011-06-15 11:16:13 -0300
committerNicolas Reynolds <fauno@kiwwwi.com.ar>2011-06-15 11:16:13 -0300
commit3a5f81e19320707f992fc9dd59eb2ed33ed04d87 (patch)
tree12f5f47895dbe7f5a66ad84462f547d955096b5c /extra/libxi
parenta83e242d1ed979147bf58a24bacd90f2e4584e00 (diff)
Fixed libxi SIGBUSes (thanks mtjm!)
Diffstat (limited to 'extra/libxi')
-rw-r--r--extra/libxi/PKGBUILD9
-rw-r--r--extra/libxi/XExtInt-align-classes-n32.diff31
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;
+