debrix/hw/xorg/loader Makefile.am, 1.3, 1.4 dlloader.c, 1.2, 1.3 dlloader.h, 1.3, 1.4 loader.c, 1.3, 1.4 loader.h, 1.2, 1.3 loaderProcs.h, 1.2, 1.3 loadmod.c, 1.3, 1.4 xf86sym.c, 1.3, 1.4

Daniel Stone xserver-commit at pdx.freedesktop.org
Thu Jul 1 10:49:53 PDT 2004


Committed by: daniel

Update of /cvs/xserver/debrix/hw/xorg/loader
In directory pdx:/tmp/cvs-serv31934/hw/xorg/loader

Modified Files:
	Makefile.am dlloader.c dlloader.h loader.c loader.h 
	loaderProcs.h loadmod.c xf86sym.c 
Log Message:
2004-06-29  Daniel Stone  <daniel at freedesktop.org>

	* configure.ac:
	Made CFLAGS a little less embarassingly large; fix it so the script
	actually runs and works fine (no more sed errors); remove XF86keysym.h
	check, which probably never actually worked. Get rid of INCLUDES;
	merge it into CFLAGS.

	* */Makefile.am:
	Sanitise INCLUDES/CFLAGS usage to radically decrease length of gcc
	lines.

	* include/Makefile.am:
	Make debrix.h depend on config.h, so they stay in sync. Oops.

	* hw/xorg/int10/xf86int10module.c:
	Change int10VersRec declaration from static, so debrixInit can see it.

	* hw/xorg/common/xf86KbdLnx.c:
	* hw/xorg/os-support/linux/lnx_KbdMap.c:
	Axe unused DECkeysym.h header dep.

	* hw/xorg/include/X11/extensions/Makefile.am:
	Finally fix the ext_HEADERS debacle.

	* hw/xorg/loader/dlloader.c:
	* hw/xorg/loader/loader.c:
	dlopen() NULL at startup, and include it in dlsym() searches, so we
	can find symbols included in the main binary with the standard module
	search.

	* hw/xorg/loader/loader.c:
	* hw/xorg/loader/loadmod.c:
	* hw/xorg/loader/xf86sym.c:
	* hw/xorg/common/xf86Init.c:
	Change loader API to introduce a new 'builtin' class, which doesn't
	actually load a module, but goes through all the motions; get rid of
	baseModules list for the time being (we don't want bitmap, and pcidata
	is already loaded). Explicitly add all ModuleData objects being loaded
	to xf86sym.c, so they don't get 'optimised' out.
	
	* hw/xorg/common/debrixInit.c:
	* hw/xorg/common/xf86Init.c:
	Add new debrixInit() function, which adds a few modules as builtins.

	* hw/xorg/loader/xf86sym.c:
	* hw/xorg/os-support/linux/Makefile.am:
	Re-enable a few missing os-support functions (xf86UDelay, xf86IODelay,
	xf86BusToMem, xf86MemToBus, xf86LoadKernelModule).

	* configure.ac:
	* fb/Makefile.am:
	* miext/shadow/Makefile.am:
	Make fb and shadow modular once more.

	* fb/fb.h:
	* render/filter.c:
	* render/picture.c:
	* include/picturestr.h:
	Rolled back to X.Org versions until I can figure out why pictures
	don't actually display in most cases.

	The following two are thanks to Jabuk Piotr C?apa.
	* os/xdmauth.c:
	"Xdmcp.h" -> <X11/Xdmcp.h>

	* hw/xorg/os-support/shared/drm/kernel/drm.h:
	Guard linux/config.h inclusion with #ifdef __KERNEL__.


Index: Makefile.am
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Makefile.am	28 Jun 2004 05:02:25 -0000	1.3
+++ Makefile.am	1 Jul 2004 17:49:49 -0000	1.4
@@ -1,8 +1,8 @@
 noinst_LIBRARIES = libloader.a
-AM_CFLAGS = $(XORG_CFLAGS) -DDLOPEN_SUPPORT -DHAS_SHM -DXFree86LOADER
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../parser -I$(srcdir)/../vbe \
+AM_CFLAGS = -DDLOPEN_SUPPORT -DHAS_SHM_
+INCLUDES = -I$(srcdir)/../parser -I$(srcdir)/../vbe \
            -I$(srcdir)/../ddc -I$(srcdir)/../int10 -I$(srcdir)/../i2c \
