Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver
Conflicts: hw/xfree86/loader/Makefile.am hw/xfree86/loader/xf86sym.c
This commit is contained in:
commit
75398cff82
|
@ -2,10 +2,12 @@ Makefile
|
|||
Makefile.in
|
||||
.deps
|
||||
.libs
|
||||
.msg
|
||||
*.lo
|
||||
*.la
|
||||
*.a
|
||||
*.o
|
||||
*~
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
|
@ -23,12 +25,6 @@ xorg-server.pc
|
|||
stamp-h?
|
||||
do-not-use-config.h
|
||||
do-not-use-config.h.in
|
||||
XpConfig/C/print/Xprinters.ghostscript
|
||||
Xprint/Xprt
|
||||
Xprint/doc/Xprt.1x
|
||||
Xprint/doc/Xprt.man
|
||||
Xprint/dpmsstubs-wrapper.c
|
||||
Xprint/miinitext-wrapper.c
|
||||
afb/afbbltC.c
|
||||
afb/afbbltCI.c
|
||||
afb/afbbltG.c
|
||||
|
@ -216,6 +212,12 @@ hw/xfree86/xorg.c
|
|||
hw/xnest/Xnest
|
||||
hw/xnest/Xnest.1x
|
||||
hw/xnest/Xnest.man
|
||||
hw/xprint/Xprt
|
||||
hw/xprint/config/C/print/Xprinters.ghostscript
|
||||
hw/xprint/doc/Xprt.1x
|
||||
hw/xprint/doc/Xprt.man
|
||||
hw/xprint/dpmsstubs-wrapper.c
|
||||
hw/xprint/miinitext-wrapper.c
|
||||
include/dix-config.h
|
||||
include/kdrive-config.h
|
||||
include/xgl-config.h
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
indirect_size.h
|
||||
glcontextmodes.c
|
||||
glcontextmodes.h
|
||||
glapi.c
|
||||
glthread.c
|
|
@ -0,0 +1,32 @@
|
|||
X/drivers
|
||||
X/glxheader.h
|
||||
X/xmesaP.h
|
||||
X/xm*.c
|
||||
array_cache/*.c
|
||||
array_cache/*.h
|
||||
mesa/drivers
|
||||
mesa/glxheader.h
|
||||
mesa/xm*.c
|
||||
glapi/*.c
|
||||
glapi/*.h
|
||||
main/*.c
|
||||
main/*.h
|
||||
math/*.c
|
||||
math/*.h
|
||||
ppc
|
||||
shader/*.c
|
||||
shader/*.h
|
||||
shader/slang/*.c
|
||||
shader/slang/*.h
|
||||
shader/slang/library
|
||||
shader/grammar/*.c
|
||||
shader/grammar/*.h
|
||||
sparc
|
||||
swrast/*.c
|
||||
swrast/*.h
|
||||
swrast_setup/*.c
|
||||
swrast_setup/*.h
|
||||
tnl/*.c
|
||||
tnl/*.h
|
||||
x86
|
||||
x86-64
|
13
Makefile.am
13
Makefile.am
|
@ -26,11 +26,6 @@ if GLX
|
|||
GLX_DIR=GL
|
||||
endif
|
||||
|
||||
if XPRINT
|
||||
XPDDX_DIR=Xprint
|
||||
XPCONFIG_DIR=XpConfig
|
||||
endif
|
||||
|
||||
if XINPUT
|
||||
XINPUT_DIR=Xi
|
||||
endif
|
||||
|
@ -64,9 +59,7 @@ SUBDIRS = \
|
|||
$(COMPOSITE_DIR) \
|
||||
$(GLX_DIR) \
|
||||
exa \
|
||||
hw \
|
||||
$(XPDDX_DIR) \
|
||||
$(XPCONFIG_DIR)
|
||||
hw
|
||||
|
||||
aclocaldir = $(datadir)/aclocal
|
||||
aclocal_DATA = xorg-server.m4
|
||||
|
@ -101,9 +94,7 @@ DIST_SUBDIRS = \
|
|||
composite \
|
||||
GL \
|
||||
exa \
|
||||
hw \
|
||||
Xprint \
|
||||
XpConfig
|
||||
hw
|
||||
|
||||
# gross hack
|
||||
relink: all
|
||||
|
|
|
@ -170,7 +170,7 @@ static ClientList cmd_clients; /* Linked-list of clients using command key */
|
|||
/*----------------------------*
|
||||
* Forward Declarations
|
||||
*----------------------------*/
|
||||
static void _SwapProc (int (**f1 )(), int (**f2 )());
|
||||
static void _SwapProc (int (**f1 )(void), int (**f2 )(void));
|
||||
static void sXETrapEvent (xETrapDataEvent *from , xETrapDataEvent *to );
|
||||
static int add_accelerator_node (ClientPtr client , ClientList *accel );
|
||||
static void remove_accelerator_node (ClientPtr client , ClientList *accel );
|
||||
|
@ -886,14 +886,14 @@ int XETrapConfig(xXTrapConfigReq *request, ClientPtr client)
|
|||
{ /* Client wants the XTrap rtn */
|
||||
if (++(vectored_requests[i]) <= 1L)
|
||||
{ /* first client, so do it */
|
||||
_SwapProc(&(XETrapProcVector[i]), &(ProcVector[i]));
|
||||
_SwapProc(&(XETrapProcVector[i]), (int_function *)&(ProcVector[i]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ /* Client wants the *real* rtn */
|
||||
if (--(vectored_requests[i]) <= 0L)
|
||||
{ /* No more clients using, so do it */
|
||||
_SwapProc(&(XETrapProcVector[i]), &(ProcVector[i]));
|
||||
_SwapProc(&(XETrapProcVector[i]), (int_function *)&(ProcVector[i]));
|
||||
}
|
||||
}
|
||||
if (status == Success)
|
||||
|
@ -1787,9 +1787,9 @@ static void update_protocol(xXTrapGetReq *reqptr, ClientPtr client)
|
|||
* lint from complaining about mixed types. It seems to work, but I would
|
||||
* probably classify this as a hack.
|
||||
*/
|
||||
static void _SwapProc( register int (**f1)(), register int (**f2)())
|
||||
static void _SwapProc( register int (**f1)(void), register int (**f2)(void))
|
||||
{
|
||||
register int (*t1)() = *f1;
|
||||
register int (*t1)(void) = *f1;
|
||||
*f1 = *f2;
|
||||
*f2 = t1;
|
||||
|
||||
|
|
|
@ -374,13 +374,13 @@ void XETSwSendEvent(register xSendEventReq *data)
|
|||
{
|
||||
register char n;
|
||||
xEvent eventT;
|
||||
void (*proc)();
|
||||
EventSwapPtr proc;
|
||||
swapl(&(data->destination), n);
|
||||
swapl(&(data->eventMask), n);
|
||||
|
||||
/* Swap event */
|
||||
proc = EventSwapVector[data->event.u.u.type & 0177];
|
||||
if (!proc || (int (*)()) proc == (int (*)()) NotImplemented)
|
||||
if (!proc || proc == NotImplemented)
|
||||
(*proc)(&(data->event), &eventT);
|
||||
data->event = eventT;
|
||||
swaps(&(data->length), n);
|
||||
|
|
|
@ -85,8 +85,8 @@ copyright holders.
|
|||
#include <X11/Xatom.h>
|
||||
#include <X11/extensions/Print.h>
|
||||
#include <X11/extensions/Printstr.h>
|
||||
#include "../Xprint/DiPrint.h"
|
||||
#include "../Xprint/attributes.h"
|
||||
#include "../hw/xprint/DiPrint.h"
|
||||
#include "../hw/xprint/attributes.h"
|
||||
#include "modinit.h"
|
||||
|
||||
static void XpResetProc(ExtensionEntry *);
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
/* $Xorg: PclPixmap.c,v 1.3 2000/08/17 19:48:08 cpqbld Exp $ */
|
||||
/*******************************************************************
|
||||
**
|
||||
** *********************************************************
|
||||
** *
|
||||
** * File: PclPixmap.c
|
||||
** *
|
||||
** * Contents:
|
||||
** * Pixmap handling code for the PCL DDX driver
|
||||
** *
|
||||
** * Created: 2/19/96
|
||||
** *
|
||||
** *********************************************************
|
||||
**
|
||||
********************************************************************/
|
||||
/*
|
||||
(c) Copyright 1996 Hewlett-Packard Company
|
||||
(c) Copyright 1996 International Business Machines Corp.
|
||||
(c) Copyright 1996 Sun Microsystems, Inc.
|
||||
(c) Copyright 1996 Novell, Inc.
|
||||
(c) Copyright 1996 Digital Equipment Corp.
|
||||
(c) Copyright 1996 Fujitsu Limited
|
||||
(c) Copyright 1996 Hitachi, Ltd.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of the copyright holders shall
|
||||
not be used in advertising or otherwise to promote the sale, use or other
|
||||
dealings in this Software without prior written authorization from said
|
||||
copyright holders.
|
||||
*/
|
||||
/* $XFree86: xc/programs/Xserver/Xprint/pcl/PclPixmap.c,v 1.3 1999/12/16 02:26:27 robin Exp $ */
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
#endif
|
||||
|
||||
#include "Pcl.h"
|
||||
#include "cfb.h"
|
||||
#include "cfb32.h"
|
||||
#include "mfb.h"
|
||||
#include "pixmapstr.h"
|
||||
|
||||
PixmapPtr
|
||||
PclCreatePixmap(ScreenPtr pScreen,
|
||||
int width,
|
||||
int height,
|
||||
int depth)
|
||||
{
|
||||
if( depth == 1 )
|
||||
return mfbCreatePixmap( pScreen, width, height, depth );
|
||||
else if( depth <= 8 )
|
||||
return cfbCreatePixmap( pScreen, width, height, depth );
|
||||
else if( depth <= 32 )
|
||||
return cfb32CreatePixmap( pScreen, width, height, depth );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
PclDestroyPixmap(PixmapPtr pPixmap)
|
||||
{
|
||||
if( pPixmap->drawable.depth == 1 )
|
||||
return mfbDestroyPixmap( pPixmap );
|
||||
else if( pPixmap->drawable.depth <= 8 )
|
||||
return cfbDestroyPixmap( pPixmap );
|
||||
else if( pPixmap->drawable.depth <= 32 )
|
||||
return cfb32DestroyPixmap( pPixmap );
|
||||
return 0;
|
||||
}
|
74
configure.ac
74
configure.ac
|
@ -1028,7 +1028,7 @@ if test "x$XORG" = xyes -o "x$XGL" = xyes; then
|
|||
XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
|
||||
XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
|
||||
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
|
||||
XORG_LIBS="$MI_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB"
|
||||
XORG_LIBS="$COMPOSITE_LIB $MI_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XPSTUBS_LIB $OS_LIB"
|
||||
|
||||
AC_CHECK_LIB([dl], [dlopen], XORG_LIBS="$XORG_LIBS -ldl")
|
||||
|
||||
|
@ -1727,41 +1727,41 @@ hw/kdrive/smi/Makefile
|
|||
hw/kdrive/src/Makefile
|
||||
hw/kdrive/vesa/Makefile
|
||||
hw/kdrive/via/Makefile
|
||||
Xprint/Makefile
|
||||
Xprint/doc/Makefile
|
||||
Xprint/pcl/Makefile
|
||||
Xprint/pcl-mono/Makefile
|
||||
Xprint/raster/Makefile
|
||||
Xprint/ps/Makefile
|
||||
Xprint/etc/Makefile
|
||||
Xprint/etc/Xsession.d/Makefile
|
||||
Xprint/etc/init.d/Makefile
|
||||
Xprint/etc/profile.d/Makefile
|
||||
XpConfig/Makefile
|
||||
XpConfig/C/print/attributes/Makefile
|
||||
XpConfig/C/print/ddx-config/Makefile
|
||||
XpConfig/C/print/ddx-config/raster/Makefile
|
||||
XpConfig/C/print/models/CANONBJ10E-GS/Makefile
|
||||
XpConfig/C/print/models/PSdefault/fonts/Makefile
|
||||
XpConfig/C/print/models/PSdefault/Makefile
|
||||
XpConfig/C/print/models/PSspooldir/Makefile
|
||||
XpConfig/C/print/models/SPSPARC2/Makefile
|
||||
XpConfig/C/print/models/SPSPARC2/fonts/Makefile
|
||||
XpConfig/C/print/models/GSdefault/Makefile
|
||||
XpConfig/C/print/models/HPLJ4050-PS/Makefile
|
||||
XpConfig/C/print/models/HPLJ4050-PS/fonts/Makefile
|
||||
XpConfig/C/print/models/Makefile
|
||||
XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile
|
||||
XpConfig/C/print/models/CANONC3200-PS/Makefile
|
||||
XpConfig/C/print/models/CANONC3200-PS/fonts/Makefile
|
||||
XpConfig/C/print/models/HPLJ4family/fonts/Makefile
|
||||
XpConfig/C/print/models/HPLJ4family/Makefile
|
||||
XpConfig/C/print/models/HPDJ1600C/Makefile
|
||||
XpConfig/C/print/models/HPDJ1600C/fonts/Makefile
|
||||
XpConfig/C/print/Makefile
|
||||
XpConfig/C/Makefile
|
||||
XpConfig/en_US/print/attributes/Makefile
|
||||
XpConfig/en_US/print/Makefile
|
||||
XpConfig/en_US/Makefile
|
||||
hw/xprint/Makefile
|
||||
hw/xprint/doc/Makefile
|
||||
hw/xprint/pcl/Makefile
|
||||
hw/xprint/pcl-mono/Makefile
|
||||
hw/xprint/raster/Makefile
|
||||
hw/xprint/ps/Makefile
|
||||
hw/xprint/etc/Makefile
|
||||
hw/xprint/etc/Xsession.d/Makefile
|
||||
hw/xprint/etc/init.d/Makefile
|
||||
hw/xprint/etc/profile.d/Makefile
|
||||
hw/xprint/config/Makefile
|
||||
hw/xprint/config/C/print/attributes/Makefile
|
||||
hw/xprint/config/C/print/ddx-config/Makefile
|
||||
hw/xprint/config/C/print/ddx-config/raster/Makefile
|
||||
hw/xprint/config/C/print/models/CANONBJ10E-GS/Makefile
|
||||
hw/xprint/config/C/print/models/PSdefault/fonts/Makefile
|
||||
hw/xprint/config/C/print/models/PSdefault/Makefile
|
||||
hw/xprint/config/C/print/models/PSspooldir/Makefile
|
||||
hw/xprint/config/C/print/models/SPSPARC2/Makefile
|
||||
hw/xprint/config/C/print/models/SPSPARC2/fonts/Makefile
|
||||
hw/xprint/config/C/print/models/GSdefault/Makefile
|
||||
hw/xprint/config/C/print/models/HPLJ4050-PS/Makefile
|
||||
hw/xprint/config/C/print/models/HPLJ4050-PS/fonts/Makefile
|
||||
hw/xprint/config/C/print/models/Makefile
|
||||
hw/xprint/config/C/print/models/PS2PDFspooldir-GS/Makefile
|
||||
hw/xprint/config/C/print/models/CANONC3200-PS/Makefile
|
||||
hw/xprint/config/C/print/models/CANONC3200-PS/fonts/Makefile
|
||||
hw/xprint/config/C/print/models/HPLJ4family/fonts/Makefile
|
||||
hw/xprint/config/C/print/models/HPLJ4family/Makefile
|
||||
hw/xprint/config/C/print/models/HPDJ1600C/Makefile
|
||||
hw/xprint/config/C/print/models/HPDJ1600C/fonts/Makefile
|
||||
hw/xprint/config/C/print/Makefile
|
||||
hw/xprint/config/C/Makefile
|
||||
hw/xprint/config/en_US/print/attributes/Makefile
|
||||
hw/xprint/config/en_US/print/Makefile
|
||||
hw/xprint/config/en_US/Makefile
|
||||
xorg-server.pc
|
||||
])
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Xserver.1
|
||||
Xserver.1x
|
20
exa/exa.c
20
exa/exa.c
|
@ -623,6 +623,10 @@ exaDriverInit (ScreenPtr pScreen,
|
|||
|
||||
pExaScr->SavedDestroyPixmap = pScreen->DestroyPixmap;
|
||||
pScreen->DestroyPixmap = exaDestroyPixmap;
|
||||
|
||||
LogMessage(X_INFO, "EXA(%d): Offscreen pixmap area of %d bytes\n",
|
||||
pScreen->myNum,
|
||||
pExaScr->info->memorySize - pExaScr->info->offScreenBase);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -641,6 +645,22 @@ exaDriverInit (ScreenPtr pScreen,
|
|||
}
|
||||
}
|
||||
|
||||
LogMessage(X_INFO, "EXA(%d): Driver registered support for the following"
|
||||
" operations:\n", pScreen->myNum);
|
||||
assert(pScreenInfo->PrepareSolid != NULL);
|
||||
LogMessage(X_INFO, " Solid\n");
|
||||
assert(pScreenInfo->PrepareCopy != NULL);
|
||||
LogMessage(X_INFO, " Copy\n");
|
||||
if (pScreenInfo->PrepareComposite != NULL) {
|
||||
LogMessage(X_INFO, " Composite (RENDER acceleration)\n");
|
||||
}
|
||||
if (pScreenInfo->UploadToScreen != NULL) {
|
||||
LogMessage(X_INFO, " UploadToScreen\n");
|
||||
}
|
||||
if (pScreenInfo->DownloadFromScreen != NULL) {
|
||||
LogMessage(X_INFO, " DownloadFromScreen\n");
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -435,6 +435,8 @@ exaAssertNotDirty (PixmapPtr pPixmap)
|
|||
if (memcmp(dst, src, data_row_bytes) != 0) {
|
||||
abort();
|
||||
}
|
||||
dst += dst_pitch;
|
||||
src += src_pitch;
|
||||
}
|
||||
exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_SRC);
|
||||
}
|
||||
|
|
|
@ -413,7 +413,6 @@ exaOffscreenInit (ScreenPtr pScreen)
|
|||
if (!area)
|
||||
return FALSE;
|
||||
|
||||
|
||||
area->state = ExaOffscreenAvail;
|
||||
area->base_offset = pExaScr->info->offScreenBase;
|
||||
area->offset = area->base_offset;
|
||||
|
@ -422,10 +421,6 @@ exaOffscreenInit (ScreenPtr pScreen)
|
|||
area->next = NULL;
|
||||
area->score = 0;
|
||||
|
||||
#if DEBUG_OFFSCREEN
|
||||
ErrorF("============ initial memory block of %d\n", area->size);
|
||||
#endif
|
||||
|
||||
/* Add it to the free areas */
|
||||
pExaScr->info->offScreenAreas = area;
|
||||
|
||||
|
|
|
@ -267,11 +267,11 @@ fbFetch_a4b4g4r4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
|
|||
CARD32 r,g,b, a;
|
||||
|
||||
a = ((p & 0xf000) | ((p & 0xf000) >> 4)) << 16;
|
||||
b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
|
||||
b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4;
|
||||
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
|
||||
r = ((p & 0x000f) | ((p & 0x000f) << 4));
|
||||
r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16;
|
||||
*buffer++ = (a | r | g | b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static FASTCALL void
|
||||
|
@ -283,11 +283,11 @@ fbFetch_x4b4g4r4 (const FbBits *bits, int x, int width, CARD32 *buffer, miIndexe
|
|||
CARD32 p = *pixel++;
|
||||
CARD32 r,g,b;
|
||||
|
||||
b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) << 12;
|
||||
b = ((p & 0x0f00) | ((p & 0x0f00) >> 4)) >> 4;
|
||||
g = ((p & 0x00f0) | ((p & 0x00f0) >> 4)) << 8;
|
||||
r = ((p & 0x000f) | ((p & 0x000f) << 4));
|
||||
r = ((p & 0x000f) | ((p & 0x000f) << 4)) << 16;
|
||||
*buffer++ = (0xff000000 | r | g | b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static FASTCALL void
|
||||
|
@ -758,9 +758,9 @@ fbFetchPixel_a4b4g4r4 (const FbBits *bits, int offset, miIndexedPtr indexed)
|
|||
CARD32 a,r,g,b;
|
||||
|
||||
a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16;
|
||||
b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
|
||||
b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4;
|
||||
g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8;
|
||||
r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4));
|
||||
r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16;
|
||||
return (a | r | g | b);
|
||||
}
|
||||
|
||||
|
@ -770,9 +770,9 @@ fbFetchPixel_x4b4g4r4 (const FbBits *bits, int offset, miIndexedPtr indexed)
|
|||
CARD32 pixel = ((CARD16 *) bits)[offset];
|
||||
CARD32 r,g,b;
|
||||
|
||||
b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
|
||||
b = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) >> 4;
|
||||
g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8;
|
||||
r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4));
|
||||
r = ((pixel & 0x000f) | ((pixel & 0x000f) << 4)) << 16;
|
||||
return (0xff000000 | r | g | b);
|
||||
}
|
||||
|
||||
|
@ -849,6 +849,14 @@ fbFetchPixel_c8 (const FbBits *bits, int offset, miIndexedPtr indexed)
|
|||
return indexed->rgba[pixel];
|
||||
}
|
||||
|
||||
static FASTCALL CARD32
|
||||
fbFetchPixel_x4a4 (const FbBits *bits, int offset, miIndexedPtr indexed)
|
||||
{
|
||||
CARD32 pixel = ((CARD8 *) bits)[offset];
|
||||
|
||||
return ((pixel & 0xf) | ((pixel & 0xf) << 4)) << 24;
|
||||
}
|
||||
|
||||
#define Fetch8(l,o) (((CARD8 *) (l))[(o) >> 2])
|
||||
#if IMAGE_BYTE_ORDER == MSBFirst
|
||||
#define Fetch4(l,o) ((o) & 2 ? Fetch8(l,o) & 0xf : Fetch8(l,o) >> 4)
|
||||
|
@ -988,6 +996,7 @@ static fetchPixelProc fetchPixelProcForPicture (PicturePtr pict)
|
|||
case PICT_a2b2g2r2: return fbFetchPixel_a2b2g2r2;
|
||||
case PICT_c8: return fbFetchPixel_c8;
|
||||
case PICT_g8: return fbFetchPixel_c8;
|
||||
case PICT_x4a4: return fbFetchPixel_x4a4;
|
||||
|
||||
/* 4bpp formats */
|
||||
case PICT_a4: return fbFetchPixel_a4;
|
||||
|
@ -3271,8 +3280,8 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
|||
xFixed *params = pict->filter_params;
|
||||
INT32 cwidth = xFixedToInt(params[0]);
|
||||
INT32 cheight = xFixedToInt(params[1]);
|
||||
int xoff = params[0] >> 1;
|
||||
int yoff = params[1] >> 1;
|
||||
int xoff = (params[0] - xFixed1) >> 1;
|
||||
int yoff = (params[1] - xFixed1) >> 1;
|
||||
params += 2;
|
||||
for (i = 0; i < width; ++i) {
|
||||
if (!v.vector[2]) {
|
||||
|
@ -3316,6 +3325,11 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
|||
}
|
||||
}
|
||||
|
||||
satot >>= 16;
|
||||
srtot >>= 16;
|
||||
sgtot >>= 16;
|
||||
sbtot >>= 16;
|
||||
|
||||
if (satot < 0) satot = 0; else if (satot > 0xff) satot = 0xff;
|
||||
if (srtot < 0) srtot = 0; else if (srtot > 0xff) srtot = 0xff;
|
||||
if (sgtot < 0) sgtot = 0; else if (sgtot > 0xff) sgtot = 0xff;
|
||||
|
|
50
fb/fbpict.c
50
fb/fbpict.c
|
@ -925,6 +925,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSolidMask_nx8x8888;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_a8r8g8b8:
|
||||
|
@ -947,6 +949,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSolidMask_nx8888x0565C;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -970,6 +974,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSolidMask_nx8888x0565C;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -985,9 +991,15 @@ fbComposite (CARD8 op,
|
|||
case PICT_x8b8g8r8:
|
||||
func = fbCompositeSolidMask_nx1xn;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (! srcRepeat) /* has mask and non-repeating source */
|
||||
|
@ -1016,8 +1028,12 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeSrc_8888RevNPx0565mmx;
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_x8r8g8b8:
|
||||
|
@ -1038,10 +1054,16 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeSrc_8888RevNPx0565mmx;
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1094,8 +1116,12 @@ fbComposite (CARD8 op,
|
|||
}
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (! srcRepeat)
|
||||
|
@ -1118,6 +1144,8 @@ fbComposite (CARD8 op,
|
|||
case PICT_r5g6b5:
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_x8r8g8b8:
|
||||
|
@ -1129,6 +1157,8 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeCopyAreammx;
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
case PICT_x8b8g8r8:
|
||||
switch (pDst->format) {
|
||||
|
@ -1139,6 +1169,8 @@ fbComposite (CARD8 op,
|
|||
func = fbCompositeCopyAreammx;
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_a8b8g8r8:
|
||||
|
@ -1158,6 +1190,8 @@ fbComposite (CARD8 op,
|
|||
case PICT_b5g6r5:
|
||||
func = fbCompositeSrc_8888x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_r5g6b5:
|
||||
|
@ -1165,6 +1199,8 @@ fbComposite (CARD8 op,
|
|||
case PICT_r5g6b5:
|
||||
func = fbCompositeSrc_0565x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_b5g6r5:
|
||||
|
@ -1172,8 +1208,12 @@ fbComposite (CARD8 op,
|
|||
case PICT_b5g6r5:
|
||||
func = fbCompositeSrc_0565x0565;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1192,6 +1232,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSrcAdd_8888x8888;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_a8b8g8r8:
|
||||
|
@ -1204,6 +1246,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSrcAdd_8888x8888;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_a8:
|
||||
|
@ -1216,6 +1260,8 @@ fbComposite (CARD8 op,
|
|||
#endif
|
||||
func = fbCompositeSrcAdd_8000x8000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PICT_a1:
|
||||
|
@ -1223,8 +1269,12 @@ fbComposite (CARD8 op,
|
|||
case PICT_a1:
|
||||
func = fbCompositeSrcAdd_1000x1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -26,6 +26,10 @@ if KDRIVE
|
|||
KDRIVE_SUBDIRS = kdrive
|
||||
endif
|
||||
|
||||
if XPRINT
|
||||
XPRINT_SUBDIRS = xprint
|
||||
endif
|
||||
|
||||
# need to add darwin support here
|
||||
|
||||
SUBDIRS = \
|
||||
|
@ -35,9 +39,10 @@ SUBDIRS = \
|
|||
$(XVFB_SUBDIRS) \
|
||||
$(XNEST_SUBDIRS) \
|
||||
$(DMX_SUBDIRS) \
|
||||
$(KDRIVE_SUBDIRS)
|
||||
$(KDRIVE_SUBDIRS) \
|
||||
$(XPRINT_SUBDIRS)
|
||||
|
||||
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl
|
||||
DIST_SUBDIRS = dmx xfree86 vfb xnest xwin darwin kdrive xgl xprint
|
||||
|
||||
relink:
|
||||
for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink ; done
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Xvfb.1
|
||||
Xvfb.1x
|
|
@ -255,10 +255,12 @@ OsVendorFatalError()
|
|||
{
|
||||
}
|
||||
|
||||
#if defined(DDXBEFORERESET)
|
||||
void ddxBeforeReset(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
ddxUseMsg()
|
||||
|
|
|
@ -36,13 +36,17 @@ DISTCLEANFILES = osandcommon.c xorg.c
|
|||
XORG_LIBS = \
|
||||
@XORG_CORE_LIBS@ \
|
||||
common/libinit.a \
|
||||
loader/libloader.a \
|
||||
libosandcommon.la \
|
||||
rac/librac.a \
|
||||
parser/libxf86config.a \
|
||||
dummylib/libdummy.a \
|
||||
dixmods/libdixmods.la \
|
||||
loader/libloader.a \
|
||||
@XORG_LIBS@
|
||||
|
||||
Xorg_DEPENDENCIES = \
|
||||
$(XORG_LIBS)
|
||||
|
||||
Xorg_LDADD = $(XORG_LIBS) \
|
||||
@XSERVER_LIBS@ \
|
||||
dixmods/libxorgxkb.la
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86Bus.c,v 1.80 2004/02/05 18:24:59 eich Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
|
||||
*
|
||||
|
@ -2576,17 +2575,13 @@ xf86PostPreInit()
|
|||
if (xf86NumScreens > 1)
|
||||
needRAC = TRUE;
|
||||
|
||||
#ifdef XFree86LOADER
|
||||
xf86MsgVerb(X_INFO, 3, "do I need RAC?");
|
||||
|
||||
if (needRAC) {
|
||||
xf86ErrorFVerb(3, " Yes, I do.\n");
|
||||
|
||||
if (!xf86LoadOneModule("rac",NULL))
|
||||
FatalError("Cannot load RAC module\n");
|
||||
} else
|
||||
} else {
|
||||
xf86ErrorFVerb(3, " No, I don't.\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
|
||||
xf86PrintResList(3, Acc);
|
||||
|
@ -2599,22 +2594,12 @@ xf86PostScreenInit(void)
|
|||
ScreenPtr pScreen;
|
||||
unsigned int flags;
|
||||
int nummem = 0, numio = 0;
|
||||
#ifdef XFree86LOADER
|
||||
pointer xf86RACInit = NULL;
|
||||
#endif
|
||||
|
||||
if (doFramebufferMode) {
|
||||
SetSIGIOForState(OPERATING);
|
||||
return;
|
||||
}
|
||||
if (doFramebufferMode) {
|
||||
SetSIGIOForState(OPERATING);
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef XFree86LOADER
|
||||
if (needRAC) {
|
||||
xf86RACInit = LoaderSymbol("xf86RACInit");
|
||||
if (!xf86RACInit)
|
||||
FatalError("Cannot resolve symbol \"xf86RACInit\"\n");
|
||||
}
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
ErrorF("PostScreenInit generation: %i\n",serverGeneration);
|
||||
#endif
|
||||
|
@ -2693,12 +2678,7 @@ xf86PostScreenInit(void)
|
|||
xf86ErrorFVerb(3, "Screen %d is using RAC for io\n", i);
|
||||
}
|
||||
|
||||
#ifdef XFree86LOADER
|
||||
((Bool(*)(ScreenPtr,unsigned int))xf86RACInit)
|
||||
(pScreen,flags);
|
||||
#else
|
||||
xf86RACInit(pScreen,flags);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2116,7 +2116,11 @@ xf86RunVtInit(void)
|
|||
FatalError("xf86RunVtInit: fork failed (%s)\n", strerror(errno));
|
||||
break;
|
||||
case 0: /* child */
|
||||
setuid(getuid());
|
||||
if (setuid(getuid()) == -1) {
|
||||
xf86Msg(X_ERROR, "xf86RunVtInit: setuid failed (%s)\n",
|
||||
strerror(errno));
|
||||
exit(255);
|
||||
}
|
||||
/* set stdin, stdout to the consoleFd */
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (xf86Info.consoleFd != i) {
|
||||
|
|
|
@ -130,6 +130,17 @@ DDCAvailableOptions(void *unused)
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Attempts to probe the monitor for EDID information, if NoDDC and NoDDC1 are
|
||||
* unset. EDID information blocks are interpreted and the results returned in
|
||||
* an xf86MonPtr.
|
||||
*
|
||||
* This function does not affect the list of modes used by drivers -- it is up
|
||||
* to the driver to decide policy on what to do with EDID information.
|
||||
*
|
||||
* @return pointer to a new xf86MonPtr containing the EDID information.
|
||||
* @return NULL if no monitor attached or failure to interpret the EDID.
|
||||
*/
|
||||
xf86MonPtr
|
||||
xf86DoEDID_DDC1(
|
||||
int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed,
|
||||
|
@ -170,6 +181,17 @@ xf86DoEDID_DDC1(
|
|||
return tmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to probe the monitor for EDID information, if NoDDC and NoDDC2 are
|
||||
* unset. EDID information blocks are interpreted and the results returned in
|
||||
* an xf86MonPtr.
|
||||
*
|
||||
* This function does not affect the list of modes used by drivers -- it is up
|
||||
* to the driver to decide policy on what to do with EDID information.
|
||||
*
|
||||
* @return pointer to a new xf86MonPtr containing the EDID information.
|
||||
* @return NULL if no monitor attached or failure to interpret the EDID.
|
||||
*/
|
||||
xf86MonPtr
|
||||
xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Xorg.1
|
||||
Xorg.1x
|
||||
xorg.conf.5
|
||||
xorg.conf.5x
|
|
@ -47,11 +47,22 @@ static int exaXorgScreenPrivateIndex;
|
|||
|
||||
typedef enum {
|
||||
EXAOPT_MIGRATION_HEURISTIC,
|
||||
EXAOPT_NO_COMPOSITE,
|
||||
EXAOPT_NO_UTS,
|
||||
EXAOPT_NO_DFS,
|
||||
} EXAOpts;
|
||||
|
||||
static const OptionInfoRec EXAOptions[] = {
|
||||
{ EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic", OPTV_ANYSTR, {0}, FALSE },
|
||||
{ -1, NULL, OPTV_NONE, {0}, FALSE }
|
||||
{ EXAOPT_MIGRATION_HEURISTIC, "MigrationHeuristic",
|
||||
OPTV_ANYSTR, {0}, FALSE },
|
||||
{ EXAOPT_NO_COMPOSITE, "EXANoComposite",
|
||||
OPTV_BOOLEAN, {0}, FALSE },
|
||||
{ EXAOPT_NO_UTS, "EXANoUploadToScreen",
|
||||
OPTV_BOOLEAN, {0}, FALSE },
|
||||
{ EXAOPT_NO_DFS, "EXANoDownloadFromScreen",
|
||||
OPTV_BOOLEAN, {0}, FALSE },
|
||||
{ -1, NULL,
|
||||
OPTV_NONE, {0}, FALSE }
|
||||
};
|
||||
|
||||
static Bool
|
||||
|
@ -135,6 +146,26 @@ exaDDXDriverInit(ScreenPtr pScreen)
|
|||
}
|
||||
}
|
||||
|
||||
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_COMPOSITE)) {
|
||||
xf86DrvMsg(pScreen->myNum, X_INFO,
|
||||
"EXA: Disabling Composite operation "
|
||||
"(RENDER acceleration)\n");
|
||||
pExaScr->info->CheckComposite = NULL;
|
||||
pExaScr->info->PrepareComposite = NULL;
|
||||
}
|
||||
|
||||
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_UTS)) {
|
||||
xf86DrvMsg(pScreen->myNum, X_INFO,
|
||||
"EXA: Disabling UploadToScreen\n");
|
||||
pExaScr->info->UploadToScreen = NULL;
|
||||
}
|
||||
|
||||
if (xf86IsOptionSet(pScreenPriv->options, EXAOPT_NO_DFS)) {
|
||||
xf86DrvMsg(pScreen->myNum, X_INFO,
|
||||
"EXA: Disabling DownloadFromScreen\n");
|
||||
pExaScr->info->DownloadFromScreen = NULL;
|
||||
}
|
||||
|
||||
pScreen->devPrivates[exaXorgScreenPrivateIndex].ptr = pScreenPriv;
|
||||
|
||||
pScreenPriv->SavedEnableDisableFBAccess = pScrn->EnableDisableFBAccess;
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
fbdevhw.4
|
||||
fbdevhw.4x
|
|
@ -0,0 +1,4 @@
|
|||
getconfig.1
|
||||
getconfig.1x
|
||||
getconfig.5
|
||||
getconfig.5x
|
|
@ -99,6 +99,7 @@ xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "MT2032: Company code 0x%02x%02x, pa
|
|||
}
|
||||
|
||||
/* might be buggy */
|
||||
#if 0
|
||||
static void MT2032_shutdown(FI1236Ptr f)
|
||||
{
|
||||
CARD8 data[10];
|
||||
|
@ -124,6 +125,7 @@ I2C_WriteRead(&(f->d), (I2CByte *)data, 4, NULL, 0);
|
|||
|
||||
usleep(15000);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void MT2032_dump_status(FI1236Ptr f);
|
||||
|
||||
|
@ -131,7 +133,7 @@ static void MT2032_init(FI1236Ptr f)
|
|||
{
|
||||
CARD8 data[10];
|
||||
CARD8 value;
|
||||
CARD8 xogc;
|
||||
CARD8 xogc = 0x00;
|
||||
|
||||
MT2032_getid(f);
|
||||
|
||||
|
@ -479,7 +481,7 @@ if(type==TUNER_TYPE_MT2032){
|
|||
}
|
||||
|
||||
|
||||
CARD32 AFC_TimerCallback(OsTimerPtr timer, CARD32 time, pointer data){
|
||||
static CARD32 AFC_TimerCallback(OsTimerPtr timer, CARD32 time, pointer data){
|
||||
FI1236Ptr f=(FI1236Ptr)data;
|
||||
if(FI1236_AFC(f))return 150;
|
||||
else {
|
||||
|
@ -517,7 +519,7 @@ void FI1236_tune(FI1236Ptr f, CARD32 frequency)
|
|||
|
||||
xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner band to %d\n", f->tuner_data.band);
|
||||
|
||||
xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner frequency to %d\n", frequency);
|
||||
xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "Setting tuner frequency to %d\n", (int)frequency);
|
||||
|
||||
if ((f->type == TUNER_TYPE_FM1216ME) || (f->type == TUNER_TYPE_FI1236W))
|
||||
{
|
||||
|
|
|
@ -90,6 +90,7 @@ typedef struct {
|
|||
FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr);
|
||||
void FI1236_set_tuner_type(FI1236Ptr f, int type);
|
||||
void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency);
|
||||
void FI1236_tune(FI1236Ptr f, CARD32 frequency);
|
||||
int FI1236_AFC(FI1236Ptr f);
|
||||
int TUNER_get_afc_hint(FI1236Ptr f);
|
||||
void fi1236_dump_status(FI1236Ptr f);
|
||||
|
|
|
@ -107,6 +107,6 @@ CARD16 tda9850_getstatus(TDA9850Ptr t)
|
|||
{
|
||||
CARD16 status;
|
||||
|
||||
I2C_WriteRead(&(t->d), NULL, 0, &status, 2);
|
||||
I2C_WriteRead(&(t->d), NULL, 0, (I2CByte *)&status, 2);
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
noinst_LIBRARIES = libloader.a
|
||||
INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser -I$(srcdir)/../vbe \
|
||||
-I$(srcdir)/../ddc -I$(srcdir)/../int10 -I$(srcdir)/../i2c \
|
||||
-I$(srcdir)/../fbdevhw -I$(srcdir)/../xaa \
|
||||
-I$(srcdir)/../vgahw -I$(srcdir)/../ramdac -I$(srcdir)/../shadowfb \
|
||||
-I$(srcdir)/../dixmods/extmod -I$(srcdir)/../../../miext/cw \
|
||||
-I$(srcdir)/../../../miext/damage
|
||||
|
||||
INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser
|
||||
|
||||
#AM_LDFLAGS = -r
|
||||
AM_CFLAGS = -DIN_LOADER $(XORG_CFLAGS) @SERVER_DEFINES@ @LOADER_DEFINES@
|
||||
|
@ -15,10 +11,8 @@ endif
|
|||
|
||||
EXTRA_DIST = \
|
||||
dlloader.h \
|
||||
hash.h \
|
||||
loader.h \
|
||||
loaderProcs.h \
|
||||
sym.h \
|
||||
SparcMulDiv.S
|
||||
|
||||
libloader_a_SOURCES = \
|
||||
|
@ -29,10 +23,4 @@ libloader_a_SOURCES = \
|
|||
loadfont.c \
|
||||
dlloader.c \
|
||||
os.c \
|
||||
dixsym.c \
|
||||
extsym.c \
|
||||
fontsym.c \
|
||||
misym.c \
|
||||
xf86sym.c \
|
||||
hash.c \
|
||||
$(SPARC_SOURCES)
|
||||
|
|
|
@ -1,538 +0,0 @@
|
|||
/* $XdotOrg: xserver/xorg/hw/xfree86/loader/dixsym.c,v 1.21 2006/03/24 20:50:13 fredrik Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dixsym.c,v 1.63 2003/12/03
|
||||
* 17:11:29 tsi Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Metro Link, Inc. not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Metro Link, Inc. makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name of the copyright holder(s)
|
||||
* and author(s) shall not be used in advertising or otherwise to promote
|
||||
* the sale, use or other dealings in this Software without prior written
|
||||
* authorization from the copyright holder(s) and author(s).
|
||||
*/
|
||||
|
||||
#undef DBMALLOC
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include "sym.h"
|
||||
#include "colormap.h"
|
||||
#include "cursor.h"
|
||||
#include "cursorstr.h"
|
||||
#include "dix.h"
|
||||
#include "dixevents.h"
|
||||
#include "dixfont.h"
|
||||
#include "dixstruct.h"
|
||||
#include "misc.h"
|
||||
#include "globals.h"
|
||||
#include "os.h"
|
||||
#include "osdep.h"
|
||||
#include "resource.h"
|
||||
#include "servermd.h"
|
||||
#include "scrnintstr.h"
|
||||
#include "windowstr.h"
|
||||
#include "extension.h"
|
||||
#define EXTENSION_PROC_ARGS void *
|
||||
#include "extnsionst.h"
|
||||
#include "swaprep.h"
|
||||
#include "swapreq.h"
|
||||
#include "inputstr.h"
|
||||
#include <X11/extensions/XIproto.h>
|
||||
#include "exevents.h"
|
||||
#include "extinit.h"
|
||||
#ifdef XV
|
||||
#include "xvmodproc.h"
|
||||
#endif
|
||||
#include "dgaproc.h"
|
||||
#ifdef RENDER
|
||||
#include "mipict.h"
|
||||
#include "renderedge.h"
|
||||
#endif
|
||||
#include "selection.h"
|
||||
#ifdef XKB
|
||||
#include <X11/extensions/XKBsrv.h>
|
||||
extern int XkbDfltRepeatDelay, XkbDfltRepeatInterval;
|
||||
#endif
|
||||
|
||||
extern Selection *CurrentSelections;
|
||||
extern int NumCurrentSelections;
|
||||
|
||||
/* DIX things */
|
||||
|
||||
LOOKUP dixLookupTab[] = {
|
||||
|
||||
/* dix */
|
||||
/* atom.c */
|
||||
SYMFUNC(MakeAtom)
|
||||
SYMFUNC(ValidAtom)
|
||||
/* colormap.c */
|
||||
SYMFUNC(AllocColor)
|
||||
SYMFUNC(CreateColormap)
|
||||
SYMFUNC(FakeAllocColor)
|
||||
SYMFUNC(FakeFreeColor)
|
||||
SYMFUNC(FreeColors)
|
||||
SYMFUNC(StoreColors)
|
||||
SYMFUNC(TellLostMap)
|
||||
SYMFUNC(TellGainedMap)
|
||||
SYMFUNC(QueryColors)
|
||||
/* cursor.c */
|
||||
SYMFUNC(FreeCursor)
|
||||
/* devices.c */
|
||||
SYMFUNC(Ones)
|
||||
SYMFUNC(InitButtonClassDeviceStruct)
|
||||
SYMFUNC(InitFocusClassDeviceStruct)
|
||||
SYMFUNC(InitLedFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitPtrFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitKbdFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitIntegerFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitStringFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitBellFeedbackClassDeviceStruct)
|
||||
SYMFUNC(InitValuatorClassDeviceStruct)
|
||||
SYMFUNC(InitKeyClassDeviceStruct)
|
||||
SYMFUNC(InitKeyboardDeviceStruct)
|
||||
SYMFUNC(SendMappingNotify)
|
||||
SYMFUNC(InitPointerDeviceStruct)
|
||||
SYMFUNC(LookupKeyboardDevice)
|
||||
SYMFUNC(LookupPointerDevice)
|
||||
/* dispatch.c */
|
||||
SYMFUNC(SetInputCheck)
|
||||
SYMFUNC(SendErrorToClient)
|
||||
SYMFUNC(UpdateCurrentTime)
|
||||
SYMFUNC(UpdateCurrentTimeIf)
|
||||
SYMFUNC(ProcBadRequest)
|
||||
SYMVAR(dispatchException)
|
||||
SYMVAR(isItTimeToYield)
|
||||
SYMVAR(ClientStateCallback)
|
||||
SYMVAR(ServerGrabCallback)
|
||||
SYMVAR(CurrentSelections)
|
||||
SYMVAR(NumCurrentSelections)
|
||||
/* dixfonts.c */
|
||||
SYMFUNC(CloseFont)
|
||||
SYMFUNC(FontToXError)
|
||||
SYMFUNC(LoadGlyphs)
|
||||
SYMVAR(fpe_functions)
|
||||
/* dixutils.c */
|
||||
SYMFUNC(AddCallback)
|
||||
SYMFUNC(ClientSleep)
|
||||
SYMFUNC(ClientTimeToServerTime)
|
||||
SYMFUNC(ClientWakeup)
|
||||
SYMFUNC(CompareTimeStamps)
|
||||
SYMFUNC(CopyISOLatin1Lowered)
|
||||
SYMFUNC(DeleteCallback)
|
||||
SYMFUNC(LookupClient)
|
||||
SYMFUNC(LookupDrawable)
|
||||
SYMFUNC(LookupWindow)
|
||||
SYMFUNC(NoopDDA)
|
||||
SYMFUNC(QueueWorkProc)
|
||||
SYMFUNC(RegisterBlockAndWakeupHandlers)
|
||||
SYMFUNC(RemoveBlockAndWakeupHandlers)
|
||||
#ifdef XCSECURITY
|
||||
SYMFUNC(SecurityLookupDrawable)
|
||||
SYMFUNC(SecurityLookupWindow)
|
||||
#endif
|
||||
/* events.c */
|
||||
SYMFUNC(CheckCursorConfinement)
|
||||
SYMFUNC(DeliverEvents)
|
||||
SYMFUNC(NewCurrentScreen)
|
||||
SYMFUNC(PointerConfinedToScreen)
|
||||
SYMFUNC(TryClientEvents)
|
||||
SYMFUNC(WriteEventsToClient)
|
||||
SYMFUNC(GetCurrentRootWindow)
|
||||
SYMFUNC(GetSpritePosition)
|
||||
SYMFUNC(GetSpriteWindow)
|
||||
SYMFUNC(GetSpriteCursor)
|
||||
SYMFUNC(WindowsRestructured)
|
||||
SYMVAR(DeviceEventCallback)
|
||||
SYMVAR(EventCallback)
|
||||
SYMVAR(inputInfo)
|
||||
SYMFUNC(SetCriticalEvent)
|
||||
#ifdef PANORAMIX
|
||||
SYMFUNC(XineramaGetCursorScreen)
|
||||
#endif
|
||||
/* property.c */
|
||||
SYMFUNC(ChangeWindowProperty)
|
||||
/* extension.c */
|
||||
SYMFUNC(AddExtension)
|
||||
SYMFUNC(AddExtensionAlias)
|
||||
SYMFUNC(CheckExtension)
|
||||
SYMFUNC(DeclareExtensionSecurity)
|
||||
SYMFUNC(MinorOpcodeOfRequest)
|
||||
SYMFUNC(StandardMinorOpcode)
|
||||
#ifdef XEVIE
|
||||
SYMVAR(xeviehot)
|
||||
SYMVAR(xeviewin)
|
||||
#endif
|
||||
/* gc.c */
|
||||
SYMFUNC(CopyGC)
|
||||
SYMFUNC(CreateGC)
|
||||
SYMFUNC(CreateScratchGC)
|
||||
SYMFUNC(ChangeGC)
|
||||
SYMFUNC(dixChangeGC)
|
||||
SYMFUNC(DoChangeGC)
|
||||
SYMFUNC(FreeGC)
|
||||
SYMFUNC(FreeScratchGC)
|
||||
SYMFUNC(GetScratchGC)
|
||||
SYMFUNC(SetClipRects)
|
||||
SYMFUNC(ValidateGC)
|
||||
SYMFUNC(VerifyRectOrder)
|
||||
SYMFUNC(SetDashes)
|
||||
/* globals.c */
|
||||
SYMVAR(ScreenSaverTime)
|
||||
#ifdef DPMSExtension
|
||||
SYMVAR(DPMSEnabled)
|
||||
SYMVAR(DPMSCapableFlag)
|
||||
SYMVAR(DPMSOffTime)
|
||||
SYMVAR(DPMSPowerLevel)
|
||||
SYMVAR(DPMSStandbyTime)
|
||||
SYMVAR(DPMSSuspendTime)
|
||||
SYMVAR(DPMSEnabledSwitch)
|
||||
SYMVAR(DPMSDisabledSwitch)
|
||||
SYMVAR(defaultDPMSEnabled)
|
||||
#endif
|
||||
/* bigreq */
|
||||
SYMVAR(maxBigRequestSize)
|
||||
#ifdef XV
|
||||
/* XXX These are exported from the DDX, not DIX. */
|
||||
SYMVAR(XvScreenInitProc)
|
||||
SYMVAR(XvGetScreenIndexProc)
|
||||
SYMVAR(XvGetRTPortProc)
|
||||
SYMVAR(XvMCScreenInitProc)
|
||||
#endif
|
||||
SYMVAR(ScreenSaverBlanking)
|
||||
SYMVAR(WindowTable)
|
||||
SYMVAR(clients)
|
||||
SYMVAR(currentMaxClients)
|
||||
SYMVAR(currentTime)
|
||||
SYMVAR(defaultColorVisualClass)
|
||||
SYMVAR(display)
|
||||
SYMVAR(globalSerialNumber)
|
||||
SYMVAR(lastDeviceEventTime)
|
||||
SYMVAR(monitorResolution)
|
||||
SYMVAR(permitOldBugs)
|
||||
SYMVAR(screenInfo)
|
||||
SYMVAR(serverClient)
|
||||
SYMVAR(serverGeneration)
|
||||
/* main.c */
|
||||
SYMFUNC(NotImplemented)
|
||||
SYMVAR(PixmapWidthPaddingInfo)
|
||||
/* pixmap.c */
|
||||
SYMFUNC(AllocatePixmap)
|
||||
SYMFUNC(GetScratchPixmapHeader)
|
||||
SYMFUNC(FreeScratchPixmapHeader)
|
||||
/* privates.c */
|
||||
SYMFUNC(AllocateClientPrivate)
|
||||
SYMFUNC(AllocateClientPrivateIndex)
|
||||
SYMFUNC(AllocateGCPrivate)
|
||||
SYMFUNC(AllocateGCPrivateIndex)
|
||||
SYMFUNC(AllocateWindowPrivate)
|
||||
SYMFUNC(AllocateWindowPrivateIndex)
|
||||
SYMFUNC(AllocateScreenPrivateIndex)
|
||||
SYMFUNC(AllocateColormapPrivateIndex)
|
||||
SYMFUNC(AllocateDevicePrivateIndex)
|
||||
SYMFUNC(AllocateDevicePrivate)
|
||||
#ifdef PIXPRIV
|
||||
SYMFUNC(AllocatePixmapPrivateIndex)
|
||||
SYMFUNC(AllocatePixmapPrivate)
|
||||
#endif
|
||||
/* resource.c */
|
||||
SYMFUNC(AddResource)
|
||||
SYMFUNC(ChangeResourceValue)
|
||||
SYMFUNC(CreateNewResourceClass)
|
||||
SYMFUNC(CreateNewResourceType)
|
||||
SYMFUNC(FakeClientID)
|
||||
SYMFUNC(FreeResource)
|
||||
SYMFUNC(FreeResourceByType)
|
||||
SYMFUNC(GetXIDList)
|
||||
SYMFUNC(GetXIDRange)
|
||||
SYMFUNC(LookupIDByType)
|
||||
SYMFUNC(LookupIDByClass)
|
||||
SYMFUNC(LegalNewID)
|
||||
#ifdef XCSECURITY
|
||||
SYMFUNC(SecurityLookupIDByClass)
|
||||
SYMFUNC(SecurityLookupIDByType)
|
||||
#endif
|
||||
SYMFUNC(FindClientResourcesByType)
|
||||
SYMFUNC(FindAllClientResources)
|
||||
SYMVAR(lastResourceType)
|
||||
SYMVAR(TypeMask)
|
||||
#ifdef RES
|
||||
SYMFUNC(RegisterResourceName)
|
||||
SYMVAR(ResourceNames)
|
||||
#endif
|
||||
/* swaprep.c */
|
||||
SYMFUNC(CopySwap32Write)
|
||||
SYMFUNC(Swap32Write)
|
||||
SYMFUNC(SwapConnSetupInfo)
|
||||
SYMFUNC(SwapConnSetupPrefix)
|
||||
/* swapreq.c */
|
||||
SYMFUNC(SwapShorts)
|
||||
SYMFUNC(SwapLongs)
|
||||
SYMFUNC(SwapColorItem)
|
||||
/* tables.c */
|
||||
SYMVAR(EventSwapVector)
|
||||
SYMVAR(ReplySwapVector)
|
||||
SYMVAR(ProcVector)
|
||||
/* window.c */
|
||||
SYMFUNC(ChangeWindowAttributes)
|
||||
SYMFUNC(CheckWindowOptionalNeed)
|
||||
SYMFUNC(CreateUnclippedWinSize)
|
||||
SYMFUNC(CreateWindow)
|
||||
SYMFUNC(FindWindowWithOptional)
|
||||
SYMFUNC(GravityTranslate)
|
||||
SYMFUNC(MakeWindowOptional)
|
||||
SYMFUNC(MapWindow)
|
||||
SYMFUNC(MoveWindowInStack)
|
||||
SYMFUNC(NotClippedByChildren)
|
||||
SYMFUNC(ResizeChildrenWinSize)
|
||||
SYMFUNC(SaveScreens)
|
||||
SYMFUNC(SendVisibilityNotify)
|
||||
SYMFUNC(SetWinSize)
|
||||
SYMFUNC(SetBorderSize)
|
||||
SYMFUNC(TraverseTree)
|
||||
SYMFUNC(UnmapWindow)
|
||||
SYMFUNC(WalkTree)
|
||||
SYMVAR(deltaSaveUndersViewable)
|
||||
SYMVAR(numSaveUndersViewable)
|
||||
SYMVAR(savedScreenInfo)
|
||||
SYMVAR(screenIsSaved)
|
||||
|
||||
/*os/ */
|
||||
/* access.c */
|
||||
SYMFUNC(LocalClient)
|
||||
/* utils.c */
|
||||
SYMFUNC(Xstrdup)
|
||||
SYMFUNC(XNFstrdup)
|
||||
SYMVAR(Must_have_memory)
|
||||
SYMFUNC(AdjustWaitForDelay)
|
||||
SYMVAR(noTestExtensions)
|
||||
SYMFUNC(GiveUp)
|
||||
|
||||
#ifdef BIGREQS
|
||||
SYMVAR(noBigReqExtension)
|
||||
#endif
|
||||
#ifdef COMPOSITE
|
||||
SYMVAR(noCompositeExtension)
|
||||
#endif
|
||||
#ifdef DAMAGE
|
||||
SYMVAR(noDamageExtension)
|
||||
#endif
|
||||
#ifdef DBE
|
||||
SYMVAR(noDbeExtension)
|
||||
#endif
|
||||
#ifdef DPMSExtension
|
||||
SYMVAR(noDPMSExtension)
|
||||
#endif
|
||||
#ifdef EVI
|
||||
SYMVAR(noEVIExtension)
|
||||
#endif
|
||||
#ifdef FONTCACHE
|
||||
SYMVAR(noFontCacheExtension)
|
||||
#endif
|
||||
#ifdef GLXEXT
|
||||
SYMVAR(noGlxExtension)
|
||||
#endif
|
||||
#ifdef SCREENSAVER
|
||||
SYMVAR(noScreenSaverExtension)
|
||||
#endif
|
||||
#ifdef MITSHM
|
||||
SYMVAR(noMITShmExtension)
|
||||
#endif
|
||||
#ifdef MITMISC
|
||||
SYMVAR(noMITMiscExtension)
|
||||
#endif
|
||||
#ifdef MULTIBUFFER
|
||||
SYMVAR(noMultibufferExtension)
|
||||
#endif
|
||||
#ifdef RANDR
|
||||
SYMVAR(noRRExtension)
|
||||
#endif
|
||||
#ifdef RENDER
|
||||
SYMVAR(noRenderExtension)
|
||||
#endif
|
||||
#ifdef SHAPE
|
||||
SYMVAR(noShapeExtension)
|
||||
#endif
|
||||
#ifdef XCSECURITY
|
||||
SYMVAR(noSecurityExtension)
|
||||
#endif
|
||||
#ifdef XSYNC
|
||||
SYMVAR(noSyncExtension)
|
||||
#endif
|
||||
#ifdef TOGCUP
|
||||
SYMVAR(noXcupExtension)
|
||||
#endif
|
||||
#ifdef RES
|
||||
SYMVAR(noResExtension)
|
||||
#endif
|
||||
#ifdef XAPPGROUP
|
||||
SYMVAR(noXagExtension)
|
||||
#endif
|
||||
#ifdef XCMISC
|
||||
SYMVAR(noXCMiscExtension)
|
||||
#endif
|
||||
#ifdef XEVIE
|
||||
SYMVAR(noXevieExtension)
|
||||
#endif
|
||||
#ifdef XF86BIGFONT
|
||||
SYMVAR(noXFree86BigfontExtension)
|
||||
#endif
|
||||
#ifdef XFreeXDGA
|
||||
SYMVAR(noXFree86DGAExtension)
|
||||
#endif
|
||||
#ifdef XF86DRI
|
||||
SYMVAR(noXFree86DRIExtension)
|
||||
#endif
|
||||
#ifdef XF86MISC
|
||||
SYMVAR(noXFree86MiscExtension)
|
||||
#endif
|
||||
#ifdef XF86VIDMODE
|
||||
SYMVAR(noXFree86VidModeExtension)
|
||||
#endif
|
||||
#ifdef XFIXES
|
||||
SYMVAR(noXFixesExtension)
|
||||
#endif
|
||||
#ifdef XKB
|
||||
/* |noXkbExtension| is defined in xc/programs/Xserver/xkb/xkbInit.c */
|
||||
SYMVAR(noXkbExtension)
|
||||
#endif
|
||||
#ifdef PANORAMIX
|
||||
SYMVAR(noPanoramiXExtension)
|
||||
#endif
|
||||
#ifdef XINPUT
|
||||
SYMVAR(noXInputExtension)
|
||||
#endif
|
||||
#ifdef XIDLE
|
||||
SYMVAR(noXIdleExtension)
|
||||
#endif
|
||||
#ifdef XV
|
||||
SYMVAR(noXvExtension)
|
||||
#endif
|
||||
|
||||
/* log.c */
|
||||
SYMFUNC(LogVWrite)
|
||||
SYMFUNC(LogWrite)
|
||||
SYMFUNC(LogVMessageVerb)
|
||||
SYMFUNC(LogMessageVerb)
|
||||
SYMFUNC(LogMessage)
|
||||
SYMFUNC(FatalError)
|
||||
SYMFUNC(VErrorF)
|
||||
SYMFUNC(ErrorF)
|
||||
SYMFUNC(Error)
|
||||
/* xalloc.c */
|
||||
SYMFUNC(XNFalloc)
|
||||
SYMFUNC(XNFcalloc)
|
||||
SYMFUNC(XNFrealloc)
|
||||
SYMFUNC(Xalloc)
|
||||
SYMFUNC(Xcalloc)
|
||||
SYMFUNC(Xfree)
|
||||
SYMFUNC(Xrealloc)
|
||||
/* WaitFor.c */
|
||||
SYMFUNC(TimerFree)
|
||||
SYMFUNC(TimerSet)
|
||||
SYMFUNC(TimerCancel)
|
||||
/* io.c */
|
||||
SYMFUNC(WriteToClient)
|
||||
SYMFUNC(SetCriticalOutputPending)
|
||||
SYMVAR(FlushCallback)
|
||||
SYMVAR(ReplyCallback)
|
||||
SYMVAR(SkippedRequestsCallback)
|
||||
SYMFUNC(ResetCurrentRequest)
|
||||
/* connection.c */
|
||||
SYMFUNC(IgnoreClient)
|
||||
SYMFUNC(AttendClient)
|
||||
SYMFUNC(AddEnabledDevice)
|
||||
SYMFUNC(RemoveEnabledDevice)
|
||||
SYMFUNC(MakeClientGrabPervious)
|
||||
SYMFUNC(MakeClientGrabImpervious)
|
||||
SYMVAR(GrabInProgress)
|
||||
|
||||
#ifdef XKB
|
||||
/* xkb/xkbInit.c */
|
||||
SYMFUNC(XkbInitKeyboardDeviceStruct)
|
||||
SYMFUNC(XkbSetRulesDflts)
|
||||
SYMVAR(XkbDfltRepeatDelay)
|
||||
SYMVAR(XkbDfltRepeatInterval)
|
||||
#endif
|
||||
|
||||
#ifdef XINPUT
|
||||
/* Xi */
|
||||
/* exevents.c */
|
||||
SYMFUNC(InitValuatorAxisStruct)
|
||||
SYMFUNC(InitProximityClassDeviceStruct)
|
||||
/* extinit.c */
|
||||
SYMFUNC(AssignTypeAndName)
|
||||
#endif
|
||||
|
||||
/* xf86DGA.c */
|
||||
/* XXX This is exported from the DDX, not DIX. */
|
||||
SYMVAR(XDGAEventBase)
|
||||
|
||||
/* librender.a */
|
||||
#ifdef RENDER
|
||||
/* picture.c */
|
||||
SYMFUNC(PictureInit)
|
||||
SYMFUNC(PictureTransformPoint)
|
||||
SYMFUNC(PictureTransformPoint3d)
|
||||
SYMFUNC(PictureGetSubpixelOrder)
|
||||
SYMFUNC(PictureSetSubpixelOrder)
|
||||
SYMVAR(PictureScreenPrivateIndex)
|
||||
/* mipict.c */
|
||||
SYMFUNC(miPictureInit)
|
||||
SYMFUNC(miComputeCompositeRegion)
|
||||
/* miglyph.c */
|
||||
SYMFUNC(miGlyphs)
|
||||
/* mirect.c */
|
||||
SYMFUNC(miCompositeRects)
|
||||
/* filter.c */
|
||||
SYMFUNC(PictureAddFilter)
|
||||
SYMFUNC(PictureSetFilterAlias)
|
||||
/* renderedge.c */
|
||||
SYMFUNC(RenderSampleCeilY)
|
||||
SYMFUNC(RenderSampleFloorY)
|
||||
SYMFUNC(RenderEdgeStep)
|
||||
SYMFUNC(RenderEdgeInit)
|
||||
SYMFUNC(RenderLineFixedEdgeInit)
|
||||
#endif
|
||||
|
||||
{0, 0}
|
||||
};
|
|
@ -1,7 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dlloader.c,v 1.13 2003/10/15 16:29:02 dawes Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 1997 The XFree86 Project, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software
|
||||
|
@ -23,7 +20,18 @@
|
|||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE. */
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Once upon a time, X had multiple loader backends, three of which were
|
||||
* essentially libdl reimplementations. This was nonsense so we chucked
|
||||
* it, but we still retain the factorization between loader API and
|
||||
* platform implementation. This file is the libdl implementation, and
|
||||
* currently the only backend. If you find yourself porting to a platform
|
||||
* without working libdl - hpux, win32, some forsaken a.out host, etc. -
|
||||
* make a new backend rather than hacking up this file.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
|
@ -36,82 +44,67 @@
|
|||
#include <X11/Xos.h>
|
||||
#include "os.h"
|
||||
|
||||
#include "sym.h"
|
||||
#include "loader.h"
|
||||
#include "dlloader.h"
|
||||
|
||||
#ifdef DL_LAZY
|
||||
#if defined(DL_LAZY)
|
||||
#define DLOPEN_LAZY DL_LAZY
|
||||
#else
|
||||
#ifdef RTLD_LAZY
|
||||
#elif defined(RTLD_LAZY)
|
||||
#define DLOPEN_LAZY RTLD_LAZY
|
||||
#else
|
||||
#ifdef __FreeBSD__
|
||||
#elif defined(__FreeBSD__)
|
||||
#define DLOPEN_LAZY 1
|
||||
#else
|
||||
#define DLOPEN_LAZY 0
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#ifdef LD_GLOBAL
|
||||
|
||||
#if defined(LD_GLOBAL)
|
||||
#define DLOPEN_GLOBAL LD_GLOBAL
|
||||
#else
|
||||
#ifdef RTLD_GLOBAL
|
||||
#elif defined(RTLD_GLOBAL)
|
||||
#define DLOPEN_GLOBAL RTLD_GLOBAL
|
||||
#else
|
||||
#define DLOPEN_GLOBAL 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CSRG_BASED) && !defined(__ELF__)
|
||||
#define NEED_UNDERSCORE_FOR_DLLSYM
|
||||
#define DLSYM_PREFIX "_"
|
||||
#else
|
||||
#define DLSYM_PREFIX ""
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This structure contains all of the information about a module
|
||||
* that has been loaded.
|
||||
*/
|
||||
typedef struct {
|
||||
int handle;
|
||||
void *dlhandle;
|
||||
int flags;
|
||||
} DLModuleRec, *DLModulePtr;
|
||||
|
||||
/*
|
||||
* a list of loaded modules XXX can be improved
|
||||
*/
|
||||
/* Hooray, yet another open coded linked list! FIXME */
|
||||
typedef struct DLModuleList {
|
||||
DLModulePtr module;
|
||||
struct DLModuleList *next;
|
||||
} DLModuleList;
|
||||
|
||||
DLModuleList *dlModuleList = NULL;
|
||||
static DLModuleList *dlModuleList = NULL;
|
||||
|
||||
void *
|
||||
static void *
|
||||
DLFindSymbolLocal(pointer module, const char *name)
|
||||
{
|
||||
DLModulePtr dlfile = module;
|
||||
void *p;
|
||||
char *n;
|
||||
|
||||
#ifdef NEED_UNDERSCORE_FOR_DLLSYM
|
||||
static const char symPrefix[] = "_";
|
||||
#else
|
||||
static const char symPrefix[] = "";
|
||||
#endif
|
||||
static const char symPrefix[] = DLSYM_PREFIX;
|
||||
|
||||
n = xf86loadermalloc(strlen(symPrefix) + strlen(name) + 1);
|
||||
sprintf(n, "%s%s", symPrefix, name);
|
||||
n = malloc(strlen(symPrefix) + strlen(name) + 1);
|
||||
if (strlen(symPrefix))
|
||||
sprintf(n, "%s%s", symPrefix, name);
|
||||
else
|
||||
sprintf(n, "%s", name);
|
||||
p = dlsym(dlfile->dlhandle, n);
|
||||
xf86loaderfree(n);
|
||||
free(n);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Search a symbol in the module list
|
||||
*/
|
||||
void *
|
||||
DLFindSymbol(const char *name)
|
||||
{
|
||||
|
@ -127,75 +120,59 @@ DLFindSymbol(const char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* public interface
|
||||
*/
|
||||
void *
|
||||
DLLoadModule(loaderPtr modrec, int fd, LOOKUP ** ppLookup, int flags)
|
||||
DLLoadModule(loaderPtr modrec, int fd, int flags)
|
||||
{
|
||||
DLModulePtr dlfile;
|
||||
DLModuleList *l;
|
||||
int dlopen_flags;
|
||||
|
||||
if ((dlfile = xf86loadercalloc(1, sizeof(DLModuleRec))) == NULL) {
|
||||
ErrorF("Unable to allocate DLModuleRec\n");
|
||||
if ((dlfile = calloc(1, sizeof(DLModuleRec))) == NULL) {
|
||||
ErrorF("Unable to allocate DLModuleRec\n");
|
||||
return NULL;
|
||||
}
|
||||
dlfile->handle = modrec->handle;
|
||||
if (flags & LD_FLAG_GLOBAL)
|
||||
dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL;
|
||||
dlopen_flags = DLOPEN_LAZY | DLOPEN_GLOBAL;
|
||||
else
|
||||
dlopen_flags = DLOPEN_LAZY;
|
||||
dlopen_flags = DLOPEN_LAZY;
|
||||
dlfile->dlhandle = dlopen(modrec->name, dlopen_flags);
|
||||
if (dlfile->dlhandle == NULL) {
|
||||
ErrorF("dlopen: %s\n", dlerror());
|
||||
xf86loaderfree(dlfile);
|
||||
free(dlfile);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
l = xf86loadermalloc(sizeof(DLModuleList));
|
||||
l = malloc(sizeof(DLModuleList));
|
||||
l->module = dlfile;
|
||||
l->next = dlModuleList;
|
||||
dlModuleList = l;
|
||||
*ppLookup = NULL;
|
||||
|
||||
return (void *)dlfile;
|
||||
}
|
||||
|
||||
void
|
||||
DLResolveSymbols(void *mod)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int
|
||||
DLCheckForUnresolved(void *mod)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
DLUnloadModule(void *modptr)
|
||||
{
|
||||
DLModulePtr dlfile = (DLModulePtr) modptr;
|
||||
DLModuleList *l, *p;
|
||||
|
||||
/* remove it from dlModuleList */
|
||||
/* remove it from dlModuleList. */
|
||||
if (dlModuleList->module == modptr) {
|
||||
l = dlModuleList;
|
||||
dlModuleList = l->next;
|
||||
xf86loaderfree(l);
|
||||
free(l);
|
||||
} else {
|
||||
p = dlModuleList;
|
||||
for (l = dlModuleList->next; l != NULL; l = l->next) {
|
||||
if (l->module == modptr) {
|
||||
p->next = l->next;
|
||||
xf86loaderfree(l);
|
||||
free(l);
|
||||
break;
|
||||
}
|
||||
p = l;
|
||||
}
|
||||
}
|
||||
dlclose(dlfile->dlhandle);
|
||||
xf86loaderfree(modptr);
|
||||
free(modptr);
|
||||
}
|
||||
|
|
|
@ -19,19 +19,15 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/dlloader.h,v 1.2 1998/07/25 16:56:14 dawes Exp $ */
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#ifndef _DLLOADER_H
|
||||
#define _DLLOADER_H
|
||||
extern void *DLLoadModule(loaderPtr, int, LOOKUP **, int flags);
|
||||
extern void DLResolveSymbols(void *);
|
||||
extern int DLCheckForUnresolved(void *);
|
||||
|
||||
extern void *DLLoadModule(loaderPtr, int, int flags);
|
||||
extern void DLUnloadModule(void *);
|
||||
extern void *DLFindSymbol(const char *name);
|
||||
extern void *DLFindSymbolLocal(pointer module, const char *name);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.5 2004/09/14 23:21:22 gisburn Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/extsym.c,v 1.9 2003/10/15 16:29:03 dawes Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1999-2003 by The XFree86 Project, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of The XFree86 Project, Inc. not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. The XFree86 Project, Inc. makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO
|
||||
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS, IN NO EVENT SHALL THE XFREE86 PROJECT, INC. BE LIABLE
|
||||
* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include "resource.h"
|
||||
#include "sym.h"
|
||||
#include "misc.h"
|
||||
#ifdef PANORAMIX
|
||||
#include "panoramiX.h"
|
||||
#endif
|
||||
#include "sleepuntil.h"
|
||||
|
||||
#ifdef HAS_SHM
|
||||
extern int ShmCompletionCode;
|
||||
extern int BadShmSegCode;
|
||||
extern RESTYPE ShmSegType, ShmPixType;
|
||||
#endif
|
||||
|
||||
#ifdef PANORAMIX
|
||||
extern Bool noPanoramiXExtension;
|
||||
extern int PanoramiXNumScreens;
|
||||
extern PanoramiXData *panoramiXdataPtr;
|
||||
extern XID *PanoramiXVisualTable;
|
||||
extern unsigned long XRT_WINDOW;
|
||||
extern unsigned long XRT_PIXMAP;
|
||||
extern unsigned long XRT_GC;
|
||||
extern unsigned long XRT_COLORMAP;
|
||||
extern unsigned long XRC_DRAWABLE;
|
||||
extern Bool XineramaRegisterConnectionBlockCallback(void (*func) (void));
|
||||
extern int XineramaDeleteResource(pointer, XID);
|
||||
#endif
|
||||
|
||||
LOOKUP extLookupTab[] = {
|
||||
|
||||
SYMFUNC(ClientSleepUntil)
|
||||
|
||||
#ifdef HAS_SHM
|
||||
SYMVAR(ShmCompletionCode)
|
||||
SYMVAR(BadShmSegCode)
|
||||
SYMVAR(ShmSegType)
|
||||
#endif
|
||||
|
||||
#ifdef PANORAMIX
|
||||
SYMFUNC(XineramaRegisterConnectionBlockCallback)
|
||||
SYMFUNC(XineramaDeleteResource)
|
||||
SYMVAR(PanoramiXNumScreens)
|
||||
SYMVAR(panoramiXdataPtr)
|
||||
SYMVAR(PanoramiXVisualTable)
|
||||
SYMVAR(XRT_WINDOW)
|
||||
SYMVAR(XRT_PIXMAP)
|
||||
SYMVAR(XRT_GC)
|
||||
SYMVAR(XRT_COLORMAP)
|
||||
SYMVAR(XRC_DRAWABLE)
|
||||
#endif
|
||||
|
||||
{0, 0}
|
||||
};
|
|
@ -1,112 +0,0 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/fontsym.c,v 1.14 2003/12/20 20:04:34 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1998-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name of the copyright holder(s)
|
||||
* and author(s) shall not be used in advertising or otherwise to promote
|
||||
* the sale, use or other dealings in this Software without prior written
|
||||
* authorization from the copyright holder(s) and author(s).
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include <X11/fonts/font.h>
|
||||
#include "sym.h"
|
||||
#include <X11/fonts/fntfilst.h>
|
||||
#include <X11/fonts/fontenc.h>
|
||||
#ifdef FONTENC_COMPATIBILITY
|
||||
#include <X11/fonts/fontencc.h>
|
||||
#endif
|
||||
#include <X11/fonts/fntfilio.h>
|
||||
#include <X11/fonts/fntfil.h>
|
||||
#include <X11/fonts/fontutil.h>
|
||||
#include <X11/fonts/fontxlfd.h>
|
||||
#ifdef FONTCACHE
|
||||
#define _FONTCACHE_SERVER_
|
||||
#include "fontcache.h"
|
||||
#endif
|
||||
|
||||
LOOKUP fontLookupTab[] = {
|
||||
|
||||
SYMFUNC(TwoByteSwap)
|
||||
SYMFUNC(FourByteSwap)
|
||||
SYMFUNC(FontCouldBeTerminal)
|
||||
SYMFUNC(BufFileRead)
|
||||
SYMFUNC(BufFileWrite)
|
||||
SYMFUNC(CheckFSFormat)
|
||||
SYMFUNC(FontFileOpen)
|
||||
SYMFUNC(FontFilePriorityRegisterRenderer)
|
||||
SYMFUNC(FontFileRegisterRenderer)
|
||||
SYMFUNC(FontParseXLFDName)
|
||||
SYMFUNC(FontFileCloseFont)
|
||||
SYMFUNC(FontFileOpenBitmap)
|
||||
SYMFUNC(FontFileCompleteXLFD)
|
||||
SYMFUNC(FontFileCountDashes)
|
||||
SYMFUNC(FontFileFindNameInDir)
|
||||
SYMFUNC(FontFileClose)
|
||||
SYMFUNC(FontComputeInfoAccelerators)
|
||||
SYMFUNC(FontDefaultFormat)
|
||||
SYMFUNC(NameForAtom)
|
||||
SYMFUNC(BitOrderInvert)
|
||||
SYMFUNC(FontFileMatchRenderer)
|
||||
SYMFUNC(RepadBitmap)
|
||||
SYMFUNC(FontEncName)
|
||||
SYMFUNC(FontEncRecode)
|
||||
SYMFUNC(FontEncFind)
|
||||
SYMFUNC(FontMapFind)
|
||||
SYMFUNC(FontEncMapFind)
|
||||
SYMFUNC(FontEncFromXLFD)
|
||||
SYMFUNC(FontEncDirectory)
|
||||
SYMFUNC(FontMapReverse)
|
||||
SYMFUNC(FontMapReverseFree)
|
||||
SYMFUNC(CreateFontRec)
|
||||
SYMFUNC(DestroyFontRec)
|
||||
SYMFUNC(GetGlyphs)
|
||||
SYMFUNC(QueryGlyphExtents)
|
||||
|
||||
SYMVAR(FontFileBitmapSources)
|
||||
|
||||
#ifdef FONTENC_COMPATIBILITY
|
||||
/* Obsolete backwards compatibility symbols -- fontencc.c */
|
||||
SYMFUNC(font_encoding_from_xlfd)
|
||||
SYMFUNC(font_encoding_find)
|
||||
SYMFUNC(font_encoding_recode)
|
||||
SYMFUNC(font_encoding_name)
|
||||
SYMFUNC(identifyEncodingFile)
|
||||
#endif
|
||||
|
||||
#ifdef FONTCACHE
|
||||
/* fontcache.c */
|
||||
SYMFUNC(FontCacheGetSettings)
|
||||
SYMFUNC(FontCacheGetStatistics)
|
||||
SYMFUNC(FontCacheChangeSettings)
|
||||
SYMFUNC(FontCacheOpenCache)
|
||||
SYMFUNC(FontCacheCloseCache)
|
||||
SYMFUNC(FontCacheSearchEntry)
|
||||
SYMFUNC(FontCacheGetEntry)
|
||||
SYMFUNC(FontCacheInsertEntry)
|
||||
SYMFUNC(FontCacheGetBitmap)
|
||||
#endif
|
||||
|
||||
{0, 0}
|
||||
};
|
|
@ -1,356 +0,0 @@
|
|||
/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/hash.c,v 1.3 2005/04/20 12:25:34 daniels Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/hash.c,v 1.24 2003/11/17 22:20:40 dawes Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Metro Link, Inc. not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Metro Link, Inc. makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include "os.h"
|
||||
#include <X11/Xos.h>
|
||||
#undef abs
|
||||
#include <stdlib.h>
|
||||
#include "sym.h"
|
||||
#include "loader.h"
|
||||
#include "hash.h"
|
||||
|
||||
#if defined(Lynx)
|
||||
#define MAXINT 32000
|
||||
#else
|
||||
#include <limits.h>
|
||||
#undef MAXINT
|
||||
#define MAXINT INT_MAX
|
||||
#endif
|
||||
|
||||
/* Prototypes for static functions. */
|
||||
static unsigned int hashFunc(const char *);
|
||||
static itemPtr LoaderHashFindNearest(unsigned long);
|
||||
|
||||
static itemPtr LoaderhashTable[HASHSIZE];
|
||||
|
||||
#ifdef DEBUG
|
||||
static int hashhits[HASHSIZE];
|
||||
|
||||
void
|
||||
DumpHashHits(void)
|
||||
{
|
||||
int i;
|
||||
int depth = 0;
|
||||
int dev = 0;
|
||||
|
||||
for (i = 0; i < HASHSIZE; i++) {
|
||||
ErrorF("hashhits[%d]=%d\n", i, hashhits[i]);
|
||||
depth += hashhits[i];
|
||||
}
|
||||
|
||||
depth /= HASHSIZE;
|
||||
ErrorF("Average hash depth=%d\n", depth);
|
||||
|
||||
for (i = 0; i < HASHSIZE; i++) {
|
||||
if (hashhits[i] < depth)
|
||||
dev += depth - hashhits[i];
|
||||
else
|
||||
dev += hashhits[i] - depth;
|
||||
}
|
||||
|
||||
dev /= HASHSIZE;
|
||||
ErrorF("Average hash deviation=%d\n", dev);
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned int
|
||||
hashFunc(const char *string)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
while (i < 10 && string[i])
|
||||
i++;
|
||||
|
||||
if (i < 5) {
|
||||
#ifdef DEBUG
|
||||
hashhits[i]++;
|
||||
#endif
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
* Original has function
|
||||
#define HASH ((string[ i-4 ] * string[i-3] + string[i-2] ) & (HASHSIZE-1))
|
||||
*/
|
||||
|
||||
#define HASH ((string[i-5] * string[ i-4 ] + string[i-3] * string[i-2] ) & (HASHSIZE-1))
|
||||
|
||||
#ifdef DEBUG
|
||||
hashhits[HASH]++;
|
||||
#endif
|
||||
|
||||
return HASH;
|
||||
}
|
||||
|
||||
void
|
||||
LoaderHashAdd(itemPtr entry)
|
||||
{
|
||||
int bucket = hashFunc(entry->name);
|
||||
itemPtr oentry;
|
||||
|
||||
if ((oentry = LoaderHashFind(entry->name)) != NULL)
|
||||
LoaderDuplicateSymbol(entry->name, oentry->handle);
|
||||
|
||||
entry->next = LoaderhashTable[bucket];
|
||||
LoaderhashTable[bucket] = entry;
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
LoaderAddSymbols(int handle, int module, LOOKUP *list)
|
||||
{
|
||||
LOOKUP *l = list, *exports = NULL;
|
||||
itemPtr i, exportsItem = NULL;
|
||||
char *modname;
|
||||
|
||||
if (!list)
|
||||
return;
|
||||
|
||||
/*
|
||||
* First look for a symbol called <name>ExportedSymbols. If it exists,
|
||||
* only export the symbols that are listed in that array. Otherwise
|
||||
* export all of the external symbols.
|
||||
*/
|
||||
modname = _LoaderHandleToCanonicalName(handle);
|
||||
if (modname) {
|
||||
char *exportname;
|
||||
|
||||
exportname = xf86loadermalloc(strlen("ExportedSymbols") +
|
||||
strlen(modname) + 1);
|
||||
if (exportname) {
|
||||
sprintf(exportname, "%sExportedSymbols", modname);
|
||||
while (l->symName) {
|
||||
if (strcmp(l->symName, exportname) == 0) {
|
||||
exports = l;
|
||||
ErrorF("LoaderAddSymbols: %s: %s found\n", modname,
|
||||
exportname);
|
||||
break;
|
||||
}
|
||||
l++;
|
||||
}
|
||||
xf86loaderfree(exportname);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate the exports list item first.
|
||||
*/
|
||||
if (exports) {
|
||||
exportsItem = xf86loadermalloc(sizeof(itemRec));
|
||||
exportsItem->name = exports->symName;
|
||||
exportsItem->address = (char *)exports->offset;
|
||||
exportsItem->handle = handle;
|
||||
exportsItem->module = module;
|
||||
exportsItem->exports = NULL;
|
||||
LoaderHashAdd(exportsItem);
|
||||
}
|
||||
|
||||
/*
|
||||
* Visit every symbol in the lookup table, tagging it with the
|
||||
* reference to the export list, if present.
|
||||
*/
|
||||
l = list;
|
||||
while (l->symName) {
|
||||
if (l != exports) {
|
||||
i = xf86loadermalloc(sizeof(itemRec));
|
||||
i->name = l->symName;
|
||||
i->address = (char *)l->offset;
|
||||
i->handle = handle;
|
||||
i->module = module;
|
||||
i->exports = exportsItem;
|
||||
LoaderHashAdd(i);
|
||||
}
|
||||
l++;
|
||||
}
|
||||
}
|
||||
|
||||
itemPtr
|
||||
LoaderHashDelete(const char *string)
|
||||
{
|
||||
int bucket = hashFunc(string);
|
||||
itemPtr entry;
|
||||
itemPtr *entry2;
|
||||
|
||||
entry = LoaderhashTable[bucket];
|
||||
entry2 = &(LoaderhashTable[bucket]);
|
||||
while (entry) {
|
||||
if (!strcmp(entry->name, string)) {
|
||||
*entry2 = entry->next;
|
||||
xf86loaderfree(entry->name);
|
||||
xf86loaderfree(entry);
|
||||
return 0;
|
||||
}
|
||||
entry2 = &(entry->next);
|
||||
entry = entry->next;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
itemPtr
|
||||
LoaderHashFind(const char *string)
|
||||
{
|
||||
int bucket = hashFunc(string);
|
||||
itemPtr entry;
|
||||
|
||||
entry = LoaderhashTable[bucket];
|
||||
while (entry) {
|
||||
if (!strcmp(entry->name, string)) {
|
||||
return entry;
|
||||
}
|
||||
entry = entry->next;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static itemPtr
|
||||
LoaderHashFindNearest(unsigned long address)
|
||||
{
|
||||
int i;
|
||||
itemPtr entry, best_entry = 0;
|
||||
long best_difference = MAXINT;
|
||||
|
||||
for (i = 0; i < HASHSIZE; i++) {
|
||||
entry = LoaderhashTable[i];
|
||||
while (entry) {
|
||||
long difference = (long)address - (long)entry->address;
|
||||
|
||||
if (difference >= 0) {
|
||||
if (best_entry) {
|
||||
if (difference < best_difference) {
|
||||
best_entry = entry;
|
||||
best_difference = difference;
|
||||
}
|
||||
} else {
|
||||
best_entry = entry;
|
||||
best_difference = difference;
|
||||
}
|
||||
}
|
||||
entry = entry->next;
|
||||
}
|
||||
}
|
||||
return best_entry;
|
||||
}
|
||||
|
||||
void
|
||||
LoaderPrintSymbol(unsigned long address)
|
||||
{
|
||||
itemPtr entry;
|
||||
|
||||
entry = LoaderHashFindNearest(address);
|
||||
if (entry) {
|
||||
const char *module, *section;
|
||||
|
||||
#if defined(__alpha__) || defined(__ia64__)
|
||||
ErrorF("0x%016lx %s+%lx\n", (unsigned long)entry->address,
|
||||
entry->name, address - (unsigned long)entry->address);
|
||||
#else
|
||||
ErrorF("0x%lx %s+%lx\n", (unsigned long)entry->address, entry->name,
|
||||
address - (unsigned long)entry->address);
|
||||
#endif
|
||||
|
||||
if (_LoaderAddressToSection(address, &module, §ion))
|
||||
ErrorF("\tModule \"%s\"\n\tSection \"%s\"\n", module, section);
|
||||
} else {
|
||||
ErrorF("(null)\n");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LoaderPrintItem(itemPtr pItem)
|
||||
{
|
||||
if (pItem) {
|
||||
const char *module, *section;
|
||||
|
||||
#if defined(__alpha__) || defined(__ia64__)
|
||||
ErrorF("0x%016lx %s\n", (unsigned long)pItem->address, pItem->name);
|
||||
#else
|
||||
ErrorF("0x%lx %s\n", (unsigned long)pItem->address, pItem->name);
|
||||
#endif
|
||||
if (_LoaderAddressToSection((unsigned long)pItem->address,
|
||||
&module, §ion))
|
||||
ErrorF("\tModule \"%s\"\n\tSection \"%s\"\n", module, section);
|
||||
} else
|
||||
ErrorF("(null)\n");
|
||||
}
|
||||
|
||||
void
|
||||
LoaderPrintAddress(const char *symbol)
|
||||
{
|
||||
itemPtr entry;
|
||||
|
||||
entry = LoaderHashFind(symbol);
|
||||
LoaderPrintItem(entry);
|
||||
}
|
||||
|
||||
void
|
||||
LoaderHashTraverse(void *card, int (*fnp)(void *, itemPtr))
|
||||
{
|
||||
int i;
|
||||
itemPtr entry, last_entry = 0;
|
||||
|
||||
for (i = 0; i < HASHSIZE; i++) {
|
||||
last_entry = 0;
|
||||
entry = LoaderhashTable[i];
|
||||
while (entry) {
|
||||
if ((*fnp) (card, entry)) {
|
||||
if (last_entry) {
|
||||
last_entry->next = entry->next;
|
||||
xf86loaderfree(entry->name);
|
||||
xf86loaderfree(entry);
|
||||
entry = last_entry->next;
|
||||
} else {
|
||||
LoaderhashTable[i] = entry->next;
|
||||
xf86loaderfree(entry->name);
|
||||
xf86loaderfree(entry);
|
||||
entry = LoaderhashTable[i];
|
||||
}
|
||||
} else {
|
||||
last_entry = entry;
|
||||
entry = entry->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LoaderDumpSymbols()
|
||||
{
|
||||
itemPtr entry;
|
||||
int j;
|
||||
|
||||
for (j = 0; j < HASHSIZE; j++) {
|
||||
entry = LoaderhashTable[j];
|
||||
while (entry) {
|
||||
LoaderPrintItem(entry);
|
||||
entry = entry->next;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Metro Link, Inc. not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Metro Link, Inc. makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/hash.h,v 1.2.2.2 1998/07/04 13:32:45 dawes Exp $ */
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#ifndef _HASH_H
|
||||
#define _HASH_H
|
||||
|
||||
#include "loader.h"
|
||||
|
||||
typedef struct _HashIterator {
|
||||
itemPtr pItem;
|
||||
int bucket;
|
||||
} HashIteratorRec, *HashIteratorPtr;
|
||||
|
||||
#endif /* _HASH_H */
|
|
@ -1,5 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loader.c,v 1.71 2003/11/06 18:38:13 tsi Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
|
@ -71,7 +69,6 @@
|
|||
#include <stdarg.h>
|
||||
|
||||
#include "os.h"
|
||||
#include "sym.h"
|
||||
#include "loader.h"
|
||||
#include "loaderProcs.h"
|
||||
#include "xf86.h"
|
||||
|
@ -79,31 +76,11 @@
|
|||
|
||||
#include "compiler.h"
|
||||
|
||||
extern LOOKUP miLookupTab[];
|
||||
extern LOOKUP xfree86LookupTab[];
|
||||
extern LOOKUP dixLookupTab[];
|
||||
extern LOOKUP fontLookupTab[];
|
||||
extern LOOKUP extLookupTab[];
|
||||
|
||||
/*
|
||||
#define DEBUG
|
||||
#define DEBUGAR
|
||||
#define DEBUGLIST
|
||||
#define DEBUGMEM
|
||||
*/
|
||||
|
||||
int check_unresolved_sema = 0;
|
||||
|
||||
#if defined(Lynx) && defined(sun)
|
||||
/* Cross build machine doesn;t have strerror() */
|
||||
#define strerror(err) "strerror unsupported"
|
||||
#endif
|
||||
|
||||
#ifdef __UNIXOS2__
|
||||
void *os2ldcalloc(size_t, size_t);
|
||||
#endif
|
||||
|
||||
#ifdef HANDLE_IN_HASH_ENTRY
|
||||
/*
|
||||
* handles are used to identify files that are loaded. Even archives
|
||||
* are counted as a single file.
|
||||
|
@ -113,7 +90,6 @@ void *os2ldcalloc(size_t, size_t);
|
|||
#define HANDLE_USED 1
|
||||
static char freeHandles[MAX_HANDLE];
|
||||
static int refCount[MAX_HANDLE];
|
||||
#endif
|
||||
|
||||
#if defined(__sparc__) && defined(__GNUC__) && !defined(__FreeBSD__)
|
||||
# define SYMFUNCDOT(func) { "." #func, (funcptr)&__sparc_dot_ ## func },
|
||||
|
@ -133,26 +109,6 @@ DEFFUNCDOT(mul)
|
|||
DEFFUNCDOT(umul)
|
||||
DEFFUNCDOT(div)
|
||||
DEFFUNCDOT(udiv)
|
||||
#ifdef linux
|
||||
static LOOKUP SparcV89LookupTab[] = {
|
||||
SYMFUNCDOT89(rem)
|
||||
SYMFUNCDOT89(urem)
|
||||
SYMFUNCDOT89(mul)
|
||||
SYMFUNCDOT89(umul)
|
||||
SYMFUNCDOT89(div)
|
||||
SYMFUNCDOT89(udiv)
|
||||
{0, 0}
|
||||
};
|
||||
#endif
|
||||
static LOOKUP SparcLookupTab[] = {
|
||||
SYMFUNCDOT(rem)
|
||||
SYMFUNCDOT(urem)
|
||||
SYMFUNCDOT(mul)
|
||||
SYMFUNCDOT(umul)
|
||||
SYMFUNCDOT(div)
|
||||
SYMFUNCDOT(udiv)
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
#ifdef linux
|
||||
#if defined(__GNUC__) && defined(__GLIBC__)
|
||||
|
@ -220,22 +176,6 @@ sparcUseHWMulDiv(void)
|
|||
*/
|
||||
static int moduleseq = 0;
|
||||
|
||||
/*
|
||||
* GDB Interface
|
||||
* =============
|
||||
*
|
||||
* Linked list of loaded modules - gdb will traverse this to determine
|
||||
* whether it needs to add the symbols for the loaded module.
|
||||
*/
|
||||
LDRModulePtr ModList = 0;
|
||||
|
||||
/* Flag which gdb sets to let us know we're being debugged */
|
||||
char DebuggerPresent = 0;
|
||||
|
||||
/* List of common symbols */
|
||||
LDRCommonPtr ldrCommons;
|
||||
int nCommons;
|
||||
|
||||
typedef struct {
|
||||
int num;
|
||||
const char **list;
|
||||
|
@ -253,29 +193,8 @@ static symlist reqList = { 0, NULL };
|
|||
static int fatalReqSym = 0;
|
||||
|
||||
/* Prototypes for static functions. */
|
||||
static int _GetModuleType(int, long);
|
||||
static loaderPtr _LoaderListPush(void);
|
||||
static loaderPtr _LoaderListPop(int);
|
||||
/*ARGSUSED*/ static char *
|
||||
ARCHIVEAddressToSection(void *modptr, unsigned long address)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Array containing entry points for different formats.
|
||||
*/
|
||||
|
||||
static loader_funcs funcs[] = {
|
||||
/* LD_ELFDLOBJECT */
|
||||
{DLLoadModule,
|
||||
DLResolveSymbols,
|
||||
DLCheckForUnresolved,
|
||||
ARCHIVEAddressToSection,
|
||||
DLUnloadModule},
|
||||
};
|
||||
|
||||
int numloaders = sizeof(funcs) / sizeof(loader_funcs);
|
||||
|
||||
void
|
||||
LoaderInit(void)
|
||||
|
@ -287,20 +206,6 @@ LoaderInit(void)
|
|||
xf86Msg(X_ERROR, "LD_BIND_NOW is set, dlloader will NOT work!\n");
|
||||
}
|
||||
|
||||
LoaderAddSymbols(-1, -1, miLookupTab);
|
||||
LoaderAddSymbols(-1, -1, xfree86LookupTab);
|
||||
LoaderAddSymbols(-1, -1, dixLookupTab);
|
||||
LoaderAddSymbols(-1, -1, fontLookupTab);
|
||||
LoaderAddSymbols(-1, -1, extLookupTab);
|
||||
#if defined(__sparc__) && !defined(__FreeBSD__)
|
||||
#ifdef linux
|
||||
if (sparcUseHWMulDiv())
|
||||
LoaderAddSymbols(-1, -1, SparcV89LookupTab);
|
||||
else
|
||||
#endif
|
||||
LoaderAddSymbols(-1, -1, SparcLookupTab);
|
||||
#endif
|
||||
|
||||
xf86MsgVerb(X_INFO, 2, "Module ABI versions:\n");
|
||||
xf86ErrorFVerb(2, "\t%s: %d.%d\n", ABI_CLASS_ANSIC,
|
||||
GET_ABI_MAJOR(LoaderVersionInfo.ansicVersion),
|
||||
|
@ -322,16 +227,6 @@ LoaderInit(void)
|
|||
if (osname)
|
||||
xf86MsgVerb(X_INFO, 2, "Loader running on %s\n", osname);
|
||||
|
||||
#if defined(linux) && \
|
||||
(defined(__alpha__) || defined(__powerpc__) || defined(__ia64__) \
|
||||
|| ( defined __amd64__ && ! defined UseMMAP && ! defined DoMMAPedMerge))
|
||||
/*
|
||||
* The glibc malloc uses mmap for large allocations anyway. This breaks
|
||||
* some relocation types because the offset overflow. See loader.h for more
|
||||
* details. We need to turn off this behavior here.
|
||||
*/
|
||||
mallopt(M_MMAP_MAX, 0);
|
||||
#endif
|
||||
#if defined(__UNIXWARE__) && !defined(__GNUC__)
|
||||
/* For UnixWare we need to load the C Runtime libraries which are
|
||||
* normally auto-linked by the compiler. Otherwise we are bound to
|
||||
|
@ -354,25 +249,12 @@ LoaderInit(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine what type of object is being loaded.
|
||||
* This function is responsible for restoring the offset.
|
||||
* The fd and offset are used here so that when Archive processing
|
||||
* is enabled, individual elements of an archive can be evaluated
|
||||
* so the correct loader_funcs can be determined.
|
||||
*/
|
||||
static int
|
||||
_GetModuleType(int fd, long offset)
|
||||
{
|
||||
return LD_ELFDLOBJECT;
|
||||
}
|
||||
|
||||
static loaderPtr listHead = (loaderPtr) 0;
|
||||
|
||||
static loaderPtr
|
||||
_LoaderListPush()
|
||||
{
|
||||
loaderPtr item = xf86loadercalloc(1, sizeof(struct _loader));
|
||||
loaderPtr item = calloc(1, sizeof(struct _loader));
|
||||
|
||||
item->next = listHead;
|
||||
listHead = item;
|
||||
|
@ -493,28 +375,6 @@ _LoaderModuleToName(int module)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* _LoaderAddressToSection() will return the name of the file & section
|
||||
* that contains the given address.
|
||||
*/
|
||||
int
|
||||
_LoaderAddressToSection(const unsigned long address, const char **module,
|
||||
const char **section)
|
||||
{
|
||||
loaderPtr item = listHead;
|
||||
|
||||
while (item) {
|
||||
if ((*section =
|
||||
item->funcs->AddressToSection(item->private, address)) != NULL) {
|
||||
*module = _LoaderModuleToName(item->module);
|
||||
return 1;
|
||||
}
|
||||
item = item->next;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add a list of symbols to the referenced list.
|
||||
*/
|
||||
|
@ -676,22 +536,15 @@ _LoaderHandleUnresolved(char *symbol, char *module)
|
|||
return (fatalsym);
|
||||
}
|
||||
|
||||
/*
|
||||
* Relocation list manipulation routines
|
||||
*/
|
||||
|
||||
/*
|
||||
* Public Interface to the loader.
|
||||
*/
|
||||
/* Public Interface to the loader. */
|
||||
|
||||
int
|
||||
LoaderOpen(const char *module, const char *cname, int handle,
|
||||
int *errmaj, int *errmin, int *wasLoaded, int flags)
|
||||
{
|
||||
loaderPtr tmp;
|
||||
int new_handle, modtype;
|
||||
int new_handle;
|
||||
int fd;
|
||||
LOOKUP *pLookup;
|
||||
|
||||
#if defined(DEBUG)
|
||||
ErrorF("LoaderOpen(%s)\n", module);
|
||||
|
@ -757,26 +610,15 @@ LoaderOpen(const char *module, const char *cname, int handle,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if ((modtype = _GetModuleType(fd, 0)) < 0) {
|
||||
xf86Msg(X_ERROR, "%s is an unrecognized module type\n", module);
|
||||
freeHandles[new_handle] = HANDLE_FREE;
|
||||
if (errmaj)
|
||||
*errmaj = LDR_UNKTYPE;
|
||||
if (errmin)
|
||||
*errmin = LDR_UNKTYPE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
tmp = _LoaderListPush();
|
||||
tmp->name = xf86loadermalloc(strlen(module) + 1);
|
||||
tmp->name = malloc(strlen(module) + 1);
|
||||
strcpy(tmp->name, module);
|
||||
tmp->cname = xf86loadermalloc(strlen(cname) + 1);
|
||||
tmp->cname = malloc(strlen(cname) + 1);
|
||||
strcpy(tmp->cname, cname);
|
||||
tmp->handle = new_handle;
|
||||
tmp->module = moduleseq++;
|
||||
tmp->funcs = &funcs[modtype];
|
||||
|
||||
if ((tmp->private = funcs[modtype].LoadModule(tmp, fd, &pLookup, flags)) == NULL) {
|
||||
if ((tmp->private = DLLoadModule(tmp, fd, flags)) == NULL) {
|
||||
xf86Msg(X_ERROR, "Failed to load %s\n", module);
|
||||
_LoaderListPop(new_handle);
|
||||
freeHandles[new_handle] = HANDLE_FREE;
|
||||
|
@ -787,11 +629,6 @@ LoaderOpen(const char *module, const char *cname, int handle,
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (tmp->private != (void *)-1L) {
|
||||
LoaderAddSymbols(new_handle, tmp->module, pLookup);
|
||||
xf86loaderfree(pLookup);
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
||||
return new_handle;
|
||||
|
@ -813,50 +650,13 @@ LoaderHandleOpen(int handle)
|
|||
_X_EXPORT void *
|
||||
LoaderSymbol(const char *sym)
|
||||
{
|
||||
int i;
|
||||
itemPtr item = NULL;
|
||||
|
||||
for (i = 0; i < numloaders; i++)
|
||||
funcs[i].ResolveSymbols(&funcs[i]);
|
||||
|
||||
item = (itemPtr) LoaderHashFind(sym);
|
||||
|
||||
if (item)
|
||||
return item->address;
|
||||
else
|
||||
return (DLFindSymbol(sym));
|
||||
}
|
||||
|
||||
int
|
||||
LoaderResolveSymbols(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numloaders; i++)
|
||||
funcs[i].ResolveSymbols(&funcs[i]);
|
||||
return 0;
|
||||
return (DLFindSymbol(sym));
|
||||
}
|
||||
|
||||
_X_EXPORT int
|
||||
LoaderCheckUnresolved(int delay_flag)
|
||||
{
|
||||
int i, ret = 0;
|
||||
LoaderResolveOptions delayFlag = (LoaderResolveOptions)delay_flag;
|
||||
|
||||
LoaderResolveSymbols();
|
||||
|
||||
if (delayFlag == LD_RESOLV_NOW) {
|
||||
if (check_unresolved_sema > 0)
|
||||
check_unresolved_sema--;
|
||||
else
|
||||
xf86Msg(X_WARNING, "LoaderCheckUnresolved: not enough "
|
||||
"MAGIC_DONT_CHECK_UNRESOLVED\n");
|
||||
}
|
||||
|
||||
if (!check_unresolved_sema || delayFlag == LD_RESOLV_FORCE)
|
||||
for (i = 0; i < numloaders; i++)
|
||||
if (funcs[i].CheckForUnresolved(&funcs[i]))
|
||||
ret = 1;
|
||||
int ret = 0;
|
||||
|
||||
if (fatalReqSym)
|
||||
FatalError("Some required symbols were unresolved\n");
|
||||
|
@ -864,24 +664,6 @@ LoaderCheckUnresolved(int delay_flag)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void xf86LoaderTrap(void);
|
||||
|
||||
void
|
||||
xf86LoaderTrap(void)
|
||||
{
|
||||
}
|
||||
|
||||
_X_EXPORT void
|
||||
LoaderDefaultFunc(void)
|
||||
{
|
||||
ErrorF("\n\n\tThis should not happen!\n"
|
||||
"\tAn unresolved function was called!\n");
|
||||
|
||||
xf86LoaderTrap();
|
||||
|
||||
FatalError("\n");
|
||||
}
|
||||
|
||||
int
|
||||
LoaderUnload(int handle)
|
||||
{
|
||||
|
@ -905,10 +687,10 @@ LoaderUnload(int handle)
|
|||
/* It is not a member of an archive */
|
||||
xf86Msg(X_INFO, "Unloading %s\n", tmp->name);
|
||||
}
|
||||
tmp->funcs->LoaderUnload(tmp->private);
|
||||
xf86loaderfree(tmp->name);
|
||||
xf86loaderfree(tmp->cname);
|
||||
xf86loaderfree(tmp);
|
||||
DLUnloadModule(tmp->private);
|
||||
free(tmp->name);
|
||||
free(tmp->cname);
|
||||
free(tmp);
|
||||
}
|
||||
|
||||
freeHandles[handle] = HANDLE_FREE;
|
||||
|
@ -925,12 +707,6 @@ LoaderDuplicateSymbol(const char *symbol, const int handle)
|
|||
FatalError("Module load failure\n");
|
||||
}
|
||||
|
||||
/* GDB Sync function */
|
||||
void
|
||||
_loader_debug_state()
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long LoaderOptions = 0;
|
||||
|
||||
void
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loader.h,v 1.28 2003/11/06 18:38:14 tsi Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
|
@ -56,134 +53,19 @@
|
|||
#ifndef _LOADER_H
|
||||
#define _LOADER_H
|
||||
|
||||
#include "sym.h"
|
||||
|
||||
#if defined(Lynx) && defined(sun)
|
||||
#define const /**/
|
||||
#endif
|
||||
#if (defined(__i386__) || defined(__ix86)) && !defined(i386)
|
||||
#define i386
|
||||
#endif
|
||||
#include <X11/Xosdefs.h>
|
||||
#include <X11/Xfuncproto.h>
|
||||
#include <X11/Xmd.h>
|
||||
/* For LOOKUP definition */
|
||||
#include "sym.h"
|
||||
#define LD_UNKNOWN -1
|
||||
#define LD_ELFDLOBJECT 0
|
||||
#define LD_PROCESSED_ARCHIVE -1
|
||||
/* #define UNINIT_SECTION */
|
||||
#define HANDLE_IN_HASH_ENTRY
|
||||
|
||||
/* LoadModule proc flags; LD_FLAG_GLOBAL adds symbols to global
|
||||
* namespace, default is to keep symbols local to module. */
|
||||
#define LD_FLAG_GLOBAL 1
|
||||
|
||||
#define TestFree(a) if (a) { xfree (a); a = NULL; }
|
||||
#define HASHDIV 10
|
||||
#define HASHSIZE (1<<HASHDIV)
|
||||
|
||||
typedef struct _loader_item *itemPtr;
|
||||
typedef struct _loader_item {
|
||||
char *name;
|
||||
void *address;
|
||||
itemPtr next;
|
||||
int handle;
|
||||
int module;
|
||||
itemPtr exports;
|
||||
#if defined(__powerpc__)
|
||||
/*
|
||||
* PowerPC file formats require special routines in some circumstances
|
||||
* to assist in the linking process. See the specific loader for
|
||||
* more details.
|
||||
*/
|
||||
union {
|
||||
unsigned short plt[8]; /* ELF */
|
||||
} code;
|
||||
#endif
|
||||
} itemRec;
|
||||
|
||||
/* The following structures provide an interface to GDB (note that GDB
|
||||
has copies of the definitions - if you change anything here make
|
||||
sure that the changes are also made to GDB */
|
||||
|
||||
typedef struct {
|
||||
char *name; /* Name of this symbol */
|
||||
unsigned int namelen; /* Name of this module */
|
||||
void *addr; /* Start address of the .text section */
|
||||
} LDRCommon, *LDRCommonPtr;
|
||||
|
||||
typedef struct x_LDRModuleRec {
|
||||
unsigned int version; /* Version of this struct */
|
||||
char *name; /* Name of this module */
|
||||
unsigned int namelen; /* Length of name */
|
||||
void *text; /* Start address of the .text section */
|
||||
void *data; /* Start address of the .data section */
|
||||
void *rodata; /* Start address of the .rodata section */
|
||||
void *bss; /* Start address of the .bss section */
|
||||
LDRCommonPtr commons; /* List of commmon symbols */
|
||||
int commonslen; /* Number of common symbols */
|
||||
struct x_LDRModuleRec *next; /* Next module record in chain */
|
||||
} LDRModuleRec, *LDRModulePtr;
|
||||
|
||||
extern char DebuggerPresent;
|
||||
extern LDRModulePtr ModList;
|
||||
extern LDRCommonPtr ldrCommons;
|
||||
extern int nCommons;
|
||||
|
||||
/*
|
||||
* The loader uses loader specific alloc/calloc/free functions that
|
||||
* are mapped to either to the regular Xserver functions, or in a couple
|
||||
* of special cases, mapped to the C library functions.
|
||||
*/
|
||||
#if !defined(PowerMAX_OS) && !(defined(linux) && (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__))) && 0
|
||||
#define xf86loadermalloc(size) xalloc(size)
|
||||
#define xf86loaderrealloc(ptr,size) xrealloc(ptr,size)
|
||||
#define xf86loadercalloc(num,size) xcalloc(num,size)
|
||||
#define xf86loaderfree(ptr) xfree(ptr)
|
||||
#define xf86loaderstrdup(ptr) xstrdup(ptr)
|
||||
#else
|
||||
/*
|
||||
* On Some OSes, xalloc() et al uses mmap to allocate space for large
|
||||
* allocation. This has the effect of placing the text section of some
|
||||
* modules very far away from the rest which are placed on the heap.
|
||||
* Certain relocations are limited in the size of the offsets that can be
|
||||
* handled, and this seperation causes these relocation to overflow. This
|
||||
* is fixed by just using the C library allocation functions for the loader
|
||||
* to ensure that all text sections are located on the heap. OSes that have
|
||||
* this problem are:
|
||||
* PowerMAX_OS/PPC
|
||||
* Linux/Alpha
|
||||
* Linux/PPC
|
||||
* Linux/IA-64
|
||||
*/
|
||||
#define xf86loadermalloc(size) malloc(size)
|
||||
#define xf86loaderrealloc(ptr,size) realloc(ptr,size)
|
||||
#define xf86loadercalloc(num,size) calloc(num,size)
|
||||
#define xf86loaderfree(ptr) free(ptr)
|
||||
#define xf86loaderstrdup(ptr) strdup(ptr)
|
||||
#endif
|
||||
|
||||
typedef struct _loader *loaderPtr;
|
||||
|
||||
/*
|
||||
* _loader_funcs hold the entry points for a module format.
|
||||
*/
|
||||
|
||||
typedef void *(*LoadModuleProcPtr) (loaderPtr modrec, int fd, LOOKUP **, int flags);
|
||||
typedef void (*ResolveSymbolsProcPtr) (void *);
|
||||
typedef int (*CheckForUnresolvedProcPtr) (void *);
|
||||
typedef char *(*AddressToSectionProcPtr) (void *, unsigned long);
|
||||
typedef void (*LoaderUnloadProcPtr) (void *);
|
||||
|
||||
typedef struct _loader_funcs {
|
||||
LoadModuleProcPtr LoadModule;
|
||||
ResolveSymbolsProcPtr ResolveSymbols;
|
||||
CheckForUnresolvedProcPtr CheckForUnresolved;
|
||||
AddressToSectionProcPtr AddressToSection;
|
||||
LoaderUnloadProcPtr LoaderUnload;
|
||||
} loader_funcs;
|
||||
|
||||
/* Each module loaded has a loaderRec */
|
||||
typedef struct _loader {
|
||||
int handle; /* Unique id used to remove symbols from
|
||||
|
@ -192,7 +74,6 @@ typedef struct _loader {
|
|||
char *name;
|
||||
char *cname;
|
||||
void *private; /* format specific data */
|
||||
loader_funcs *funcs; /* funcs for operating on this module */
|
||||
loaderPtr next;
|
||||
} loaderRec;
|
||||
|
||||
|
@ -205,47 +86,22 @@ typedef struct {
|
|||
int extensionVersion;
|
||||
int fontVersion;
|
||||
} ModuleVersions;
|
||||
extern ModuleVersions LoaderVersionInfo;
|
||||
extern const ModuleVersions LoaderVersionInfo;
|
||||
|
||||
extern unsigned long LoaderOptions;
|
||||
|
||||
/* Internal Functions */
|
||||
|
||||
void LoaderAddSymbols(int, int, LOOKUP *);
|
||||
void LoaderDefaultFunc(void);
|
||||
void LoaderDuplicateSymbol(const char *, const int);
|
||||
|
||||
#if 0
|
||||
void LoaderFixups(void);
|
||||
#endif
|
||||
void LoaderResolve(void);
|
||||
int LoaderResolveSymbols(void);
|
||||
int _LoaderHandleUnresolved(char *, char *);
|
||||
void LoaderHashAdd(itemPtr);
|
||||
itemPtr LoaderHashDelete(const char *);
|
||||
itemPtr LoaderHashFind(const char *);
|
||||
void LoaderHashTraverse(void *, int (*)(void *, itemPtr));
|
||||
void LoaderPrintAddress(const char *);
|
||||
void LoaderPrintItem(itemPtr);
|
||||
void LoaderPrintSymbol(unsigned long);
|
||||
void LoaderDumpSymbols(void);
|
||||
char *_LoaderModuleToName(int);
|
||||
int _LoaderAddressToSection(const unsigned long, const char **,
|
||||
const char **);
|
||||
int LoaderOpen(const char *, const char *, int, int *, int *, int *, int);
|
||||
int LoaderHandleOpen(int);
|
||||
|
||||
/*
|
||||
* object to name lookup routines
|
||||
*/
|
||||
/* object to name lookup routines */
|
||||
char *_LoaderHandleToName(int handle);
|
||||
char *_LoaderHandleToCanonicalName(int handle);
|
||||
|
||||
/*
|
||||
* Entry points for the different loader types
|
||||
*/
|
||||
/* Loader backends. */
|
||||
#include "dlloader.h"
|
||||
|
||||
extern void _loader_debug_state(void);
|
||||
|
||||
#endif /* _LOADER_H */
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loaderProcs.h,v 1.21 2003/10/15 16:29:04 dawes Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
|
@ -79,9 +76,7 @@ typedef struct module_desc {
|
|||
const XF86ModuleVersionInfo *VersionInfo;
|
||||
} ModuleDesc, *ModuleDescPtr;
|
||||
|
||||
/*
|
||||
* Extenal API for the loader
|
||||
*/
|
||||
/* External API for the loader */
|
||||
|
||||
void LoaderInit(void);
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadext.c,v 1.8 2003/10/15 16:29:04 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2000 by The XFree86 Project, Inc.
|
||||
*
|
||||
|
@ -37,6 +36,10 @@
|
|||
#include "misc.h"
|
||||
#include "xf86.h"
|
||||
|
||||
/*
|
||||
* This should be static, but miinitext wants it. FIXME: make extension
|
||||
* initialization not completely terrible.
|
||||
*/
|
||||
ExtensionModule *ExtensionModuleList = NULL;
|
||||
static int numExtensionModules = 0;
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadfont.c,v 1.4 2003/10/15 16:29:04 dawes Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1998 by The XFree86 Project, Inc.
|
||||
*
|
||||
|
@ -37,6 +36,7 @@
|
|||
#include "misc.h"
|
||||
#include "xf86.h"
|
||||
|
||||
/* XXX this should be static, but xorgcfg needs it, nngh */
|
||||
FontModule *FontModuleList = NULL;
|
||||
static int numFontModules = 0;
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/loadmod.c,v 1.73 2003/11/03 05:11:51 tsi Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1995-1998 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
|
@ -73,7 +70,7 @@
|
|||
#include <dirent.h>
|
||||
#include <limits.h>
|
||||
|
||||
extern int check_unresolved_sema;
|
||||
#define TestFree(a) if (a) { xfree (a); a = NULL; }
|
||||
|
||||
typedef struct _pattern {
|
||||
const char *pattern;
|
||||
|
@ -93,7 +90,7 @@ static ModuleDescPtr doLoadModule(const char *, const char *, const char **,
|
|||
const XF86ModReqInfo *, int *, int *,
|
||||
int flags);
|
||||
|
||||
ModuleVersions LoaderVersionInfo = {
|
||||
const ModuleVersions LoaderVersionInfo = {
|
||||
XORG_VERSION_CURRENT,
|
||||
ABI_ANSIC_VERSION,
|
||||
ABI_VIDEODRV_VERSION,
|
||||
|
@ -102,17 +99,6 @@ ModuleVersions LoaderVersionInfo = {
|
|||
ABI_FONT_VERSION
|
||||
};
|
||||
|
||||
#if 0
|
||||
void
|
||||
LoaderFixups(void)
|
||||
{
|
||||
/* Need to call LRS here because the frame buffers get loaded last,
|
||||
* and the drivers depend on them. */
|
||||
|
||||
LoaderResolveSymbols();
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
FreeStringList(char **paths)
|
||||
{
|
||||
|
@ -225,15 +211,15 @@ static const char *stdSubdirs[] = {
|
|||
/*
|
||||
* Standard set of module name patterns to check, in order of preference
|
||||
* These are regular expressions (suitable for use with POSIX regex(3)).
|
||||
*
|
||||
* This list assumes that you're an ELFish platform and therefore your
|
||||
* shared libraries are named something.so. If we're ever nuts enough
|
||||
* to port this DDX to, say, Darwin, we'll need to fix this.
|
||||
*/
|
||||
static PatternRec stdPatterns[] = {
|
||||
{"^lib(.*)\\.so$",},
|
||||
{"^lib(.*)\\.a$",},
|
||||
{"(.*)_drv\\.so$",},
|
||||
{"(.*)_drv\\.o$",},
|
||||
{"(.*)\\.so$",},
|
||||
{"(.*)\\.a$",},
|
||||
{"(.*)\\.o$",},
|
||||
{NULL,}
|
||||
};
|
||||
|
||||
|
@ -432,7 +418,6 @@ FindModule(const char *module, const char *dir, const char **subdirlist,
|
|||
continue;
|
||||
strcpy(buf, dirpath);
|
||||
strcat(buf, *s);
|
||||
/*xf86Msg(X_INFO,"OS2DIAG: FindModule: buf=%s\n",buf); */
|
||||
if ((stat(buf, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) {
|
||||
if (buf[dirlen - 1] != '/') {
|
||||
buf[dirlen++] = '/';
|
||||
|
@ -728,19 +713,11 @@ CheckVersion(const char *module, XF86ModuleVersionInfo * data,
|
|||
/* XXX Maybe this should be the other way around? */
|
||||
if (min > reqmin) {
|
||||
xf86MsgVerb(X_WARNING, 2, "module ABI minor version (%d) "
|
||||
"is new than that available (%d)\n", min, reqmin);
|
||||
"is newer than that available (%d)\n", min, reqmin);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef NOTYET
|
||||
if (data->checksum) {
|
||||
/* verify the checksum field */
|
||||
/* TO BE DONE */
|
||||
} else {
|
||||
ErrorF("\t*** Checksum field is 0 - this module is untrusted!\n");
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -867,7 +844,6 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
|
|||
int noncanonical = 0;
|
||||
char *m = NULL;
|
||||
|
||||
/*xf86Msg(X_INFO,"OS2DIAG: LoadModule: %s\n",module); */
|
||||
xf86MsgVerb(X_INFO, 3, "LoadModule: \"%s\"", module);
|
||||
|
||||
patterns = InitPatterns(patternlist);
|
||||
|
@ -1306,7 +1282,7 @@ LoaderErrorMsg(const char *name, const char *modname, int errmaj, int errmin)
|
|||
msg = "module-specific error";
|
||||
break;
|
||||
default:
|
||||
msg = "uknown error";
|
||||
msg = "unknown error";
|
||||
}
|
||||
if (name)
|
||||
xf86Msg(type, "%s: Failed to load module \"%s\" (%s, %d)\n",
|
||||
|
|
|
@ -1,225 +0,0 @@
|
|||
/* $XdotOrg: xserver/xorg/hw/xfree86/loader/misym.c,v 1.9 2005/10/18 04:02:31 aplattner Exp $ */
|
||||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/misym.c,v 1.38 2003/10/15 16:29:04 dawes Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
* Copyright 1995,96 by Metro Link, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that
|
||||
* copyright notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of Metro Link, Inc. not be used in
|
||||
* advertising or publicity pertaining to distribution of the software without
|
||||
* specific, written prior permission. Metro Link, Inc. makes no
|
||||
* representations about the suitability of this software for any purpose.
|
||||
* It is provided "as is" without express or implied warranty.
|
||||
*
|
||||
* METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997-2003 by The XFree86 Project, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name of the copyright holder(s)
|
||||
* and author(s) shall not be used in advertising or otherwise to promote
|
||||
* the sale, use or other dealings in this Software without prior written
|
||||
* authorization from the copyright holder(s) and author(s).
|
||||
*/
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include "sym.h"
|
||||
#include "misc.h"
|
||||
#include "mi.h"
|
||||
#include "mibank.h"
|
||||
#include "miwideline.h"
|
||||
#include "mibstore.h"
|
||||
#include "cursor.h"
|
||||
#include "mipointer.h"
|
||||
#include "migc.h"
|
||||
#include "miline.h"
|
||||
#include "mizerarc.h"
|
||||
#include "mifillarc.h"
|
||||
#include "micmap.h"
|
||||
#include "mioverlay.h"
|
||||
#ifdef PANORAMIX
|
||||
#include "resource.h"
|
||||
#include "panoramiX.h"
|
||||
#endif
|
||||
#ifdef RENDER
|
||||
#include "mipict.h"
|
||||
#endif
|
||||
#ifdef COMPOSITE
|
||||
#include "cw.h"
|
||||
#endif
|
||||
#ifdef DAMAGE
|
||||
#include "damage.h"
|
||||
#endif
|
||||
|
||||
/* mi things */
|
||||
|
||||
extern miPointerSpriteFuncRec miSpritePointerFuncs;
|
||||
|
||||
LOOKUP miLookupTab[] = {
|
||||
SYMFUNC(miClearToBackground)
|
||||
SYMFUNC(miSendGraphicsExpose)
|
||||
SYMFUNC(miModifyPixmapHeader)
|
||||
SYMFUNC(miHandleValidateExposures)
|
||||
SYMFUNC(miSetShape)
|
||||
SYMFUNC(miChangeBorderWidth)
|
||||
SYMFUNC(miShapedWindowIn)
|
||||
SYMFUNC(miRectIn)
|
||||
SYMFUNC(miZeroClipLine)
|
||||
SYMFUNC(miZeroDashLine)
|
||||
SYMFUNC(miClearDrawable)
|
||||
SYMFUNC(miPolyPoint)
|
||||
SYMFUNC(miStepDash)
|
||||
SYMFUNC(miIntersect)
|
||||
SYMFUNC(miRegionAppend)
|
||||
SYMFUNC(miRegionCopy)
|
||||
SYMFUNC(miRegionDestroy)
|
||||
SYMFUNC(miRegionEmpty)
|
||||
SYMFUNC(miRegionExtents)
|
||||
SYMFUNC(miRegionInit)
|
||||
SYMFUNC(miRegionNotEmpty)
|
||||
SYMFUNC(miRegionEqual)
|
||||
SYMFUNC(miRegionReset)
|
||||
SYMFUNC(miRegionUninit)
|
||||
SYMFUNC(miRegionValidate)
|
||||
SYMFUNC(miTranslateRegion)
|
||||
SYMFUNC(miHandleExposures)
|
||||
SYMFUNC(miPolyFillRect)
|
||||
SYMFUNC(miPolyFillArc)
|
||||
SYMFUNC(miImageGlyphBlt)
|
||||
SYMFUNC(miPolyGlyphBlt)
|
||||
SYMFUNC(miFillPolygon)
|
||||
SYMFUNC(miFillConvexPoly)
|
||||
SYMFUNC(miPolySegment)
|
||||
SYMFUNC(miZeroLine)
|
||||
SYMFUNC(miWideLine)
|
||||
SYMFUNC(miWideDash)
|
||||
SYMFUNC(miZeroPolyArc)
|
||||
SYMFUNC(miPolyArc)
|
||||
SYMFUNC(miCreateGCOps)
|
||||
SYMFUNC(miDestroyGCOps)
|
||||
SYMFUNC(miComputeCompositeClip)
|
||||
SYMFUNC(miChangeGC)
|
||||
SYMFUNC(miCopyGC)
|
||||
SYMFUNC(miDestroyGC)
|
||||
SYMFUNC(miChangeClip)
|
||||
SYMFUNC(miDestroyClip)
|
||||
SYMFUNC(miCopyClip)
|
||||
SYMFUNC(miPolyRectangle)
|
||||
SYMFUNC(miPolyText8)
|
||||
SYMFUNC(miPolyText16)
|
||||
SYMFUNC(miImageText8)
|
||||
SYMFUNC(miImageText16)
|
||||
SYMFUNC(miRegionCreate)
|
||||
SYMFUNC(miPaintWindow)
|
||||
SYMFUNC(miZeroArcSetup)
|
||||
SYMFUNC(miFillArcSetup)
|
||||
SYMFUNC(miFillArcSliceSetup)
|
||||
SYMFUNC(miFindMaxBand)
|
||||
SYMFUNC(miClipSpans)
|
||||
SYMFUNC(miAllocateGCPrivateIndex)
|
||||
SYMFUNC(miScreenInit)
|
||||
SYMFUNC(miGetScreenPixmap)
|
||||
SYMFUNC(miSetScreenPixmap)
|
||||
SYMFUNC(miPointerCurrentScreen)
|
||||
SYMFUNC(miRectAlloc)
|
||||
SYMFUNC(miInitializeBackingStore)
|
||||
SYMFUNC(miInitializeBanking)
|
||||
SYMFUNC(miModifyBanking)
|
||||
SYMFUNC(miCopyPlane)
|
||||
SYMFUNC(miCopyArea)
|
||||
SYMFUNC(miCreateScreenResources)
|
||||
SYMFUNC(miGetImage)
|
||||
SYMFUNC(miPutImage)
|
||||
SYMFUNC(miPushPixels)
|
||||
SYMFUNC(miPointerInitialize)
|
||||
SYMFUNC(miPointerPosition)
|
||||
SYMFUNC(miRecolorCursor)
|
||||
SYMFUNC(miPointerWarpCursor)
|
||||
SYMFUNC(miDCInitialize)
|
||||
SYMFUNC(miRectsToRegion)
|
||||
SYMFUNC(miPointInRegion)
|
||||
SYMFUNC(miInverse)
|
||||
SYMFUNC(miSubtract)
|
||||
SYMFUNC(miUnion)
|
||||
SYMFUNC(miPolyBuildEdge)
|
||||
SYMFUNC(miPolyBuildPoly)
|
||||
SYMFUNC(miRoundJoinClip)
|
||||
SYMFUNC(miRoundCapClip)
|
||||
SYMFUNC(miSetZeroLineBias)
|
||||
SYMFUNC(miResolveColor)
|
||||
SYMFUNC(miInitializeColormap)
|
||||
SYMFUNC(miInstallColormap)
|
||||
SYMFUNC(miUninstallColormap)
|
||||
SYMFUNC(miListInstalledColormaps)
|
||||
SYMFUNC(miExpandDirectColors)
|
||||
SYMFUNC(miCreateDefColormap)
|
||||
SYMFUNC(miClearVisualTypes)
|
||||
SYMFUNC(miSetVisualTypes)
|
||||
SYMFUNC(miSetVisualTypesAndMasks)
|
||||
SYMFUNC(miGetDefaultVisualMask)
|
||||
SYMFUNC(miSetPixmapDepths)
|
||||
SYMFUNC(miInitVisuals)
|
||||
SYMFUNC(miWindowExposures)
|
||||
SYMFUNC(miSegregateChildren)
|
||||
SYMFUNC(miHookInitVisuals)
|
||||
SYMFUNC(miPointerAbsoluteCursor)
|
||||
SYMFUNC(miPointerGetMotionEvents)
|
||||
SYMFUNC(miPointerGetMotionBufferSize)
|
||||
SYMFUNC(miOverlayCopyUnderlay)
|
||||
SYMFUNC(miOverlaySetTransFunction)
|
||||
SYMFUNC(miOverlayCollectUnderlayRegions)
|
||||
SYMFUNC(miInitOverlay)
|
||||
SYMFUNC(miOverlayComputeCompositeClip)
|
||||
SYMFUNC(miOverlayGetPrivateClips)
|
||||
SYMFUNC(miOverlaySetRootClip)
|
||||
SYMVAR(miEmptyBox)
|
||||
SYMVAR(miEmptyData)
|
||||
SYMVAR(miZeroLineScreenIndex)
|
||||
SYMVAR(miSpritePointerFuncs)
|
||||
SYMVAR(miPointerScreenIndex)
|
||||
SYMVAR(miInstalledMaps)
|
||||
SYMVAR(miInitVisualsProc)
|
||||
#ifdef RENDER
|
||||
SYMFUNC(miGlyphExtents)
|
||||
#endif
|
||||
#ifdef COMPOSITE
|
||||
SYMFUNC(miDisableCompositeWrapper)
|
||||
#endif
|
||||
#ifdef DAMAGE
|
||||
SYMFUNC(DamageDamageRegion)
|
||||
#endif
|
||||
|
||||
{0, 0}
|
||||
};
|
|
@ -1,5 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/os.c,v 1.4 2003/10/15 16:29:04 dawes Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999-2002 by The XFree86 Project, Inc.
|
||||
*
|
||||
|
@ -38,6 +36,7 @@
|
|||
* loader and by OS-specific modules.
|
||||
*/
|
||||
|
||||
#ifndef OSNAME
|
||||
#if defined(__linux__)
|
||||
#define OSNAME "linux"
|
||||
#elif defined(__FreeBSD__)
|
||||
|
@ -67,6 +66,7 @@
|
|||
#else
|
||||
#define OSNAME "unknown"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Return the OS name, and run-time OS version */
|
||||
|
||||
|
|
|
@ -1270,7 +1270,10 @@ xf86execl(const char *pathname, const char *arg, ...)
|
|||
#ifndef SELF_CONTAINED_WRAPPER
|
||||
xf86DisableIO();
|
||||
#endif
|
||||
setuid(getuid());
|
||||
if (setuid(getuid()) == -1) {
|
||||
ErrorF("xf86Execl: setuid() failed: %s\n", strerror(errno));
|
||||
exit(255);
|
||||
}
|
||||
#if !defined(SELF_CONTAINED_WRAPPER)
|
||||
/* set stdin, stdout to the consoleFD, and leave stderr alone */
|
||||
for (i = 0; i < 2; i++)
|
||||
|
|
|
@ -170,7 +170,10 @@ xf86writeConfigFile (const char *filename, XF86ConfigPtr cptr)
|
|||
strerror(errno));
|
||||
return 0;
|
||||
case 0: /* child */
|
||||
setuid(getuid());
|
||||
if (setuid(getuid() == -1)
|
||||
FatalError("xf86writeConfigFile(): "
|
||||
"setuid failed(%s)\n",
|
||||
strerror(errno));
|
||||
ret = doWriteConfigFile(filename, cptr);
|
||||
exit(ret);
|
||||
break;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
module_LTLIBRARIES = librac.la
|
||||
librac_la_LDFLAGS = -avoid-version
|
||||
librac_la_SOURCES = xf86RACmodule.c xf86RAC.c
|
||||
module_LIBRARIES = librac.a
|
||||
librac_a_SOURCES = xf86RAC.c
|
||||
|
||||
sdk_HEADERS = xf86RAC.h
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* $XFree86: xc/programs/Xserver/hw/xfree86/rac/xf86RAC.c,v 1.5 1999/06/12 17:30:21 dawes Exp $ */
|
||||
|
||||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
@ -243,12 +241,12 @@ static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
|
|||
int nRect, xRectangle *rects);
|
||||
#endif
|
||||
|
||||
GCFuncs RACGCFuncs = {
|
||||
static GCFuncs RACGCFuncs = {
|
||||
RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
|
||||
RACChangeClip, RACDestroyClip, RACCopyClip
|
||||
};
|
||||
|
||||
GCOps RACGCOps = {
|
||||
static GCOps RACGCOps = {
|
||||
RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea,
|
||||
RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment,
|
||||
RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect,
|
||||
|
@ -257,13 +255,13 @@ GCOps RACGCOps = {
|
|||
{NULL} /* devPrivate */
|
||||
};
|
||||
|
||||
miPointerSpriteFuncRec RACSpriteFuncs = {
|
||||
static miPointerSpriteFuncRec RACSpriteFuncs = {
|
||||
RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
|
||||
RACSpriteMoveCursor
|
||||
};
|
||||
|
||||
int RACScreenIndex = -1;
|
||||
int RACGCIndex = -1;
|
||||
static int RACScreenIndex = -1;
|
||||
static int RACGCIndex = -1;
|
||||
static unsigned long RACGeneration = 0;
|
||||
|
||||
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
#ifdef HAVE_XORG_CONFIG_H
|
||||
#include <xorg-config.h>
|
||||
#endif
|
||||
|
||||
#include "xf86Module.h"
|
||||
|
||||
static XF86ModuleVersionInfo racVersRec =
|
||||
{
|
||||
"rac",
|
||||
MODULEVENDORSTRING,
|
||||
MODINFOSTRING1,
|
||||
MODINFOSTRING2,
|
||||
XORG_VERSION_CURRENT,
|
||||
1, 0, 0,
|
||||
ABI_CLASS_VIDEODRV, /* requires the video driver ABI */
|
||||
ABI_VIDEODRV_VERSION,
|
||||
MOD_CLASS_NONE,
|
||||
{0,0,0,0}
|
||||
};
|
||||
|
||||
_X_EXPORT XF86ModuleData racModuleData = { &racVersRec, NULL, NULL };
|
|
@ -0,0 +1,2 @@
|
|||
gtf.1
|
||||
gtf.1x
|
|
@ -0,0 +1,3 @@
|
|||
pcitweak.1
|
||||
pcitweak.1x
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
scanpci.1
|
||||
scanpci.1x
|
|
@ -0,0 +1,2 @@
|
|||
xorgcfg.1
|
||||
xorgcfg.1x
|
|
@ -0,0 +1 @@
|
|||
xorgconfig.1
|
|
@ -97,8 +97,8 @@ SOFTWARE.
|
|||
*/
|
||||
static GCFuncs vgaGCFuncs = {
|
||||
xf4bppValidateGC,
|
||||
(void (*)())NoopDDA,
|
||||
(void (*)())NoopDDA,
|
||||
(void (*)(GCPtr, unsigned long))NoopDDA,
|
||||
(void (*)(GCPtr, unsigned long, GCPtr))NoopDDA,
|
||||
xf4bppDestroyGC,
|
||||
xf4bppChangeClip,
|
||||
xf4bppDestroyClip,
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Xnest.1
|
||||
Xnest.1x
|
|
@ -1,4 +1,4 @@
|
|||
SUBDIRS = doc pcl pcl-mono raster ps etc
|
||||
SUBDIRS = doc pcl pcl-mono raster ps etc config
|
||||
|
||||
bin_PROGRAMS = Xprt
|
||||
|
||||
|
@ -9,8 +9,8 @@ Xprt_CFLAGS = @SERVER_DEFINES@ @DIX_CFLAGS@ @XPRINT_CFLAGS@ \
|
|||
|
||||
Xprt_LDFLAGS = -L$(top_srcdir)
|
||||
Xprt_LDADD = @XPRINT_LIBS@ ps/libps.la raster/libraster.la \
|
||||
pcl/libpcl.la pcl-mono/libpcl.la ../fb/libfb.la \
|
||||
../render/librender.la ../mi/libmi.la ../Xext/libXext.la \
|
||||
pcl/libpcl.la pcl-mono/libpcl.la ../../fb/libfb.la \
|
||||
../../render/librender.la ../../mi/libmi.la ../../Xext/libXext.la \
|
||||
@FREETYPE_LIBS@
|
||||
|
||||
miinitext-wrapper.c:
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue