summaryrefslogtreecommitdiffstats
path: root/x11-servers/xorg-server/files
diff options
context:
space:
mode:
Diffstat (limited to 'x11-servers/xorg-server/files')
-rw-r--r--x11-servers/xorg-server/files/patch-945GM.patch335
-rw-r--r--x11-servers/xorg-server/files/patch-CVE-2006-074520
-rw-r--r--x11-servers/xorg-server/files/patch-FreeBSD.cf93
-rw-r--r--x11-servers/xorg-server/files/patch-Imake.rules67
-rw-r--r--x11-servers/xorg-server/files/patch-Imake.tmpl75
-rw-r--r--x11-servers/xorg-server/files/patch-Library.tmpl21
-rw-r--r--x11-servers/xorg-server/files/patch-X11.rules17
-rw-r--r--x11-servers/xorg-server/files/patch-X11.tmpl79
-rw-r--r--x11-servers/xorg-server/files/patch-Xserver-Imakefile8
-rw-r--r--x11-servers/xorg-server/files/patch-Xserver-Xext-xvmc.c14
-rw-r--r--x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-common-xf86Config.c18
-rw-r--r--x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-i386_video.c12
-rw-r--r--x11-servers/xorg-server/files/patch-Xserver-os-xprintf.c13
-rw-r--r--x11-servers/xorg-server/files/patch-bsdResource.c68
-rw-r--r--x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.c231
-rw-r--r--x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.h12
-rw-r--r--x11-servers/xorg-server/files/patch-font-FreeType-ftsystem.c12
-rw-r--r--x11-servers/xorg-server/files/patch-font-bitmap-pcfread.c101
-rw-r--r--x11-servers/xorg-server/files/patch-mitri.c25
-rw-r--r--x11-servers/xorg-server/files/patch-render.c11
-rw-r--r--x11-servers/xorg-server/files/patch-servermd.h11
-rw-r--r--x11-servers/xorg-server/files/patch-sunffb-nocfb101
-rw-r--r--x11-servers/xorg-server/files/patch-xf86.tmpl12
-rw-r--r--x11-servers/xorg-server/files/patch-xf86Events.c76
-rw-r--r--x11-servers/xorg-server/files/patch-xf86cfg-Imakefile11
-rw-r--r--x11-servers/xorg-server/files/patch-xf86sym.c10
-rw-r--r--x11-servers/xorg-server/files/patch-xorgconf.cpp14
27 files changed, 1467 insertions, 0 deletions
diff --git a/x11-servers/xorg-server/files/patch-945GM.patch b/x11-servers/xorg-server/files/patch-945GM.patch
new file mode 100644
index 000000000..a0fd8f94d
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-945GM.patch
@@ -0,0 +1,335 @@
+#
+# Add support to Intel 945GM
+#
+--- programs/Xserver/hw/xfree86/drivers/i810/common.h.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/common.h Mon Jul 17 11:43:00 2006
+@@ -322,6 +322,11 @@
+ #define PCI_CHIP_I945_G_BRIDGE 0x2770
+ #endif
+
++#ifndef PCI_CHIP_I945_GM
++#define PCI_CHIP_I945_GM 0x27A2
++#define PCI_CHIP_I945_GM_BRIDGE 0x27A0
++#endif
++
+ #define IS_I810(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I810 || \
+ pI810->PciInfo->chipType == PCI_CHIP_I810_DC100 || \
+ pI810->PciInfo->chipType == PCI_CHIP_I810_E)
+@@ -335,6 +340,7 @@
+ #define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G || pI810->PciInfo->chipType == PCI_CHIP_E7221_G)
+ #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
+ #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G)
++#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM)
+
+ #define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810))
+
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c Mon Jul 17 11:44:09 2006
+@@ -136,6 +136,7 @@
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
+ {PCI_CHIP_I915_GM, "915GM"},
+ {PCI_CHIP_I945_G, "945G"},
++ {PCI_CHIP_I945_GM, "945GM"},
+ {-1, NULL}
+ };
+
+@@ -154,6 +155,7 @@
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
+ {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
+ {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA},
++ {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED }
+ };
+
+@@ -569,6 +571,7 @@
+ case PCI_CHIP_E7221_G:
+ case PCI_CHIP_I915_GM:
+ case PCI_CHIP_I945_G:
++ case PCI_CHIP_I945_GM:
+ xf86SetEntitySharable(usedChips[i]);
+
+ /* Allocate an entity private if necessary */
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c Mon Jul 17 11:46:20 2006
+@@ -86,7 +86,7 @@
+
+ DPRINTF(PFX, "I830InitHWCursor\n");
+ /* Initialise the HW cursor registers, leaving the cursor hidden. */
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE | MCURSOR_MEM_TYPE_LOCAL |
+ MCURSOR_PIPE_SELECT);
+@@ -308,7 +308,7 @@
+ }
+
+ /* have to upload the base for the new position */
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ if (pI830->CursorIsARGB)
+ OUTREG(CURSOR_A_BASE, pI830->CursorMemARGB->Physical);
+ else
+@@ -339,7 +339,7 @@
+ pI830->CursorMemARGB->Physical, pI830->CursorMemARGB->Start);
+
+ pI830->cursorOn = TRUE;
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT);
+ if (pI830->CursorIsARGB)
+@@ -387,7 +387,7 @@
+ DPRINTF(PFX, "I830HideCursor\n");
+
+ pI830->cursorOn = FALSE;
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ temp = INREG(CURSOR_A_CONTROL);
+ temp &= ~CURSOR_MODE;
+ temp |= CURSOR_MODE_DISABLE;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c Mon Jul 17 11:49:23 2006
+@@ -196,6 +196,7 @@
+ {PCI_CHIP_E7221_G, "E7221 (i915)"},
+ {PCI_CHIP_I915_GM, "915GM"},
+ {PCI_CHIP_I945_G, "945G"},
++ {PCI_CHIP_I945_GM, "945GM"},
+ {-1, NULL}
+ };
+
+@@ -208,6 +209,7 @@
+ {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, RES_SHARED_VGA},
+ {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, RES_SHARED_VGA},
+ {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA},
++ {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA},
+ {-1, -1, RES_UNDEFINED}
+ };
+
+@@ -1323,7 +1325,7 @@
+ * The GTT varying according the the FbMapSize and the popup is 4KB */
+ range = (pI830->FbMapSize / (1024*1024)) + 4;
+
+- if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
+ case I855_GMCH_GMS_STOLEN_1M:
+ memsize = MB(1) - KB(range);
+@@ -1341,11 +1343,11 @@
+ memsize = MB(32) - KB(range);
+ break;
+ case I915G_GMCH_GMS_STOLEN_48M:
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ memsize = MB(48) - KB(range);
+ break;
+ case I915G_GMCH_GMS_STOLEN_64M:
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ memsize = MB(64) - KB(range);
+ break;
+ }
+@@ -2090,6 +2092,9 @@
+ case PCI_CHIP_I945_G:
+ chipname = "945G";
+ break;
++ case PCI_CHIP_I945_GM:
++ chipname = "945GM";
++ break;
+ default:
+ chipname = "unknown chipset";
+ break;
+@@ -2127,7 +2132,7 @@
+ pI830->LinearAddr = pI830->pEnt->device->MemBase;
+ from = X_CONFIG;
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ pI830->LinearAddr = pI830->PciInfo->memBase[2] & 0xF0000000;
+ from = X_PROBED;
+ } else if (pI830->PciInfo->memBase[1] != 0) {
+@@ -2149,7 +2154,7 @@
+ pI830->MMIOAddr = pI830->pEnt->device->IOBase;
+ from = X_CONFIG;
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ pI830->MMIOAddr = pI830->PciInfo->memBase[0] & 0xFFF80000;
+ from = X_PROBED;
+ } else if (pI830->PciInfo->memBase[1]) {
+@@ -2194,7 +2199,7 @@
+ pI830->FbMapSize = 0x4000000; /* 64MB - has this been tested ?? */
+ }
+ } else {
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ if (pI830->PciInfo->memBase[2] & 0x08000000)
+ pI830->FbMapSize = 0x8000000; /* 128MB aperture */
+ else
+@@ -2227,7 +2232,7 @@
+ if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G)
+ pI830->availablePipes = 1;
+ else
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ pI830->availablePipes = 2;
+ else
+ pI830->availablePipes = 1;
+@@ -2872,7 +2877,7 @@
+ }
+
+ /* Check if the HW cursor needs physical address. */
+- if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
++ if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ pI830->CursorNeedsPhysical = TRUE;
+ else
+ pI830->CursorNeedsPhysical = FALSE;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c Mon Jul 17 11:51:02 2006
+@@ -1239,7 +1239,7 @@
+
+ i830Reg->Fence[nr] = 0;
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ fence_mask = ~I915G_FENCE_START_MASK;
+ else
+ fence_mask = ~I830_FENCE_START_MASK;
+@@ -1247,7 +1247,7 @@
+ if (start & fence_mask) {
+ xf86DrvMsg(X_WARNING, pScrn->scrnIndex,
+ "SetFence: %d: start (0x%08x) is not %s aligned\n",
+- nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) ? "1MB" : "512k");
++ nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) ? "1MB" : "512k");
+ return;
+ }
+
+@@ -1267,7 +1267,7 @@
+
+ val = (start | FENCE_X_MAJOR | FENCE_VALID);
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ switch (size) {
+ case MB(1):
+ val |= I915G_FENCE_SIZE_1M;
+@@ -1328,7 +1328,7 @@
+ }
+ }
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ fence_pitch = pitch / 512;
+ else
+ fence_pitch = pitch / 128;
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_video.c.orig Mon Jul 17 11:41:34 2006
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_video.c Mon Jul 17 11:52:36 2006
+@@ -617,7 +617,7 @@
+ adapt->nAttributes = NUM_ATTRIBUTES;
+ if (pI830->Clone)
+ adapt->nAttributes += CLONE_ATTRIBUTES;
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
+ adapt->nAttributes += GAMMA_ATTRIBUTES; /* has gamma */
+ adapt->pAttributes = xnfalloc(sizeof(XF86AttributeRec) * adapt->nAttributes);
+ /* Now copy the attributes */
+@@ -628,7 +628,7 @@
+ memcpy((char*)att, (char*)CloneAttributes, sizeof(XF86AttributeRec) * CLONE_ATTRIBUTES);
+ att+=CLONE_ATTRIBUTES;
+ }
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ memcpy((char*)att, (char*)GammaAttributes, sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES);
+ att+=GAMMA_ATTRIBUTES;
+ }
+@@ -688,7 +688,7 @@
+ if (pI830->Clone)
+ xvPipe = MAKE_ATOM("XV_PIPE");
+
+- if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
++ if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
+ xvGamma0 = MAKE_ATOM("XV_GAMMA0");
+ xvGamma1 = MAKE_ATOM("XV_GAMMA1");
+ xvGamma2 = MAKE_ATOM("XV_GAMMA2");
+@@ -806,7 +806,7 @@
+ overlay->OCONFIG |= OVERLAY_PIPE_B;
+ if (pPriv->overlayOK)
+ OVERLAY_UPDATE;
+- } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ /* Avoid video anomalies, so set gamma registers when overlay is off */
+ /* We also clamp the values if they are outside the ranges */
+ if (!*pI830->overlayOn) {
+@@ -815,35 +815,35 @@
+ pPriv->gamma1 = pPriv->gamma0 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma1 = value;
+ if (pPriv->gamma1 - pPriv->gamma0 > 0x7d)
+ pPriv->gamma0 = pPriv->gamma1 - 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma2 = value;
+ if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
+ pPriv->gamma3 = pPriv->gamma2 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma3 = value;
+ if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
+ pPriv->gamma2 = pPriv->gamma3 - 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma4 = value;
+ if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
+ pPriv->gamma5 = pPriv->gamma4 + 0x7d;
+ } else
+ return BadRequest;
+- } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ if (!*pI830->overlayOn) {
+ pPriv->gamma5 = value;
+ if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
+@@ -875,7 +875,7 @@
+ attribute == xvGamma2 ||
+ attribute == xvGamma3 ||
+ attribute == xvGamma4 ||
+- attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ I830UpdateGamma(pScrn);
+ }
+
+@@ -895,17 +895,17 @@
+ *value = pPriv->contrast;
+ } else if (pI830->Clone && attribute == xvPipe) {
+ *value = pPriv->pipe;
+- } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma0;
+- } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma1;
+- } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma2;
+- } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma3;
+- } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma4;
+- } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
++ } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
+ *value = pPriv->gamma5;
+ } else if (attribute == xvColorKey) {
+ *value = pPriv->colorKey;
diff --git a/x11-servers/xorg-server/files/patch-CVE-2006-0745 b/x11-servers/xorg-server/files/patch-CVE-2006-0745
new file mode 100644
index 000000000..afb7d4de7
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-CVE-2006-0745
@@ -0,0 +1,20 @@
+--- programs/Xserver/hw/xfree86/common/xf86Init.c.orig 2006-03-17 23:30:10.000000000 +0200
++++ programs/Xserver/hw/xfree86/common/xf86Init.c 2006-03-17 23:29:35.000000000 +0200
+@@ -1376,7 +1376,7 @@
+ }
+
+ /* First the options that are only allowed for root */
+- if (getuid() == 0 || geteuid != 0)
++ if (getuid() == 0 || geteuid() != 0)
+ {
+ if (!strcmp(argv[i], "-modulepath"))
+ {
+@@ -1679,7 +1679,7 @@
+ }
+ if (!strcmp(argv[i], "-configure"))
+ {
+- if (getuid() != 0 && geteuid == 0) {
++ if (getuid() != 0 && geteuid() == 0) {
+ ErrorF("The '-configure' option can only be used by root.\n");
+ exit(1);
+ }
diff --git a/x11-servers/xorg-server/files/patch-FreeBSD.cf b/x11-servers/xorg-server/files/patch-FreeBSD.cf
new file mode 100644
index 000000000..9a208d778
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-FreeBSD.cf
@@ -0,0 +1,93 @@
+--- config/cf/FreeBSD.cf.orig Sun Aug 15 10:03:36 2004
++++ config/cf/FreeBSD.cf Sun Feb 6 03:56:59 2005
+@@ -78,6 +78,7 @@
+ #define HasIssetugid YES
+ #define HasPoll YES
+ #endif
++#define BuildHtmlManPages NO
+
+ #if OSMajorVersion >= 4
+ #define HasGetIfAddrs YES
+@@ -116,15 +117,14 @@
+ # endif
+ # if (OSRelVersion < 500043)
+ # define NeedUIThrStubs YES
+-# endif
+-# if (OSRelVersion >= 502102)
+-# define ThreadsLibraries -lpthread
+-# elif (OSRelVersion >= 500016)
+-# define ThreadsLibraries -lc_r
++# define BuildThreadStubLibrary YES
++# define SharedX11Reqs $(LDPRELIB) $(XTHRSTUBLIB)
++# define SharedXtReqs $(LDPRELIB) $(XONLYLIB) $(SMLIB) $(ICELIB) $(XTHRSTUBLIB)
+ # else
+-# define ThreadsLibraries -pthread
++# define BuildThreadStubLibrary NO
+ # endif
+-# define SystemMTDefines -D_THREAD_SAFE
++# define ThreadsLibraries FreeBSDPTHREAD_LIBS
++# define SystemMTDefines FreeBSDPTHREAD_CFLAGS
+ #endif
+
+ /* This fixes linking C programs against libGLU on FreeBSD 3.x */
+@@ -172,12 +172,14 @@
+ #endif
+ #endif
+
+-#ifndef CcCmd
+-#define CcCmd cc
+-#endif
+-#ifndef CplusplusCmd
+-#define CplusplusCmd c++
++#if BuildThreadStubLibrary && (!defined(UseInstalledX11) || !UseInstalledX11)
++#define CcCmd $(CLIENTENVSETUP) FreeBSDCC
++#define CplusplusCmd $(CLIENTENVSETUP) FreeBSDCXX
++#else
++#define CcCmd FreeBSDCC
++#define CplusplusCmd FreeBSDCXX
+ #endif
++
+ #define CppCmd /usr/bin/cpp
+ #define PreProcessCmd CppCmd
+ #define StandardCppOptions -traditional
+@@ -338,7 +340,7 @@
+ #ifndef LibraryRpathLoadFlags
+ # if UseRpath
+ # if UseElfFormat
+-# define LibraryRpathLoadFlags -rpath $(USRLIBDIRPATH)
++# define LibraryRpathLoadFlags -Wl,-rpath $(USRLIBDIRPATH)
+ # else
+ # define LibraryRpathLoadFlags -R $(USRLIBDIRPATH)
+ # endif
+@@ -442,7 +444,9 @@
+ #define AsVISOption -Av9a
+ #define AsOutputArchSize 64
+ #endif
+-
++#ifdef PpcArchitecture
++#define XF86INT10_BUILD X86INT10_STUB
++#endif
+ #define StandardDefines -DCSRG_BASED
+
+ #if OSMajorVersion > 1
+@@ -463,18 +467,8 @@
+ #define XawI18nDefines -DUSE_XWCHAR_STRING -DUSE_XMBTOWC
+ #endif
+
+-/* The GCC strength-reduce bug is fixed for FreeBSD 2.1.5 and later */
+-#ifndef DefaultGcc2i386Opt
+-#if OSMajorVersion > 2 || (OSMajorVersion == 2 && OSMinorVersion > 1) || (OSMajorVersion == 2 && OSMinorVersion == 1 && OSTeenyVersion >= 5)
+-#define DefaultGcc2i386Opt -O2 GccAliasingArgs
+-#endif
+-#endif
+-
+-#ifdef i386Architecture
+-# define OptimizedCDebugFlags DefaultGcc2i386Opt
+-#else
+-# define OptimizedCDebugFlags -O
+-#endif
++#define DefaultGcc2i386Opt
++#define OptimizedCDebugFlags FreeBSDCFLAGS
+
+ #ifndef PreIncDir
+ # define PreIncDir /usr/include
diff --git a/x11-servers/xorg-server/files/patch-Imake.rules b/x11-servers/xorg-server/files/patch-Imake.rules
new file mode 100644
index 000000000..deea1cb88
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Imake.rules
@@ -0,0 +1,67 @@
+--- config/cf/Imake.rules.orig Mon Dec 9 15:00:42 2002
++++ config/cf/Imake.rules Mon Oct 13 17:04:19 2003
+@@ -1406,7 +1406,7 @@
+ * this Imakefile is within the source tree.
+ */
+ #ifndef RmanDependency
+-#ifdef UseInstalled
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
+ #define RmanDependency() /**/
+ #else
+ #define RmanDependency() @@\
+@@ -1421,7 +1421,7 @@
+ #endif /* RmanDependency */
+
+ #ifndef RmanCmdDependency
+-#ifdef UseInstalled
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
+ #define RmanCmdDependency /**/
+ #else
+ #define RmanCmdDependency ProgramTargetName($(RMAN))
+@@ -1874,7 +1874,7 @@
+ * this Imakefile is within the source tree.
+ */
+ #ifndef DependDependency
+-#ifdef UseInstalled
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
+ #define DependDependency() /**/
+ #else
+ #define DependDependency() @@\
+@@ -1969,7 +1969,7 @@
+ * within the source tree.
+ */
+ #ifndef ImakeDependency
+-#ifdef UseInstalled
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
+ #define ImakeDependency(target) /**/
+ #else
+ #define ImakeDependency(target) @@\
+@@ -2066,11 +2066,18 @@
+ * ProjectUnsharedLibReferences - variables for unshared libraries
+ */
+ #ifndef ProjectUnsharedLibReferences
++#if defined(UseInstalledLibraries)
++#define ProjectUnsharedLibReferences(varname,libname,libsource,buildlibdir) @@\
++Concat3(DEP,varname,LIB) = @@\
++Concat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\
++LintLibReferences(varname,libname,libsource)
++#else
+ #define ProjectUnsharedLibReferences(varname,libname,libsource,buildlibdir) @@\
+ Concat3(DEP,varname,LIB) = _UseCat($(USRLIBDIR)/,buildlibdir/,LibraryTargetName(libname)) @@\
+ Concat(varname,LIB) = LoaderLibPrefix Concat(-l,libname) @@\
+ LintLibReferences(varname,libname,libsource)
+ #endif
++#endif
+
+ /*
+ * ProjectUnsharedFontLibReferences - unshared font libraries
+@@ -3126,6 +3133,9 @@
+
+ #ifdef UseInstalled
+ #define ImakeSubCmdHelper $(IMAKE_CMD)
++#elif defined(UseInstalledPrograms)
++#define ImakeSubCmdHelper $(IMAKE) -I$(IMAKEPREFIX)$(IRULESRC) \
++ $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
+ #else
+ #define ImakeSubCmdHelper $(IMAKEPREFIX)$(IMAKE) -I$(IMAKEPREFIX)$(IRULESRC) \
+ $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
diff --git a/x11-servers/xorg-server/files/patch-Imake.tmpl b/x11-servers/xorg-server/files/patch-Imake.tmpl
new file mode 100644
index 000000000..526e2e5de
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Imake.tmpl
@@ -0,0 +1,75 @@
+--- config/cf/Imake.tmpl.orig Mon Dec 9 19:20:41 2002
++++ config/cf/Imake.tmpl Thu Jan 2 14:34:20 2003
+@@ -237,7 +237,8 @@
+
+ #ifndef RmanCmd
+ #if BuildRman
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define RmanCmd rman
+ #else
+ #define RmanCmd $(TOP)/config/util/rman
+@@ -1348,7 +1349,8 @@
+ #define LoaderLibPrefix /**/
+ #endif
+ #ifndef ImakeCmd
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define ImakeCmd imake
+ #else
+ #define ImakeCmd $(IMAKESRC)/imake
+@@ -1359,19 +1361,22 @@
+ #endif
+ #ifndef DependCmd
+ #if UseGccMakeDepend
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define DependCmd gccmakedep
+ #else
+ #define DependCmd $(DEPENDSRC)/gccmakedep
+ #endif
+ #elif UseCCMakeDepend
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define DependCmd ccmakedep
+ #else
+ #define DependCmd $(DEPENDSRC)/ccmakedep
+ #endif
+ #else
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define DependCmd makedepend
+ #else
+ #define DependCmd $(DEPENDSRC)/makedepend
+@@ -1398,21 +1403,23 @@
+ #ifndef ExportListCmd
+ # ifndef ExportListGenSource
+ # define ExportListCmd /**/
+-# elif !defined(UseInstalled)
++# elif !defined(UseInstalled) && !defined(UseInstalledPrograms)
+ # define ExportListCmd $(CONFIGSRC)/util/exportlistgen
+ # else
+ # define ExportListCmd exportlistgen
+ # endif
+ #endif
+ #ifndef MkdirHierCmd
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define MkdirHierCmd mkdirhier
+ #else
+ #define MkdirHierCmd $(SHELL) $(CONFIGSRC)/util/mkdirhier.sh
+ #endif
+ #endif
+ #ifndef RevPathCmd
+-#ifdef UseInstalled /* assume BINDIR in path */
++#if defined(UseInstalled) || defined(UseInstalledPrograms)
++/* assume BINDIR in path */
+ #define RevPathCmd revpath
+ #else
+ #define RevPathCmd $(CONFIGSRC)/util/revpath
diff --git a/x11-servers/xorg-server/files/patch-Library.tmpl b/x11-servers/xorg-server/files/patch-Library.tmpl
new file mode 100644
index 000000000..e94aae3bf
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Library.tmpl
@@ -0,0 +1,21 @@
+--- config/cf/Library.tmpl.orig Mon May 24 12:06:57 2004
++++ config/cf/Library.tmpl Fri Sep 10 21:46:00 2004
+@@ -389,7 +389,7 @@
+ */
+
+ #ifndef MakeStringsDependency
+-# ifndef UseInstalled
++# if !defined(UseInstalled) && !defined(UseInstalledPrograms)
+ # define MakeStringsDependency @@\
+ MAKESTRS = $(CONFIGSRC)/util/makestrs @@\
+ NoCmpScript(HostProgramTargetName($(MAKESTRS)) $(MAKESTRS).Osuf) @@\
+@@ -399,7 +399,8 @@
+ @@\
+ includes:: HostProgramTargetName($(MAKESTRS))
+ # else
+-# define MakeStringsDependency /**/
++# define MakeStringsDependency @@\
++MAKESTRS = makestrs
+ # endif
+ #endif
+
diff --git a/x11-servers/xorg-server/files/patch-X11.rules b/x11-servers/xorg-server/files/patch-X11.rules
new file mode 100644
index 000000000..052e96012
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-X11.rules
@@ -0,0 +1,17 @@
+--- config/cf/X11.rules.orig Sun May 30 12:49:38 2004
++++ config/cf/X11.rules Sun May 30 12:50:02 2004
+@@ -23,6 +23,14 @@
+ # define UseInstalledX11 YES
+ #endif
+
++#ifndef UseInstalledPrograms
++# define UseInstalledPrograms NO
++#endif
++
++#ifndef UseInstalledClients
++# define UseInstalledClients NO
++#endif
++
+ #ifndef ImportX11
+ # ifdef UseImports
+ # define ImportX11 YES
diff --git a/x11-servers/xorg-server/files/patch-X11.tmpl b/x11-servers/xorg-server/files/patch-X11.tmpl
new file mode 100644
index 000000000..c27d14d8e
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-X11.tmpl
@@ -0,0 +1,79 @@
+--- X11.tmpl.orig Fri Sep 3 09:18:18 2004
++++ config/cf/X11.tmpl Wed Dec 29 13:42:37 2004
+@@ -616,7 +616,7 @@
+ #define BuildXft1Library BuildRenderLibrary
+ #endif
+ #ifndef UseFontconfig
+-#define UseFontconfig BuildXftLibrary
++#define UseFontconfig (BuildXftLibrary || BuildXft1Library)
+ #endif
+ #ifndef BuildFontconfigLibrary
+ #define BuildFontconfigLibrary (UseFontconfig && !HasFontconfig)
+@@ -773,6 +773,9 @@
+ #ifndef ThreadedProject
+ #define ThreadedProject ThreadedX
+ #endif
++#ifndef BuildThreadStubLibrary
++#define BuildThreadStubLibrary NO
++#endif
+ #ifndef NeedUIThrStubs
+ #define NeedUIThrStubs NO
+ #endif
+@@ -1606,7 +1609,7 @@
+ #endif
+
+ #ifndef PsWrap
+-# ifndef UseInstalled
++# if !defined(UseInstalled) && !defined(UseInstalledPrograms)
+ # define PsWrap $(PSWRAPSRC)/pswrap
+ # else
+ # define PsWrap pswrap
+@@ -1683,7 +1686,7 @@
+
+ INSTAPPFLAGS = $(INSTDATFLAGS) /* XXX - this should go away - XXX */
+
+-#if UseInstalledX11
++#if UseInstalledX11 || UseInstalledClients
+ RGB = $(XBINDIR)/rgb
+ FONTC = $(XBINDIR)/bdftopcf
+ MKFONTSCALE = $(XBINDIR)/mkfontscale
+@@ -1843,6 +1846,39 @@
+ DEPXLIBONLY = $(DEPXONLYLIB)
+ XLIBONLY = $(XONLYLIB)
+ LINTXONLYLIB = $(LINTXONLY)
++
++#if BuildThreadStubLibrary
++#ifndef SharedLibXThrStub
++#define SharedLibXThrStub YES
++#endif
++#ifndef NormalLibXThrStub
++#define NormalLibXThrStub NO
++#endif
++#ifndef DebugLibXThrStub
++#define DebugLibXThrStub NO
++#endif
++#ifndef ProfileLibXThrStub
++#define ProfileLibXThrStub NO
++#endif
++ XTHRSTUBLIBSRC = $(LIBSRC)/XThrStub
++#if SharedLibXThrStub
++#ifndef SharedXThrStubRev
++#define SharedXThrStubRev 6.1
++#endif
++SharedLibReferences(XTHRSTUB,XThrStub,$(XTHRSTUBLIBSRC),SOXTHRSTUBREV,SharedXThrStubRev)
++#else
++ProjectUnsharedLibReferences(XTHRSTUB,XThrStub,$(XTHRSTUBSRC),XBuildLibDir)
++#endif
++#else
++#undef SharedLibXThrStub
++#define SharedLibXThrStub NO
++#undef NormalLibXThrStub
++#define NormalLibXThrStub NO
++#undef DebugLibXThrStub
++#define DebugLibXThrStub NO
++#undef ProfileLibXThrStub
++#define ProfileLibXThrStub NO
++#endif
+
+ #if BuildScreenSaverLibrary
+ #ifndef SharedLibXss
diff --git a/x11-servers/xorg-server/files/patch-Xserver-Imakefile b/x11-servers/xorg-server/files/patch-Xserver-Imakefile
new file mode 100644
index 000000000..5dab87bd4
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Xserver-Imakefile
@@ -0,0 +1,8 @@
+--- programs/Xserver/Imakefile.orig Sat May 29 14:12:45 2004
++++ programs/Xserver/Imakefile Sat May 29 14:12:16 2004
+@@ -1095,5 +1095,3 @@
+
+ DEFAULTFONTPATH = DefaultFontPath
+ EXTRAMANDEFS = -D__default_font_path__="`echo $(DEFAULTFONTPATH) | sed -e 's/,/, /g'`"
+-
+-InstallManPage(Xserver,$(MANDIR))
diff --git a/x11-servers/xorg-server/files/patch-Xserver-Xext-xvmc.c b/x11-servers/xorg-server/files/patch-Xserver-Xext-xvmc.c
new file mode 100644
index 000000000..6a9380e45
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Xserver-Xext-xvmc.c
@@ -0,0 +1,14 @@
+Index: programs/Xserver/Xext/xvmc.c
+diff -u -p programs/Xserver/Xext/xvmc.c.orig programs/Xserver/Xext/xvmc.c
+--- programs/Xserver/Xext/xvmc.c.orig Sun Jul 3 17:53:36 2005
++++ programs/Xserver/Xext/xvmc.c Thu Jan 26 14:22:20 2006
+@@ -24,8 +24,8 @@
+
+ #ifdef HAS_XVMCSHM
+ #ifndef Lynx
+-#include <sys/ipc.h>
+ #include <sys/types.h>
++#include <sys/ipc.h>
+ #include <sys/shm.h>
+ #else
+ #include <ipc.h>
diff --git a/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-common-xf86Config.c b/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-common-xf86Config.c
new file mode 100644
index 000000000..129b262f1
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-common-xf86Config.c
@@ -0,0 +1,18 @@
+Index: programs/Xserver/hw/xfree86/common/xf86Config.c
+diff -u -p programs/Xserver/hw/xfree86/common/xf86Config.c.orig programs/Xserver/hw/xfree86/common/xf86Config.c
+--- programs/Xserver/hw/xfree86/common/xf86Config.c.orig Wed Dec 21 07:30:50 2005
++++ programs/Xserver/hw/xfree86/common/xf86Config.c Thu Jan 26 15:10:39 2006
+@@ -505,8 +505,12 @@ GenerateDriverlist(char * dirname, char
+ {
+ #ifdef XFree86LOADER
+ char **ret;
+- char *subdirs[] = { dirname, NULL };
++ char *subdirs[2];
+ static const char *patlist[] = {"(.*)_drv\\.so", "(.*)_drv\\.o", NULL};
++
++ subdirs[0] = dirname;
++ subdirs[1] = NULL;
++
+ ret = LoaderListDirs(subdirs, patlist);
+
+ /* fix up the probe order for video drivers */
diff --git a/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-i386_video.c b/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-i386_video.c
new file mode 100644
index 000000000..8fc64d32f
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Xserver-hw-xfree86-os-support-bsd-i386_video.c
@@ -0,0 +1,12 @@
+Index: programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c
+diff -u -p programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c.orig programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c
+--- programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c.orig Tue Oct 4 01:46:14 2005
++++ programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c Thu Jan 26 14:57:56 2006
+@@ -35,6 +35,7 @@
+ #include "xf86Priv.h"
+
+ #include <errno.h>
++#include <sys/types.h>
+ #include <sys/mman.h>
+
+ #ifdef HAS_MTRR_SUPPORT
diff --git a/x11-servers/xorg-server/files/patch-Xserver-os-xprintf.c b/x11-servers/xorg-server/files/patch-Xserver-os-xprintf.c
new file mode 100644
index 000000000..d8f304d15
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-Xserver-os-xprintf.c
@@ -0,0 +1,13 @@
+Index: programs/Xserver/os/xprintf.c
+diff -u -p programs/Xserver/os/xprintf.c.orig programs/Xserver/os/xprintf.c
+--- programs/Xserver/os/xprintf.c.orig Sun Jul 3 17:53:52 2005
++++ programs/Xserver/os/xprintf.c Thu Jan 26 12:47:37 2006
+@@ -39,7 +39,7 @@
+ # ifdef __va_copy
+ # define va_copy __va_copy
+ # else
+-# error "no working va_copy was found"
++# define va_copy(dest, src) ((dest) = (src))
+ # endif
+ #endif
+
diff --git a/x11-servers/xorg-server/files/patch-bsdResource.c b/x11-servers/xorg-server/files/patch-bsdResource.c
new file mode 100644
index 000000000..e031b2681
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-bsdResource.c
@@ -0,0 +1,68 @@
+--- programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c.orig Fri Apr 23 21:54:07 2004
++++ programs/Xserver/hw/xfree86/os-support/bsd/bsdResource.c Tue May 17 00:48:36 2005
+@@ -18,7 +18,7 @@
+
+ #ifdef INCLUDE_XF86_NO_DOMAIN
+
+-#if defined(__alpha__) || defined(__sparc64__) || defined(__amd64__)
++#if defined(__alpha__) || defined(__amd64__)
+
+ resPtr
+ xf86BusAccWindowsFromOS(void)
+@@ -112,7 +112,7 @@
+ return ret;
+ }
+
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) || defined(__sparc__) || defined(__sparc64__)
+
+ resPtr
+ xf86BusAccWindowsFromOS(void)
+@@ -123,7 +123,11 @@
+ RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
+ ret = xf86AddResToList(ret, &range, -1);
+
++#if defined(__sparc__) || defined(__sparc64__)
++ RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
++#else
+ RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
++#endif
+ ret = xf86AddResToList(ret, &range, -1);
+ return ret;
+ }
+@@ -137,7 +141,11 @@
+ RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
+ ret = xf86AddResToList(ret, &range, -1);
+
++#if defined(__sparc__) || defined(__sparc64__)
++ RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
++#else
+ RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
++#endif
+ ret = xf86AddResToList(ret, &range, -1);
+ return ret;
+ }
+@@ -153,7 +161,11 @@
+ RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
+ ret = xf86AddResToList(ret, &range, -1);
+
++#if defined(__sparc__) || defined(__sparc64__)
++ RANGE(range, 0x00000000, 0x00ffffff, ResExcIoBlock);
++#else
+ RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
++#endif
+ ret = xf86AddResToList(ret, &range, -1);
+ return ret;
+ }
+@@ -175,7 +187,11 @@
+ ret = xf86AddResToList(ret, &range, -1);
+ RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
+ ret = xf86AddResToList(ret, &range, -1);
++#if defined(__sparc__) || defined(__sparc64__)
++ RANGE(range, 0x00ffffff, 0x00ffffff, ResExcIoBlock);
++#else
+ RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
++#endif
+ ret = xf86AddResToList(ret, &range, -1);
+
+ return ret;
diff --git a/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.c b/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.c
new file mode 100644
index 000000000..68e18f831
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.c
@@ -0,0 +1,231 @@
+--- lib/font/FreeType/ftfuncs.c.orig 2005-10-23 19:32:05.000000000 +0100
++++ lib/font/FreeType/ftfuncs.c 2006-06-01 23:21:34.000000000 +0100
+@@ -54,10 +54,7 @@
+ #include FT_TYPE1_TABLES_H
+ #include FT_XFREE86_H
+ #include FT_BBOX_H
+-#include FT_INTERNAL_TRUETYPE_TYPES_H
+ #include FT_TRUETYPE_TAGS_H
+-#include FT_INTERNAL_SFNT_H
+-#include FT_INTERNAL_STREAM_H
+ /*
+ * If you want to use FT_Outline_Get_CBox instead of
+ * FT_Outline_Get_BBox, define here.
+@@ -123,6 +120,46 @@
+ };
+
+
++/* read 2-byte value from a SFNT table */
++static FT_UShort
++sfnt_get_ushort( FT_Face face,
++ FT_ULong table_tag,
++ FT_ULong table_offset )
++{
++ FT_Byte buff[2];
++ FT_ULong len = sizeof(buff);
++ FT_UShort result = 0;
++
++ if ( !FT_Load_Sfnt_Table( face, table_tag, table_offset, buff, &len ) );
++ result = (FT_UShort)( (buff[0] << 8) | buff[1] );
++
++ return result;
++}
++
++#define sfnt_get_short(f,t,o) ((FT_Short)sfnt_get_ushort((f),(t),(o)))
++
++
++#if 0
++static FT_ULong
++sfnt_get_ulong( FT_Face face,
++ FT_ULong table_tag,
++ FT_ULong table_offset )
++{
++ FT_Byte buff[4];
++ FT_ULong len = sizeof(buff);
++ FT_UShort result = 0;
++
++ if ( !FT_Load_Sfnt_Table( face, table_tag, table_offset, buff, &len );
++ result = ((FT_ULong)buff[0] << 24) | ((FT_ULong)buff[1] << 16) |
++ ((FT_ULong)buff[2] << 8) | (FT_ULong)buff[3];
++
++ return result;
++}
++#endif
++
++
++
++
+ static int ftypeInitP = 0; /* is the engine initialised? */
+ FT_Library ftypeLibrary;
+
+@@ -211,6 +248,10 @@
+ if(maxp && maxp->maxContours == 0)
+ face->bitmap = 1;
+ }
++
++ face->num_hmetrics = (FT_UInt) sfnt_get_ushort( face->face,
++ TTAG_hhea, 34 );
++
+ /* Insert face in hashtable and return it */
+ face->next = faceTable[bucket];
+ faceTable[bucket] = face;
+@@ -462,6 +503,29 @@
+ }
+
+ if( FT_IS_SFNT( face->face ) ) {
++#if 1
++ FT_F26Dot6 tt_char_width, tt_char_height, tt_dim_x, tt_dim_y;
++ FT_UInt nn;
++
++ instance->strike_index=0xFFFFU;
++
++ tt_char_width = (int)(trans->scale*(1<<6) + 0.5);
++ tt_char_height = (int)(trans->scale*(1<<6) + 0.5);
++
++ tt_dim_x = ( ( tt_char_width * trans->xres + (36+32*72) ) / 72 ) & -64;
++ tt_dim_y = ( ( tt_char_height * trans->yres + (36+32*72) ) / 72 ) & -64;
++
++ for ( nn = 0; nn < face->face->num_fixed_sizes; nn++ )
++ {
++ FT_Bitmap_Size* sz = &face->face->available_sizes[nn];
++
++ if ( tt_dim_x == sz->x_ppem && tt_dim_y == sz->y_ppem )
++ {
++ instance->strike_index = nn;
++ break;
++ }
++ }
++#else
+ /* See Set_Char_Sizes() in ttdriver.c */
+ FT_Error err;
+ TT_Face tt_face;
+@@ -486,6 +550,7 @@
+ sfnt = (SFNT_Service)tt_face->sfnt;
+ err = sfnt->set_sbit_strike(tt_face,tt_x_ppem,tt_y_ppem,&instance->strike_index);
+ if ( err ) instance->strike_index=0xFFFFU;
++#endif
+ }
+
+ /* maintain a linked list of instances */
+@@ -803,31 +868,36 @@
+ * parse the htmx field in TrueType font.
+ */
+
+-/* from src/truetype/ttgload.c */
+ static void
+-tt_get_metrics( TT_HoriHeader* header,
++tt_get_metrics( FT_Face face,
+ FT_UInt idx,
++ FT_UInt num_hmetrics,
+ FT_Short* bearing,
+ FT_UShort* advance )
+-/* Copyright 1996-2001, 2002 by */
+-/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+ {
+- TT_LongMetrics longs_m;
+- FT_UShort k = header->number_Of_HMetrics;
++ /* read the metrics directly from the horizontal header, we
++ * parse the SFNT table directly through the standard FreeType API.
++ * this works with any version of the library and doesn't need to
++ * peek at its internals. Maybe a bit less
++ */
++ FT_UInt count = num_hmetrics;
+
+- if ( k == 0 ) {
+- *bearing = *advance = 0;
+- return;
++ if ( count == 0 )
++ {
++ *advance = 0;
++ *bearing = 0;
+ }
++ else if ( idx < count )
++ {
++ FT_ULong offset = idx*4;
+
+- if ( idx < (FT_UInt)k ) {
+- longs_m = (TT_LongMetrics )header->long_metrics + idx;
+- *bearing = longs_m->bearing;
+- *advance = longs_m->advance;
++ *advance = sfnt_get_ushort( face, TTAG_hmtx, offset );
++ *bearing = sfnt_get_short ( face, TTAG_hmtx, offset+2 );
+ }
+- else {
+- *bearing = ((TT_ShortMetrics*)header->short_metrics)[idx - k];
+- *advance = ((TT_LongMetrics )header->long_metrics)[k - 1].advance;
++ else
++ {
++ *advance = sfnt_get_ushort( face, TTAG_hmtx, (count-1)*4 );
++ *bearing = sfnt_get_short ( face, TTAG_hmtx, (count+idx)*2 );
+ }
+ }
+
+@@ -835,6 +905,7 @@
+ ft_get_very_lazy_bbox( FT_UInt index,
+ FT_Face face,
+ FT_Size size,
++ FT_UInt num_hmetrics,
+ double slant,
+ FT_Matrix *matrix,
+ FT_BBox *bbox,
+@@ -842,14 +913,13 @@
+ FT_Long *vertAdvance)
+ {
+ if ( FT_IS_SFNT( face ) ) {
+- TT_Face ttface = (TT_Face)face;
+ FT_Size_Metrics *smetrics = &size->metrics;
+ FT_Short leftBearing = 0;
+ FT_UShort advance = 0;
+ FT_Vector p0, p1, p2, p3;
+
+ /* horizontal */
+- tt_get_metrics(&ttface->horizontal, index,
++ tt_get_metrics( face, num_hmetrics, index,
+ &leftBearing, &advance);
+
+ #if 0
+@@ -910,7 +980,27 @@
+ FT_UShort glyph_index, FT_Glyph_Metrics *metrics_return,
+ int *sbitchk_incomplete_but_exist )
+ {
+-#if (FREETYPE_VERSION >= 2001008)
++#if 1
++ if ( strike_index != 0xFFFFU && ft_face->available_sizes != 0)
++ {
++ FT_Error error;
++ FT_Bitmap_Size* sz = &ft_face->available_sizes[strike_index];
++
++ error = FT_Set_Pixel_Sizes( ft_face, sz->x_ppem/64, sz->y_ppem/64 );
++ if ( !error )
++ {
++ error = FT_Load_Glyph( ft_face, glyph_index, FT_LOAD_SBITS_ONLY );
++ if ( !error )
++ {
++ if ( metrics_return != NULL )
++ *metrics_return = ft_face->glyph->metrics;
++
++ return 0;
++ }
++ }
++ }
++ return -1;
++#elif (FREETYPE_VERSION >= 2001008)
+ SFNT_Service sfnt;
+ TT_Face face;
+ FT_Error error;
+@@ -1043,6 +1133,7 @@
+ if( bitmap_metrics == NULL ) {
+ if ( sbitchk_incomplete_but_exist==0 && (instance->ttcap.flags & TTCAP_IS_VERY_LAZY) ) {
+ if( ft_get_very_lazy_bbox( idx, face->face, instance->size,
++ face->num_hmetrics,
+ instance->ttcap.vl_slant,
+ &instance->transformation.matrix,
+ &bbox, &outline_hori_advance,
+@@ -1221,6 +1312,7 @@
+ if( is_outline == 1 ){
+ if( correct ){
+ if( ft_get_very_lazy_bbox( idx, face->face, instance->size,
++ face->num_hmetrics,
+ instance->ttcap.vl_slant,
+ &instance->transformation.matrix,
+ &bbox, &outline_hori_advance,
diff --git a/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.h b/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.h
new file mode 100644
index 000000000..925263c00
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-font-FreeType-ftfuncs.h
@@ -0,0 +1,12 @@
+$NetBSD: patch-bj,v 1.3 2006/06/01 22:44:09 tron Exp $
+
+--- lib/font/FreeType/ftfuncs.h.orig 2005-07-07 15:59:47.000000000 +0100
++++ lib/font/FreeType/ftfuncs.h 2006-06-01 23:21:39.000000000 +0100
+@@ -47,6 +47,7 @@
+ char *filename;
+ FT_Face face;
+ int bitmap;
++ FT_UInt num_hmetrics;
+ struct _FTInstance *instances;
+ struct _FTInstance *active_instance;
+ struct _FTFace *next; /* link to next face in bucket */
diff --git a/x11-servers/xorg-server/files/patch-font-FreeType-ftsystem.c b/x11-servers/xorg-server/files/patch-font-FreeType-ftsystem.c
new file mode 100644
index 000000000..df7c97dce
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-font-FreeType-ftsystem.c
@@ -0,0 +1,12 @@
+$NetBSD: patch-bk,v 1.3 2006/06/01 22:44:09 tron Exp $
+
+--- lib/font/FreeType/ftsystem.c.orig 2005-07-09 07:36:10.000000000 +0100
++++ lib/font/FreeType/ftsystem.c 2006-06-01 23:21:53.000000000 +0100
+@@ -35,7 +35,6 @@
+ #endif
+ #include <ft2build.h>
+ #include FT_CONFIG_CONFIG_H
+-#include FT_INTERNAL_DEBUG_H
+ #include FT_SYSTEM_H
+ #include FT_ERRORS_H
+ #include FT_TYPES_H
diff --git a/x11-servers/xorg-server/files/patch-font-bitmap-pcfread.c b/x11-servers/xorg-server/files/patch-font-bitmap-pcfread.c
new file mode 100644
index 000000000..c676e1934
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-font-bitmap-pcfread.c
@@ -0,0 +1,101 @@
+--- lib/font/bitmap/pcfread.c.orig Sat Jul 9 08:36:12 2005
++++ lib/font/bitmap/pcfread.c Thu Aug 24 21:56:56 2006
+@@ -45,6 +45,7 @@
+ #endif
+
+ #include <stdarg.h>
++#include <stdint.h>
+
+ void
+ pcfError(const char* message, ...)
+@@ -133,6 +134,10 @@
+ return (PCFTablePtr) NULL;
+ count = pcfGetLSB32(file);
+ if (IS_EOF(file)) return (PCFTablePtr) NULL;
++ if (count < 0 || count > INT32_MAX / sizeof(PCFTableRec)) {
++ pcfError("pcfReadTOC(): invalid file format\n");
++ return NULL;
++ }
+ tables = (PCFTablePtr) xalloc(count * sizeof(PCFTableRec));
+ if (!tables) {
+ pcfError("pcfReadTOC(): Couldn't allocate tables (%d*%d)\n", count, sizeof(PCFTableRec));
+@@ -252,6 +257,10 @@
+ if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
+ goto Bail;
+ nprops = pcfGetINT32(file, format);
++ if (nprops <= 0 || nprops > INT32_MAX / sizeof(FontPropRec)) {
++ pcfError("pcfGetProperties(): invalid nprops value (%d)\n", nprops);
++ goto Bail;
++ }
+ if (IS_EOF(file)) goto Bail;
+ props = (FontPropPtr) xalloc(nprops * sizeof(FontPropRec));
+ if (!props) {
+@@ -267,6 +276,13 @@
+ props[i].name = pcfGetINT32(file, format);
+ isStringProp[i] = pcfGetINT8(file, format);
+ props[i].value = pcfGetINT32(file, format);
++ if (props[i].name < 0
++ || (isStringProp[i] != 0 && isStringProp[i] != 1)
++ || (isStringProp[i] && props[i].value < 0)) {
++ pcfError("pcfGetProperties(): invalid file format %d %d %d\n",
++ props[i].name, isStringProp[i], props[i].value);
++ goto Bail;
++ }
+ if (IS_EOF(file)) goto Bail;
+ }
+ /* pad the property array */
+@@ -282,6 +298,7 @@
+ }
+ if (IS_EOF(file)) goto Bail;
+ string_size = pcfGetINT32(file, format);
++ if (string_size < 0) goto Bail;
+ if (IS_EOF(file)) goto Bail;
+ strings = (char *) xalloc(string_size);
+ if (!strings) {
+@@ -422,6 +439,10 @@
+ else
+ nmetrics = pcfGetINT16(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++ pcfError("pcfReadFont(): invalid file format\n");
++ goto Bail;
++ }
+ metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+ if (!metrics) {
+ pcfError("pcfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
+@@ -447,7 +468,7 @@
+ nbitmaps = pcfGetINT32(file, format);
+ if (nbitmaps != nmetrics || IS_EOF(file))
+ goto Bail;
+-
++ /* nmetrics is alreadt ok, so nbitmap also is */
+ offsets = (CARD32 *) xalloc(nbitmaps * sizeof(CARD32));
+ if (!offsets) {
+ pcfError("pcfReadFont(): Couldn't allocate offsets (%d*%d)\n", nbitmaps, sizeof(CARD32));
+@@ -461,6 +482,7 @@
+ for (i = 0; i < GLYPHPADOPTIONS; i++) {
+ bitmapSizes[i] = pcfGetINT32(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (bitmapSizes[i] < 0) goto Bail;
+ }
+
+ sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)];
+@@ -536,6 +558,7 @@
+ if (IS_EOF(file)) goto Bail;
+ if (nink_metrics != nmetrics)
+ goto Bail;
++ /* nmetrics already checked */
+ ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo));
+ if (!ink_metrics) {
+ pcfError("pcfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo));
+@@ -809,6 +832,10 @@
+ else
+ nmetrics = pcfGetINT16(file, format);
+ if (IS_EOF(file)) goto Bail;
++ if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
++ pcfError("pmfReadFont(): invalid file format\n");
++ goto Bail;
++ }
+ metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+ if (!metrics) {
+ pcfError("pmfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
diff --git a/x11-servers/xorg-server/files/patch-mitri.c b/x11-servers/xorg-server/files/patch-mitri.c
new file mode 100644
index 000000000..8c4ef0f57
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-mitri.c
@@ -0,0 +1,25 @@
+Index: render/mitri.c
+===================================================================
+RCS file: /cvs/xorg/xserver/xorg/render/mitri.c,v
+retrieving revision 1.5
+diff -u -r1.5 mitri.c
+--- programs/Xserver/render/mitri.c 3 Jul 2005 07:02:08 -0000 1.5
++++ programs/Xserver/render/mitri.c 18 Apr 2006 22:34:08 -0000
+@@ -145,7 +145,7 @@
+ if (npoint < 3)
+ return;
+ ntri = npoint - 2;
+- tris = ALLOCATE_LOCAL (ntri & sizeof (xTriangle));
++ tris = ALLOCATE_LOCAL (ntri * sizeof (xTriangle));
+ if (!tris)
+ return;
+ for (tri = tris; npoint >= 3; npoint--, points++, tri++)
+@@ -177,7 +177,7 @@
+ if (npoint < 3)
+ return;
+ ntri = npoint - 2;
+- tris = ALLOCATE_LOCAL (ntri & sizeof (xTriangle));
++ tris = ALLOCATE_LOCAL (ntri * sizeof (xTriangle));
+ if (!tris)
+ return;
+ first = points++;
diff --git a/x11-servers/xorg-server/files/patch-render.c b/x11-servers/xorg-server/files/patch-render.c
new file mode 100644
index 000000000..2bcd61775
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-render.c
@@ -0,0 +1,11 @@
+--- programs/Xserver/render/render.c.orig Mon May 29 09:43:15 2006
++++ programs/Xserver/render/render.c Mon May 29 09:45:02 2006
+@@ -1340,7 +1340,7 @@
+ {
+ if (buffer + sizeof (GlyphSet) < end)
+ {
+- memcpy(&gs, buffer, sizeof(GlyphSet));
++ gs = *(CARD32 *) buffer;
+ glyphSet = (GlyphSetPtr) SecurityLookupIDByType (client,
+ gs,
+ GlyphSetType,
diff --git a/x11-servers/xorg-server/files/patch-servermd.h b/x11-servers/xorg-server/files/patch-servermd.h
new file mode 100644
index 000000000..4315d78de
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-servermd.h
@@ -0,0 +1,11 @@
+--- programs/Xserver/include/servermd.h.orig Sun Jan 8 14:05:55 2006
++++ programs/Xserver/include/servermd.h Sun Jan 8 14:06:22 2006
+@@ -216,7 +216,7 @@
+ defined(__sparc__) || defined(__mc68000__)
+
+ #if defined(__sparc) || defined(__sparc__)
+-# if !defined(sparc)
++# if !defined(sparc) && !defined(__FreeBSD__)
+ # define sparc 1
+ # endif
+ #endif
diff --git a/x11-servers/xorg-server/files/patch-sunffb-nocfb b/x11-servers/xorg-server/files/patch-sunffb-nocfb
new file mode 100644
index 000000000..934268ca4
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-sunffb-nocfb
@@ -0,0 +1,101 @@
+--- programs/Xserver/hw/xfree86/drivers/sunffb/ffb_accel.c.orig Fri Mar 31 00:22:07 2006
++++ programs/Xserver/hw/xfree86/drivers/sunffb/ffb_accel.c Fri Mar 31 00:35:35 2006
+@@ -43,8 +43,6 @@
+ #include "ffb_rcache.h"
+ #include "ffb_loops.h"
+ #include "ffb_regs.h"
+-#include "ffb_stip.h"
+-#include "ffb_gc.h"
+
+ int CreatorScreenPrivateIndex;
+ int CreatorGCPrivateIndex;
+--- programs/Xserver/hw/xfree86/drivers/sunffb/ffb_dga.c.orig Fri Mar 31 00:22:07 2006
++++ programs/Xserver/hw/xfree86/drivers/sunffb/ffb_dga.c Fri Mar 31 00:36:08 2006
+@@ -36,7 +36,6 @@
+ #include "ffb_regs.h"
+ #include "ffb_rcache.h"
+ #include "ffb_fifo.h"
+-#include "ffb_stip.h"
+ #include "ffb_loops.h"
+
+ static Bool FFB_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
+--- programs/Xserver/hw/xfree86/drivers/sunffb/ffb_dri.c.orig Fri Mar 31 00:22:07 2006
++++ programs/Xserver/hw/xfree86/drivers/sunffb/ffb_dri.c Fri Mar 31 00:37:04 2006
+@@ -33,11 +33,6 @@
+
+ #include "xf86PciInfo.h"
+ #include "xf86Pci.h"
+-#define PSZ 8
+-#include "cfb.h"
+-#undef PSZ
+-#include "cfb16.h"
+-#include "cfb32.h"
+
+ #include "miline.h"
+
+--- programs/Xserver/hw/xfree86/drivers/sunffb/Imakefile.orig Fri Mar 31 00:22:07 2006
++++ programs/Xserver/hw/xfree86/drivers/sunffb/Imakefile Fri Mar 31 00:34:27 2006
+@@ -60,16 +60,10 @@
+ #define FFBsObjectRule(name)
+ #endif
+
+-SRCS = ffb_driver.c ffb_accel.c ffb_attr.c ffb_stip.c ffb_bcopy.c \
+- ffb_cplane.c ffb_fspans.c ffb_point.c ffb_seg.c ffb_plygon.c \
+- ffb_line.c ffb_glyph.c ffb_frect.c ffb_circle.c ffb_checks.c \
+- ffb_stubs.c ffb_gc.c ffb_gspans.c ffb_sspans.c ffb_zeroarc.c \
+- ffb_cursor.c ffb_dga.c ffb_dac.c ffb_wid.c ffb_dbe.c $(DRISRCS)
+-OBJS = ffb_driver.o ffb_accel.o ffb_attr.o ffb_stip.o ffb_bcopy.o \
+- ffb_cplane.o ffb_fspans.o ffb_point.o ffb_seg.o ffb_plygon.o \
+- ffb_line.o ffb_glyph.o ffb_frect.o ffb_circle.o ffb_checks.o \
+- ffb_stubs.o ffb_gc.o ffb_gspans.o ffb_sspans.o ffb_zeroarc.o \
+- ffb_cursor.o ffb_dga.o ffb_dac.o ffb_wid.o ffb_dbe.o $(VISOBJS) \
++SRCS = ffb_driver.c ffb_accel.c ffb_attr.c \
++ ffb_cursor.c ffb_dga.c ffb_dac.c ffb_wid.c $(DRISRCS)
++OBJS = ffb_driver.o ffb_accel.o ffb_attr.o \
++ ffb_cursor.o ffb_dga.o ffb_dac.o ffb_wid.o $(VISOBJS) \
+ $(DRIOBJS)
+
+ #if defined(XF86DriverSDK)
+@@ -107,28 +101,10 @@
+ FFBCObjectRule(ffb_accel)
+ FFBCObjectRule(ffb_driver)
+ FFBCObjectRule(ffb_attr)
+-FFBCObjectRule(ffb_stip)
+-FFBCObjectRule(ffb_bcopy)
+-FFBCObjectRule(ffb_cplane)
+-FFBCObjectRule(ffb_fspans)
+-FFBCObjectRule(ffb_point)
+-FFBCObjectRule(ffb_seg)
+-FFBCObjectRule(ffb_plygon)
+-FFBCObjectRule(ffb_line)
+-FFBCObjectRule(ffb_glyph)
+-FFBCObjectRule(ffb_frect)
+-FFBCObjectRule(ffb_circle)
+-FFBCObjectRule(ffb_checks)
+-FFBCObjectRule(ffb_stubs)
+-FFBCObjectRule(ffb_gc)
+-FFBCObjectRule(ffb_gspans)
+-FFBCObjectRule(ffb_sspans)
+-FFBCObjectRule(ffb_zeroarc)
+ FFBCObjectRule(ffb_cursor)
+ FFBCObjectRule(ffb_dga)
+ FFBCObjectRule(ffb_dac)
+ FFBCObjectRule(ffb_wid)
+-FFBCObjectRule(ffb_dbe)
+ FFBsObjectRule(VISmoveImage)
+ FFBsObjectRule(ffb_asm)
+ #if BuildXF86DRI
+--- programs/Xserver/hw/xfree86/drivers/sunffb/ffb_driver.c.orig Wed Apr 19 13:13:47 2006
++++ programs/Xserver/hw/xfree86/drivers/sunffb/ffb_driver.c Wed Apr 19 13:14:25 2006
+@@ -411,11 +411,6 @@
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Acceleration disabled\n");
+ }
+
+- if (xf86LoadSubModule(pScrn, "xf8_32wid") == NULL) {
+- FFBFreeRec(pScrn);
+- return FALSE;
+- }
+-
+ if (xf86LoadSubModule(pScrn, "fb") == NULL) {
+ FFBFreeRec(pScrn);
+ return FALSE;
diff --git a/x11-servers/xorg-server/files/patch-xf86.tmpl b/x11-servers/xorg-server/files/patch-xf86.tmpl
new file mode 100644
index 000000000..3bf0b443d
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xf86.tmpl
@@ -0,0 +1,12 @@
+--- config/cf/xf86.tmpl.orig Tue Dec 17 04:21:38 2002
++++ config/cf/xf86.tmpl Thu Jan 2 14:10:44 2003
+@@ -19,6 +19,9 @@
+ #ifdef UseInstalled
+ IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(TOP) -I$(IRULESRC) \
+ $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
++#elif UseInstalledPrograms
++ IMAKE_CMD = $(IMAKE) -I$(TOP) -I$(IRULESRC) \
++ $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
+ #else
+ IMAKE_CMD = $(IMAKE) -I$(TOP) -I$(IRULESRC) \
+ $(IMAKE_DEFINES) $(IMAKE_WARNINGS)
diff --git a/x11-servers/xorg-server/files/patch-xf86Events.c b/x11-servers/xorg-server/files/patch-xf86Events.c
new file mode 100644
index 000000000..bdd5bc51c
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xf86Events.c
@@ -0,0 +1,76 @@
+--- programs/Xserver/hw/xfree86/common/xf86Events.c.orig Sun Sep 26 04:17:42 2004
++++ programs/Xserver/hw/xfree86/common/xf86Events.c Sun Sep 26 04:17:25 2004
+@@ -448,7 +448,7 @@
+ #if defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT) || defined(WSCONS_SUPPORT)
+ static Bool first_time = TRUE;
+ #endif
+-#if defined(__sparc__) && defined(__linux__)
++#if defined(__sparc__) && (defined(__linux__) || defined(__FreeBSD__))
+ static int kbdSun = -1;
+ #endif
+ /* Disable any keyboard processing while in suspend */
+@@ -464,7 +464,7 @@
+ }
+ #endif
+
+-#if defined (__sparc__) && defined(__linux__)
++#if defined(__sparc__) && (defined(__linux__) || defined(__FreeBSD__))
+ if (kbdSun == -1) {
+ if ((xf86Info.xkbmodel && !strcmp(xf86Info.xkbmodel, "sun"))
+ || (xf86Info.xkbrules && !strcmp(xf86Info.xkbrules, "sun")))
+@@ -474,7 +474,7 @@
+ }
+ if (kbdSun)
+ goto special;
+-#endif /* __sparc__ && __linux__ */
++#endif /* __sparc__ && (__linux__ || __FreeBSD__) */
+
+ #ifdef __linux__
+ if (xf86Info.kbdCustomKeycodes) {
+@@ -525,6 +525,7 @@
+ } else
+ #endif /* i386 && SVR4 */
+ {
++ if (!xf86IsPc98()) {
+ switch (scanCode) {
+ case 0x59: scanCode = KEY_0x59; break;
+ case 0x5a: scanCode = KEY_0x5A; break;
+@@ -555,6 +556,7 @@
+ case 0x75: scanCode = KEY_0x75; break;
+ case 0x76: scanCode = KEY_0x76; break;
+ }
++ } /* end if (!xf86IsPc98()) */
+ }
+ }
+
+@@ -636,10 +638,12 @@
+ * they need to get the same key code as the base key on the same
+ * physical keyboard key.
+ */
++ if (!xf86IsPc98()) {
+ if (scanCode == KEY_SysReqest)
+ scanCode = KEY_Print;
+ else if (scanCode == KEY_Break)
+ scanCode = KEY_Pause;
++ }
+ #endif
+
+ /*
+@@ -676,7 +680,7 @@
+ }
+ }
+ #endif
+-#if defined (__sparc__) && defined(__linux__)
++#if defined(__sparc__) && (defined(__linux__) || defined(__FreeBSD__))
+ special:
+ if (kbdSun) {
+ switch (scanCode) {
+@@ -710,7 +714,7 @@
+ */
+ scanCode--;
+ }
+-#endif /* defined (__sparc__) && defined(__linux__) */
++#endif /* __sparc__ && (__linux__ || __FreeBSD__) */
+
+ #ifdef XKB
+ if ((xf86Info.ddxSpecialKeys == SKWhenNeeded &&
diff --git a/x11-servers/xorg-server/files/patch-xf86cfg-Imakefile b/x11-servers/xorg-server/files/patch-xf86cfg-Imakefile
new file mode 100644
index 000000000..5728d915f
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xf86cfg-Imakefile
@@ -0,0 +1,11 @@
+--- programs/Xserver/hw/xfree86/xf86cfg/Imakefile.orig Sat Sep 11 15:11:04 2004
++++ programs/Xserver/hw/xfree86/xf86cfg/Imakefile Sat Sep 11 15:11:07 2004
+@@ -25,6 +25,8 @@
+ SNPRINTFOBJS = snprintf.o
+ #endif
+
++XAWLIB = -lXaw
++
+ SRCS =\
+ accessx.c\
+ card-cfg.c\
diff --git a/x11-servers/xorg-server/files/patch-xf86sym.c b/x11-servers/xorg-server/files/patch-xf86sym.c
new file mode 100644
index 000000000..1372be144
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xf86sym.c
@@ -0,0 +1,10 @@
+--- programs/Xserver/hw/xfree86/loader/xf86sym.c.orig Fri May 7 18:51:51 2004
++++ programs/Xserver/hw/xfree86/loader/xf86sym.c Fri May 7 18:52:02 2004
+@@ -63,7 +63,6 @@
+ #include "xf86.h"
+ #include "xf86Resources.h"
+ #include "xf86_OSproc.h"
+-#include "xf86Parser.h"
+ #include "xf86Config.h"
+ #ifdef XINPUT
+ # include "xf86Xinput.h"
diff --git a/x11-servers/xorg-server/files/patch-xorgconf.cpp b/x11-servers/xorg-server/files/patch-xorgconf.cpp
new file mode 100644
index 000000000..e21fac8d8
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xorgconf.cpp
@@ -0,0 +1,14 @@
+--- programs/Xserver/hw/xfree86/xorgconf.cpp.orig Fri Dec 31 14:40:27 2004
++++ programs/Xserver/hw/xfree86/xorgconf.cpp Fri Dec 31 14:40:28 2004
+@@ -624,3 +624,11 @@
+ InputDevice "Keyboard1" "CoreKeyboard"
+ EndSection
+
++
++XCOMM Two experimental extensions are available -- Composite and XEVIE. Uncomment
++XCOMM the section below to enable Composite. Many extensions can also be disabled
++XCOMM in this manner.
++
++XCOMM Section "Extensions"
++XCOMM Option "Composite" "Enable"
++XCOMM EndSection