-           -I$(srcdir)/../fbdevhw -I$(srcdir)/../xaa
+           -I$(srcdir)/../fbdevhw -I$(srcdir)/../scanpci -I$(srcdir)/../xaa
 
 libloader_a_SOURCES = \
         dlloader.c \

Index: dlloader.c
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/dlloader.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dlloader.c	10 Jun 2004 19:40:45 -0000	1.2
+++ dlloader.c	1 Jul 2004 17:49:49 -0000	1.3
@@ -102,7 +102,7 @@
     n = xf86loadermalloc(strlen(name) + 2);
     sprintf(n, "_%s", name);
 #endif
-
+    
     (void)dlerror();		/* Clear out any previous error */
     for (l = dlModuleList; l != NULL; l = l->next) {
 #ifdef NEED_UNDERSCORE_FOR_DLLSYM
@@ -127,6 +127,33 @@
 /*
  * public interface
  */
+int
+DLLoaderInit(int moduleseq)
+{
+    DLModuleList *l;
+    DLModulePtr dlfile;
+    int newModuleSeq = ++moduleseq;
+
+    if ((dlfile = xf86loadercalloc(1, sizeof(DLModuleRec))) == NULL) {
+	ErrorF("Unable to allocate DLModuleRec\n");
+	return -1;
+    }
+    dlfile->handle = newModuleSeq;
+    dlfile->dlhandle = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);
+    if (dlfile->dlhandle == NULL) {
+	ErrorF("dlopen: %s\n", dlerror());
+	xf86loaderfree(dlfile);
+	return -1;
+    }
+    ErrorF("dlloader: main binary loaded.\n");
+    /* Add main binary to the module list */
+    l = xf86loadermalloc(sizeof(DLModuleList));
+    l->module = dlfile;
+    l->next = dlModuleList;
+    dlModuleList = l;
+    
+    return newModuleSeq; 
+}
 void *
 DLLoadModule(loaderPtr modrec, int fd, LOOKUP ** ppLookup)
 {

Index: dlloader.h
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/dlloader.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- dlloader.h	10 Jun 2004 19:40:45 -0000	1.3
+++ dlloader.h	1 Jul 2004 17:49:49 -0000	1.4
@@ -26,6 +26,7 @@
 #endif
 #ifndef _DLLOADER_H
 #define _DLLOADER_H
+extern int DLLoaderInit(int);
 extern void *DLLoadModule(loaderPtr, int, LOOKUP **);
 extern void DLResolveSymbols(void *);
 extern int DLCheckForUnresolved(void *);

Index: loader.c
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/loader.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- loader.c	10 Jun 2004 19:40:45 -0000	1.3
+++ loader.c	1 Jul 2004 17:49:49 -0000	1.4
@@ -62,6 +62,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <string.h>
+#include <dlfcn.h>
 #if defined(linux) && \
     (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__) \
     || defined(__amd64__))
@@ -243,6 +244,40 @@
 static int _GetModuleType(int, long);
 static loaderPtr _LoaderListPush(void);
 static loaderPtr _LoaderListPop(int);
+
+typedef struct {
+	int handle;
+} BuiltInModuleRec, *BuiltInModulePtr;
+
+ /*ARGSUSED*/ void
+*BuiltInLoadModule(loaderPtr modrec, int arfd, LOOKUP ** ppLookup)
+{
+	BuiltInModulePtr m;
+	if ((m = xf86loadercalloc(1, sizeof(BuiltInModuleRec))) == NULL) {
+		ErrorF("Unable to allocate BuiltInModuleRec\n");
+		return NULL;
+	}
+	m->handle = modrec->handle;
+	return (void *)m;
+}
+ /*ARGSUSED*/ static void
+BuiltInResolveSymbols(void *unused)
+{
+}
+ /*ARGSUSED*/ static int
+BuiltInCheckForUnresolved(void *v)
+{
+    return 0;
+}
+ /*ARGSUSED*/ static char *
+BuiltInAddressToSection(void *modptr, unsigned long address)
+{
+    return NULL;
+}
+ /*ARGSUSED*/ static void
+BuiltInUnloadModule(void *unused2)
+{
+}
  /*ARGSUSED*/ static void
 ARCHIVEResolveSymbols(void *unused)
 {
@@ -325,6 +360,11 @@
      ELFAddressToSection,
      ELFUnloadModule, {0, 0, 0, 0, 0}},
 #endif
