Add back a simplified version of the loader static address tables.

If not taking the symbol addresses, linkage will break badly, as not
all symbols will be present, and it also requires changing library order,
and/or making some changes like the "libosandcommon".

  This table should be modified to be generated automatically, as
it is required to "fool" the compiler/loader into adding all required
symbols to the X Server.
This commit is contained in:
Paulo Cesar Pereira de Andrade 2008-12-05 17:01:09 -02:00
parent 44bef8b850
commit 466b0fca9b
3 changed files with 1216 additions and 4 deletions

View File

@ -19,4 +19,5 @@ libloader_a_SOURCES = \
loadext.c \
loadmod.c \
dlloader.c \
os.c
os.c \
xorgsym.c

View File

@ -74,7 +74,8 @@
#include "xf86.h"
#include "xf86Priv.h"
#include "compiler.h"
#include "sym.h"
extern void *xorgLookupTab[];
/*
* handles are used to identify files that are loaded. Even archives
@ -107,8 +108,8 @@ LoaderInit(void)
}
xf86MsgVerb(X_INFO, 2, "Loader magic: %p\n", (void *)
((long)dixLookupTab ^ (long)extLookupTab
^ (long)miLookupTab ^ (long)xfree86LookupTab));
((long)xorgLookupTab[0] ^ (long)xorgLookupTab[1]
^ (long)xorgLookupTab[2] ^ (long)xorgLookupTab[3]));
xf86MsgVerb(X_INFO, 2, "Module ABI versions:\n");
xf86ErrorFVerb(2, "\t%s: %d.%d\n", ABI_CLASS_ANSIC,
GET_ABI_MAJOR(LoaderVersionInfo.ansicVersion),

1210
hw/xfree86/loader/xorgsym.c Normal file

File diff suppressed because it is too large Load Diff