diff options
Diffstat (limited to 'extra/xorg-server')
-rw-r--r-- | extra/xorg-server/PKGBUILD | 48 | ||||
-rw-r--r-- | extra/xorg-server/loongson.patch | 49 | ||||
-rw-r--r-- | extra/xorg-server/vbe-fix-malloc-size-bug.patch | 39 |
3 files changed, 131 insertions, 5 deletions
diff --git a/extra/xorg-server/PKGBUILD b/extra/xorg-server/PKGBUILD index 5d284ff3d..dd6621754 100644 --- a/extra/xorg-server/PKGBUILD +++ b/extra/xorg-server/PKGBUILD @@ -5,10 +5,11 @@ pkgbase=xorg-server pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest' 'xorg-server-common' 'xorg-server-devel') pkgver=1.11.4 pkgrel=1 -arch=('i686' 'x86_64') +arch=('i686' 'x86_64' 'mips64el') license=('custom') url="http://xorg.freedesktop.org" -makedepends=('pixman' 'libx11' 'mesa' 'libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto' 'inputproto' 'fontsproto' 'videoproto' 'compositeproto' 'recordproto' 'scrnsaverproto' 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' 'libxv' 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres' 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'dri2proto' 'udev' 'libgcrypt') +makedepends=('pixman' 'libx11' 'mesa' 'libgl' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto' 'inputproto' 'fontsproto' 'videoproto' 'compositeproto' 'recordproto' 'scrnsaverproto' 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' 'libxv' 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres' 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'udev' 'libgcrypt') +[ "$CARCH" = "mips64el" ] || makedepends+=('xf86driproto' 'dri2proto') options=('!libtool') source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 autoconfig-nvidia.patch @@ -17,14 +18,16 @@ source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 #git-fixes.patch xvfb-run xvfb-run.1 - 10-quirks.conf) + 10-quirks.conf + loongson.patch) md5sums=('256325e9b17dff479d92bed97f6b0adb' '6c7e87d63ac4b535e19a80c89d0cf091' 'f8194638ca4872c2b0a67862a70bcebf' 'f6c84f4936f8e00abdfbd9fb4eda83fb' '52fd3effd80d7bc6c1660d4ecf23d31c' '376c70308715cd2643f7bff936d9934b' - 'd4f7dfc6be4ef4e2c6dd7632a9d88abe') + 'd4f7dfc6be4ef4e2c6dd7632a9d88abe' + 'd39c2e1a70bb4e400bb688cc74cd15f8') build() { cd "${srcdir}/${pkgbase}-${pkgver}" @@ -41,7 +44,38 @@ build() { # Add post-release patches from 1.11 branch # patch -Np1 -i "${srcdir}/git-fixes.patch" + # Based on http://lists.freedesktop.org/archives/xorg-devel/2011-October/026249.html + patch -Np1 -i "${srcdir}/loongson.patch" + autoreconf -fi + if [ "$CARCH" = "mips64el" ]; then + ./configure --prefix=/usr \ + --enable-ipv6 \ + --disable-dri \ + --disable-dri2 \ + --enable-dmx \ + --enable-xvfb \ + --enable-xnest \ + --enable-composite \ + --enable-xcsecurity \ + --enable-xorg \ + --enable-xephyr \ + --disable-glx \ + --disable-glx-tls \ + --enable-kdrive \ + --enable-install-setuid \ + --enable-config-udev \ + --disable-config-dbus \ + --enable-record \ + --disable-xfbdev \ + --disable-xfake \ + --disable-static \ + --sysconfdir=/etc/X11 \ + --localstatedir=/var \ + --with-xkb-path=/usr/share/X11/xkb \ + --with-xkb-output=/var/lib/xkb \ + --with-fontrootdir=/usr/share/fonts + else ./configure --prefix=/usr \ --enable-ipv6 \ --enable-dri \ @@ -66,6 +100,7 @@ build() { --with-xkb-path=/usr/share/X11/xkb \ --with-xkb-output=/var/lib/xkb \ --with-fontrootdir=/usr/share/fonts + fi make # Disable subdirs for make install rule to make splitting easier @@ -109,9 +144,11 @@ package_xorg-server() { rmdir "${pkgdir}/usr/share/X11" + if [ "$CARCH" != "mips64el" ]; then # Needed for non-mesa drivers, libgl will restore it mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \ "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg" + fi rm -rf "${pkgdir}/var" @@ -175,7 +212,8 @@ package_xorg-server-xdmx() { package_xorg-server-devel() { pkgdesc="Development files for the X.Org X server" - depends=(xproto randrproto renderproto xextproto inputproto kbproto fontsproto videoproto dri2proto xineramaproto xorg-util-macros pixman libpciaccess) + depends=(xproto randrproto renderproto xextproto inputproto kbproto fontsproto videoproto xineramaproto xorg-util-macros pixman libpciaccess) +[ "$CARCH" = "mips64el" ] || depends+=('dri2proto') cd "${srcdir}/${pkgbase}-${pkgver}" make DESTDIR="${pkgdir}" install diff --git a/extra/xorg-server/loongson.patch b/extra/xorg-server/loongson.patch new file mode 100644 index 000000000..b6c9692fc --- /dev/null +++ b/extra/xorg-server/loongson.patch @@ -0,0 +1,49 @@ +diff -ru xorg-server-1.11.2.orig/hw/xfree86/dri/sarea.h xorg-server-1.11.2/hw/xfree86/dri/sarea.h +--- xorg-server-1.11.2.orig/hw/xfree86/dri/sarea.h 2011-12-07 16:47:06.971237310 +0100 ++++ xorg-server-1.11.2/hw/xfree86/dri/sarea.h 2011-12-07 16:48:40.132392770 +0100 +@@ -42,6 +42,8 @@ + /* SAREA area needs to be at least a page */ + #if defined(__alpha__) + #define SAREA_MAX 0x2000 ++#elif defined(__mips__) ++#define SAREA_MAX 0x4000 + #elif defined(__ia64__) + #define SAREA_MAX 0x10000 /* 64kB */ + #else +diff -ru xorg-server-1.11.2.orig/hw/xfree86/os-support/linux/lnx_video.c xorg-server-1.11.2/hw/xfree86/os-support/linux/lnx_video.c +--- xorg-server-1.11.2.orig/hw/xfree86/os-support/linux/lnx_video.c 2011-12-07 16:47:06.967237429 +0100 ++++ xorg-server-1.11.2/hw/xfree86/os-support/linux/lnx_video.c 2011-12-07 16:52:33.200881187 +0100 +@@ -493,9 +493,10 @@ + Bool + xf86EnableIO(void) + { +-#if defined(__powerpc__) ++#if defined(__powerpc__) || defined(__mips__) + int fd; + unsigned int ioBase_phys; ++ extern unsigned int IOPortBase; + #endif + + if (ExtendedEnabled) +@@ -520,6 +521,21 @@ + #endif + } + close(fd); ++#elif defined(__mips__) ++ fd = open("/dev/mem", O_RDWR); ++ IOPortBase = (volatile unsigned char *)mmap(0, 0x20000, ++ PROT_READ | PROT_WRITE, MAP_SHARED, fd, ++ 0x1fd00000); ++ if (IOPortBase == MAP_FAILED) { ++ xf86Msg(X_WARNING, ++ "xf86EnableIOPorts: Failed to map iobase (%s)\n", ++ strerror(errno)); ++ return FALSE; ++ } ++ close(fd); ++ xf86Msg(X_WARNING, ++ "xf86EnableIOPorts: map iobase (%x)\n", ++ IOPortBase); + #elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__) && !defined(__nds32__) + if (ioperm(0, 1024, 1) || iopl(3)) { + if (errno == ENODEV) diff --git a/extra/xorg-server/vbe-fix-malloc-size-bug.patch b/extra/xorg-server/vbe-fix-malloc-size-bug.patch new file mode 100644 index 000000000..01ed040d4 --- /dev/null +++ b/extra/xorg-server/vbe-fix-malloc-size-bug.patch @@ -0,0 +1,39 @@ +From 8ffaef2ebd2611e2eed4ef97350c3a34508f5252 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <ajax@redhat.com> +Date: Thu, 24 Feb 2011 21:06:34 +0000 +Subject: vbe: Fix malloc size bug + +v2: Slightly more obvious sizing math. + +==14882== Invalid write of size 2 +==14882== at 0x6750267: VBEGetVBEInfo (vbe.c:400) +==14882== by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so) +==14882== by 0x471895: InitOutput (xf86Init.c:519) +==14882== by 0x422778: main (main.c:205) +==14882== Address 0x4f32fa8 is 72 bytes inside a block of size 73 alloc'd +==14882== at 0x4A0640D: malloc (vg_replace_malloc.c:236) +==14882== by 0x675024B: VBEGetVBEInfo (vbe.c:398) +==14882== by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so) +==14882== by 0x471895: InitOutput (xf86Init.c:519) +==14882== by 0x422778: main (main.c:205) + +Reviewed-by: Mark Kettenis <kettenis@openbsd.org> +Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> +Signed-off-by: Adam Jackson <ajax@redhat.com> +(cherry picked from commit d8caa782009abf4dc17b945e325e83fda299a534) +--- +diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c +index 7a64a4a..1d3775b 100644 +--- a/hw/xfree86/vbe/vbe.c ++++ b/hw/xfree86/vbe/vbe.c +@@ -395,7 +395,7 @@ VBEGetVBEInfo(vbeInfoPtr pVbe) + i = 0; + while (modes[i] != 0xffff) + i++; +- block->VideoModePtr = malloc(sizeof(CARD16) * i + 1); ++ block->VideoModePtr = malloc(sizeof(CARD16) * (i + 1)); + memcpy(block->VideoModePtr, modes, sizeof(CARD16) * i); + block->VideoModePtr[i] = 0xffff; + +-- +cgit v0.8.3-6-g21f6 |