+    {BuiltInLoadModule,
+     BuiltInResolveSymbols,
+     BuiltInCheckForUnresolved,
+     BuiltInAddressToSection,
+     BuiltInUnloadModule, {0, 0, 0, 0, 0}},
 };
 
 int numloaders = sizeof(funcs) / sizeof(loader_funcs);
@@ -371,6 +411,11 @@
     if (osname)
 	xf86MsgVerb(X_INFO, 2, "Loader running on %s\n", osname);
 
+#ifdef DLOPEN_SUPPORT
+    if ((moduleseq = DLLoaderInit(moduleseq)) == -1)
+        FatalError("Couldn't dlopen() main binary!\n");
+#endif
+
 #if defined(linux) && \
     (defined(__alpha__) || defined(__powerpc__) || defined(__ia64__) \
      || ( defined __amd64__ && ! defined UseMMAP && ! defined DoMMAPedMerge))
@@ -1202,7 +1247,7 @@
 
 int
 LoaderOpen(const char *module, const char *cname, int handle,
-	   int *errmaj, int *errmin, int *wasLoaded)
+	   int *errmaj, int *errmin, int *wasLoaded, int fake)
 {
     loaderPtr tmp;
     int new_handle, modtype;
@@ -1263,25 +1308,29 @@
     freeHandles[new_handle] = HANDLE_USED;
     refCount[new_handle] = 1;
 
-    if ((fd = open(module, O_RDONLY)) < 0) {
-	xf86Msg(X_ERROR, "Unable to open %s\n", module);
-	freeHandles[new_handle] = HANDLE_FREE;
-	if (errmaj)
-	    *errmaj = LDR_NOMODOPEN;
-	if (errmin)
-	    *errmin = errno;
-	return -1;
-    }
+    if (!fake) {
+	    if ((fd = open(module, O_RDONLY)) < 0) {
+		xf86Msg(X_ERROR, "Unable to open %s\n", module);
+		freeHandles[new_handle] = HANDLE_FREE;
+		if (errmaj)
+		    *errmaj = LDR_NOMODOPEN;
+		if (errmin)
+		    *errmin = errno;
+		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;
+	    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;
+    	}
     }
+    else
+	    modtype = LD_BUILTIN;
 
     tmp = _LoaderListPush();
     tmp->name = xf86loadermalloc(strlen(module) + 1);
@@ -1303,6 +1352,9 @@
 	return -1;
     }
 
+    if (fake)
+        return new_handle;
+
     if (tmp->private != (void *)-1L) {
 	LoaderAddSymbols(new_handle, tmp->module, pLookup);
 	xf86loaderfree(pLookup);

Index: loader.h
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/loader.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- loader.h	10 Jun 2004 19:40:45 -0000	1.2
+++ loader.h	1 Jul 2004 17:49:49 -0000	1.3
@@ -76,6 +76,7 @@
 #define LD_AOUTOBJECT   4
 #define LD_AOUTDLOBJECT	5
 #define LD_ELFDLOBJECT	6
+#define LD_BUILTIN      7
 #define LD_PROCESSED_ARCHIVE -1
 /* #define UNINIT_SECTION */
 #define HANDLE_IN_HASH_ENTRY
@@ -255,7 +256,7 @@
 char *_LoaderModuleToName(int);
 int _LoaderAddressToSection(const unsigned long, const char **,
 			    const char **);
-int LoaderOpen(const char *, const char *, int, int *, int *, int *);
+int LoaderOpen(const char *, const char *, int, int *, int *, int *, int);
 int LoaderHandleOpen(int);
 
 /*

Index: loaderProcs.h
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/loaderProcs.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- loaderProcs.h	10 Jun 2004 19:40:45 -0000	1.2
+++ loaderProcs.h	1 Jul 2004 17:49:49 -0000	1.3
@@ -87,7 +87,7 @@
 			 int *);
 ModuleDescPtr LoadModule(const char *, const char *, const char **,
 			 const char **, pointer, const XF86ModReqInfo *,
-			 int *, int *);
+			 int *, int *, int);
 ModuleDescPtr LoadSubModule(ModuleDescPtr, const char *,
 			    const char **, const char **, pointer,
 			    const XF86ModReqInfo *, int *, int *);

Index: loadmod.c
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/loadmod.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- loadmod.c	10 Jun 2004 19:40:45 -0000	1.3
+++ loadmod.c	1 Jul 2004 17:49:49 -0000	1.4
@@ -781,7 +781,7 @@
     }
 
     submod = LoadModule(module, NULL, subdirlist, patternlist, options,
-			modreq, errmaj, errmin);
+			modreq, errmaj, errmin, 0);
     if (submod) {
 	parent->child = AddSibling(parent->child, submod);
 	submod->parent = parent;
@@ -856,13 +856,14 @@
  *              "don't care" values are ~0 for numbers, and NULL for strings
  * errmaj       Major error return.
  * errmin       Minor error return.
+ * builtin      Indicate that driver is 'built-in'; don't actually load it.
  *
  */
 
 ModuleDescPtr
 LoadModule(const char *module, const char *path, const char **subdirlist,
 	   const char **patternlist, pointer options,
-	   const XF86ModReqInfo * modreq, int *errmaj, int *errmin)
+	   const XF86ModReqInfo * modreq, int *errmaj, int *errmin, int builtin)
 {
     XF86ModuleData *initdata = NULL;
     char **pathlist = NULL;
@@ -901,65 +902,77 @@
     }
     ret = NewModuleDesc(name);
     if (!ret) {
-	if (errmaj)
-	    *errmaj = LDR_NOMEM;
-	if (errmin)
-	    *errmin = 0;
-	goto LoadModule_fail;
-    }
-
-    pathlist = InitPathList(path);
-    if (!pathlist) {
-	/* This could be a malloc failure too */
-	if (errmaj)
-	    *errmaj = LDR_BADUSAGE;
-	if (errmin)
-	    *errmin = 1;
-	goto LoadModule_fail;
+        if (errmaj)
+            *errmaj = LDR_NOMEM;
+        if (errmin)
+            *errmin = 0;
+        goto LoadModule_fail;
     }
 
