diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c index b3978f7bf..c7d3fae7a 100644 --- a/hw/xfree86/common/xf86Helper.c +++ b/hw/xfree86/common/xf86Helper.c @@ -2448,44 +2448,25 @@ xf86LoaderCheckSymbol(const char *name) return LoaderSymbol(name) != NULL; } +/* These two are just ABI stubs, they don't do anything in dlloader world */ _X_EXPORT void xf86LoaderReqSymLists(const char **list0, ...) { - va_list ap; - - va_start(ap, list0); - LoaderVReqSymLists(list0, ap); - va_end(ap); } _X_EXPORT void xf86LoaderReqSymbols(const char *sym0, ...) { - va_list ap; - - va_start(ap, sym0); - LoaderVReqSymbols(sym0, ap); - va_end(ap); } _X_EXPORT void xf86LoaderRefSymLists(const char **list0, ...) { - va_list ap; - - va_start(ap, list0); - LoaderVRefSymLists(list0, ap); - va_end(ap); } _X_EXPORT void xf86LoaderRefSymbols(const char *sym0, ...) { - va_list ap; - - va_start(ap, sym0); - LoaderVRefSymbols(sym0, ap); - va_end(ap); } diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c index a5c5b2c8e..42a9d3cd3 100644 --- a/hw/xfree86/loader/loader.c +++ b/hw/xfree86/loader/loader.c @@ -97,22 +97,6 @@ static int refCount[MAX_HANDLE]; */ static int moduleseq = 0; -typedef struct { - int num; - const char **list; -} symlist; - -/* - * List of symbols that may be referenced, and which are allowed to be - * unresolved providing that they don't appear on the "reqired" list. - */ -static symlist refList = { 0, NULL }; - -/* List of symbols that must not be unresolved */ -static symlist reqList = { 0, NULL }; - -static int fatalReqSym = 0; - /* Prototypes for static functions. */ static loaderPtr _LoaderListPush(void); static loaderPtr _LoaderListPop(int); @@ -300,165 +284,25 @@ _LoaderModuleToName(int module) return 0; } -/* - * Add a list of symbols to the referenced list. - */ - -static void -AppendSymbol(symlist * list, const char *sym) -{ - list->list = xnfrealloc(list->list, (list->num + 1) * sizeof(char **)); - /* copy the symbol, since it comes from a module - that can be unloaded later */ - list->list[list->num] = xnfstrdup(sym); - list->num++; -} - -static void -AppendSymList(symlist * list, const char **syms) -{ - while (*syms) { - AppendSymbol(list, *syms); - syms++; - } -} - -static int -SymInList(symlist * list, char *sym) -{ - int i; - - for (i = 0; i < list->num; i++) - if (strcmp(list->list[i], sym) == 0) - return 1; - - return 0; -} - -void -LoaderVRefSymbols(const char *sym0, va_list args) -{ - const char *s; - - if (sym0 == NULL) - return; - - s = sym0; - do { - AppendSymbol(&refList, s); - s = va_arg(args, const char *); - } while (s != NULL); -} - +/* These four are just ABI stubs */ _X_EXPORT void LoaderRefSymbols(const char *sym0, ...) { - va_list ap; - - va_start(ap, sym0); - LoaderVRefSymbols(sym0, ap); - va_end(ap); -} - -void -LoaderVRefSymLists(const char **list0, va_list args) -{ - const char **l; - - if (list0 == NULL) - return; - - l = list0; - do { - AppendSymList(&refList, l); - l = va_arg(args, const char **); - } while (l != NULL); } _X_EXPORT void LoaderRefSymLists(const char **list0, ...) { - va_list ap; - - va_start(ap, list0); - LoaderVRefSymLists(list0, ap); - va_end(ap); -} - -void -LoaderVReqSymLists(const char **list0, va_list args) -{ - const char **l; - - if (list0 == NULL) - return; - - l = list0; - do { - AppendSymList(&reqList, l); - l = va_arg(args, const char **); - } while (l != NULL); } _X_EXPORT void LoaderReqSymLists(const char **list0, ...) { - va_list ap; - - va_start(ap, list0); - LoaderVReqSymLists(list0, ap); - va_end(ap); -} - -void -LoaderVReqSymbols(const char *sym0, va_list args) -{ - const char *s; - - if (sym0 == NULL) - return; - - s = sym0; - do { - AppendSymbol(&reqList, s); - s = va_arg(args, const char *); - } while (s != NULL); } _X_EXPORT void LoaderReqSymbols(const char *sym0, ...) { - va_list ap; - - va_start(ap, sym0); - LoaderVReqSymbols(sym0, ap); - va_end(ap); -} - -/* - * _LoaderHandleUnresolved() decides what to do with an unresolved - * symbol. Symbols that are not on the "referenced" or "required" lists - * get a warning if they are unresolved. Symbols that are on the "required" - * list generate a fatal error if they are unresolved. - */ - -int -_LoaderHandleUnresolved(char *symbol, char *module) -{ - int fatalsym = 0; - - if (xf86ShowUnresolved && !fatalsym) { - if (SymInList(&reqList, symbol)) { - fatalReqSym = 1; - ErrorF("Required symbol %s from module %s is unresolved!\n", - symbol, module); - } - if (!SymInList(&refList, symbol)) { - ErrorF("Symbol %s from module %s is unresolved!\n", - symbol, module); - } - } - return (fatalsym); } /* Public Interface to the loader. */ @@ -578,15 +422,11 @@ LoaderSymbol(const char *sym) return (DLFindSymbol(sym)); } +/* more stub */ _X_EXPORT int LoaderCheckUnresolved(int delay_flag) { - int ret = 0; - - if (fatalReqSym) - FatalError("Some required symbols were unresolved\n"); - - return ret; + return 0; } int diff --git a/hw/xfree86/loader/loaderProcs.h b/hw/xfree86/loader/loaderProcs.h index 0e77e6b3a..324fa9e2b 100644 --- a/hw/xfree86/loader/loaderProcs.h +++ b/hw/xfree86/loader/loaderProcs.h @@ -103,11 +103,6 @@ ModuleDescPtr AddSibling(ModuleDescPtr head, ModuleDescPtr new); void LoaderSetPath(const char *path); void LoaderSortExtensions(void); -void LoaderVReqSymLists(const char **, va_list args); -void LoaderVReqSymbols(const char *, va_list args); -void LoaderVRefSymLists(const char **, va_list args); -void LoaderVRefSymbols(const char *, va_list args); - void LoaderShowStack(void); void *LoaderSymbolHandle(const char *, int); int LoaderUnload(int);