-    /* 
-     * if the module name is not a full pathname, we need to
-     * check the elements in the path
-     */
+    if (!builtin) {
+        /* 
+         * if the module name is not a full pathname, we need to
+         * check the elements in the path
+         */
 #ifndef __UNIXOS2__
-    if (module[0] == '/')
-	found = xstrdup(module);
+        if (module[0] == '/')
+        	found = xstrdup(module);
 #else
-    /* accept a drive name here */
-    if (isalpha(module[0]) && module[1] == ':' && module[2] == '/')
-	found = xstrdup(module);
+        /* accept a drive name here */
+        if (isalpha(module[0]) && module[1] == ':' && module[2] == '/')
+    	     found = xstrdup(module);
 #endif
-    path_elem = pathlist;
-    while (!found && *path_elem != NULL) {
-	found = FindModule(m, *path_elem, subdirlist, patterns);
-	path_elem++;
-	/*
-	 * When the module name isn't the canonical name, search for the
-	 * former if no match was found for the latter.
-	 */
-	if (!*path_elem && m == name) {
-	    path_elem = pathlist;
-	    m = (char *)module;
-	}
-    }
+        pathlist = InitPathList(path);
+        if (!pathlist) {
+    		/* This could be a malloc failure too */
+    		if (errmaj)
+    		    *errmaj = LDR_BADUSAGE;
+    		if (errmin)
+    		    *errmin = 1;
+    		goto LoadModule_fail;
+     	}
+        path_elem = pathlist;
+        while (!found && *path_elem != NULL) {
+            found = FindModule(m, *path_elem, subdirlist, patterns);
+            path_elem++;
+            /*
+             * When the module name isn't the canonical name, search for the
+             * former if no match was found for the latter.
+             */
+            if (!*path_elem && m == name) {
+                path_elem = pathlist;
+                m = (char *)module;
+            }
+        }
 
-    /* 
-     * did we find the module?
-     */
-    if (!found) {
-	xf86Msg(X_WARNING, "Warning, couldn't open module %s\n", module);
-	if (errmaj)
-	    *errmaj = LDR_NOENT;
-	if (errmin)
-	    *errmin = 0;
-	goto LoadModule_fail;
+        /* 
+         * did we find the module?
+        */
+        if (!found) {
+            xf86Msg(X_WARNING, "Warning, couldn't open module %s\n", module);
+            /* daniel: try to continue as a fake, as built-ins will only be
+	     * found this way. */
+	    ret->handle = LoaderOpen(name, name, 0, errmaj, errmin, &wasLoaded, 1);
+	    if (ret->handle < 0) {
+	        if (errmaj)
+       	            *errmaj = LDR_NOENT;
+       	        if (errmin)
+       	             *errmin = 0;
+                goto LoadModule_fail;
+            }
+        }
+	else
+            ret->handle = LoaderOpen(found, name, 0, errmaj, errmin, &wasLoaded, builtin);
     }
-    ret->handle = LoaderOpen(found, name, 0, errmaj, errmin, &wasLoaded);
+    else {
+        ret->handle = LoaderOpen(name, name, 0, errmaj, errmin, &wasLoaded, builtin);
+    }
+
     if (ret->handle < 0)
-	goto LoadModule_fail;
+        goto LoadModule_fail;
 
-    ret->filename = xstrdup(found);
+    if (!builtin)
+	    ret->filename = xstrdup(found);
 
     /*
      * now check if the special data object <modulename>ModuleData is
@@ -977,62 +990,62 @@
     strcat(p, "ModuleData");
     initdata = LoaderSymbol(p);
     if (initdata) {
-	ModuleSetupProc setup;
-	ModuleTearDownProc teardown;
-	XF86ModuleVersionInfo *vers;
+    	ModuleSetupProc setup;
+	    ModuleTearDownProc teardown;
+	    XF86ModuleVersionInfo *vers;
 
-	vers = initdata->vers;
-	setup = initdata->setup;
-	teardown = initdata->teardown;
+	    vers = initdata->vers;
+	    setup = initdata->setup;
+	    teardown = initdata->teardown;
 
-	if (!wasLoaded) {
-	    if (vers) {
-		if (!CheckVersion(module, vers, modreq)) {
-		    if (errmaj)
-			*errmaj = LDR_MISMATCH;
-		    if (errmin)
-			*errmin = 0;
-		    goto LoadModule_fail;
-		}
-	    } else {
-		xf86Msg(X_ERROR,
-			"LoadModule: Module %s does not supply"
-			" version information\n", module);
-		if (errmaj)
-		    *errmaj = LDR_INVALID;
-		if (errmin)
-		    *errmin = 0;
-		goto LoadModule_fail;
-	    }
-	}
-	if (setup)
-	    ret->SetupProc = setup;
-	if (teardown)
-	    ret->TearDownProc = teardown;
-	ret->path = path;
-	ret->VersionInfo = vers;
+	    if (!wasLoaded) {
+            if (vers) {
+                if (!CheckVersion(module, vers, modreq)) {
+                    if (errmaj)
+                        *errmaj = LDR_MISMATCH;
+                    if (errmin)
+                        *errmin = 0;
+                    goto LoadModule_fail;
+                }
+            } else {
+                xf86Msg(X_ERROR,
+                        "LoadModule: Module %s does not supply"
+                        " version information\n", module);
+                if (errmaj)
+                    *errmaj = LDR_INVALID;
+                if (errmin)
+                    *errmin = 0;
+                goto LoadModule_fail;
+            }
+        }
+        if (setup)
+            ret->SetupProc = setup;
+        if (teardown)
+            ret->TearDownProc = teardown;
+        ret->path = path;
+        ret->VersionInfo = vers;
     } else {
-	/* No initdata is OK for external modules */
-	if (options == EXTERN_MODULE)
-	    goto LoadModule_exit;
+        /* No initdata is OK for external modules */
+        if (options == EXTERN_MODULE)
+            goto LoadModule_exit;
 
-	/* no initdata, fail the load */
-	xf86Msg(X_ERROR, "LoadModule: Module %s does not have a %s "
-		"data object.\n", module, p);
-	if (errmaj)
-	    *errmaj = LDR_INVALID;
-	if (errmin)
-	    *errmin = 0;
-	goto LoadModule_fail;
+        /* no initdata, fail the load */
+        xf86Msg(X_ERROR, "LoadModule: Module %s does not have a %s "
+                         "data object.\n", module, p);
+        if (errmaj)
+            *errmaj = LDR_INVALID;
+        if (errmin)
+            *errmin = 0;
+        goto LoadModule_fail;
     }
     if (ret->SetupProc) {
-	ret->TearDownData = ret->SetupProc(ret, options, errmaj, errmin);
-	if (!ret->TearDownData) {
-	    goto LoadModule_fail;
-	}
+        ret->TearDownData = ret->SetupProc(ret, options, errmaj, errmin);
+        if (!ret->TearDownData) {
+            goto LoadModule_fail;
+        }
     } else if (options) {
-	xf86Msg(X_WARNING, "Module Options present, but no SetupProc "
-		"available for %s\n", module);
+        xf86Msg(X_WARNING, "Module Options present, but no SetupProc "
+                "available for %s\n", module);
     }
     goto LoadModule_exit;
 
@@ -1064,7 +1077,7 @@
 	   int *errmaj, int *errmin)
 {
     return LoadModule(module, path, NULL, NULL, options, NULL, errmaj,
-		      errmin);
+		      errmin, 0);
 }
 
 void

Index: xf86sym.c
===================================================================
RCS file: /cvs/xserver/debrix/hw/xorg/loader/xf86sym.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- xf86sym.c	28 Jun 2004 00:46:33 -0000	1.3
+++ xf86sym.c	1 Jul 2004 17:49:49 -0000	1.4
@@ -77,6 +77,7 @@
 #include "xf86xvmc.h"
 #include "xf86cmap.h"
 #include "xf86fbman.h"
+#include "xf86ScanPci.h"
 #include "fbdevhw.h"
 #include "dgaproc.h"
 #include "dpmsproc.h"
@@ -238,6 +239,22 @@
 extern unsigned short ldw_brx(volatile unsigned char *, int);
 #endif
 
+extern XF86ModuleData ddcModuleData;
+extern XF86ModuleData fbModuleData;
+extern XF86ModuleData i2cModuleData;
+extern XF86ModuleData int10ModuleData;
+extern XF86ModuleData racModuleData;
+extern XF86ModuleData ramdacModuleData;
+extern XF86ModuleData shadowModuleData;
+extern XF86ModuleData shadowfbModuleData;
+extern XF86ModuleData pcidataModuleData;
+extern XF86ModuleData scanpciModuleData;
+extern XF86ModuleData vbeModuleData;
+extern XF86ModuleData vgahwModuleData;
+extern XF86ModuleData xaaModuleData;
+extern XF86ModuleData xf1bppModuleData;
+extern XF86ModuleData xf4bppModuleData;
+
 /* XFree86 things */
 
 LOOKUP xfree86LookupTab[] = {
@@ -257,19 +274,15 @@
     SYMFUNC(xf86MapDomainMemory)
     SYMFUNC(xf86MapDomainIO)
     SYMFUNC(xf86ReadDomainMemory)
-#if 0 /* XXX DS */
     SYMFUNC(xf86UDelay)
     SYMFUNC(xf86IODelay)
-#endif
     SYMFUNC(xf86SlowBcopy)
 #ifdef __alpha__
     SYMFUNC(xf86SlowBCopyToBus)
     SYMFUNC(xf86SlowBCopyFromBus)
 #endif
-#if 0 /* XXX DS */
     SYMFUNC(xf86BusToMem)
     SYMFUNC(xf86MemToBus)
-#endif
     SYMFUNC(xf86OpenSerial)
     SYMFUNC(xf86SetSerial)
     SYMFUNC(xf86SetSerialSpeed)
@@ -284,9 +297,7 @@
     SYMFUNC(xf86GetSerialModemState)
     SYMFUNC(xf86SerialModemSetBits)
     SYMFUNC(xf86SerialModemClearBits)
-#if 0 /* XXX DS */
     SYMFUNC(xf86LoadKernelModule)
-#endif
     SYMFUNC(xf86OSMouseInit)
     SYMFUNC(xf86OSKbdPreInit)
     SYMFUNC(xf86AgpGARTSupported)
@@ -1156,7 +1167,29 @@
     SYMVAR(pciNumBuses)
 
     /* fbdevhw.c */
-    SYMVAR(fbdevHWValidMode)
+    SYMFUNC(fbdevHWValidMode)
+
+    /* xf86ScanPci.c */
+    SYMFUNC(ScanPciFindPciNamesByDevice)
+
+    /* int10 */
+    SYMFUNC(xf86FreeInt10)
+
+    /* ddc */
+    SYMVAR(ddcModuleData)
+    SYMVAR(fbModuleData)
+    SYMVAR(i2cModuleData)
+    SYMVAR(int10ModuleData)
+    SYMVAR(racModuleData)
+    SYMVAR(ramdacModuleData)
+    SYMVAR(scanpciModuleData)
+    SYMVAR(shadowModuleData)
+    SYMVAR(shadowfbModuleData)
+    SYMVAR(vbeModuleData)
+    SYMVAR(vgahwModuleData)
+    SYMVAR(xaaModuleData)
+    SYMVAR(xf1bppModuleData)
+    SYMVAR(xf4bppModuleData)
 
     /* xaa */
     SYMVAR(XAACopyROP)




More information about the xserver-commit mailing list