X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/4ba5d6d93194753c23f0d999ccf156dee2522fc3..80a14787b97779d86558f414d23f7058b8654c94:/usb-driver.c diff --git a/usb-driver.c b/usb-driver.c index 504a278..55a7463 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -41,6 +41,8 @@ #include #include #include +#include +#include #include "usb-driver.h" #include "config.h" #include "xpcu.h" @@ -655,28 +657,27 @@ int semop (int __semid, struct sembuf *__sops, size_t __nsops) { } #endif -#if __WORDSIZE == 32 -int uname (struct utsname *__name) { - static int (*func) (struct utsname*); - int ret; - - if (!func) - func = (int (*) (struct utsname*)) dlsym(RTLD_NEXT, "uname"); - - ret = (*func)(__name); +/* + * Ugly hack for ISE 12. They don't seem to open /proc/modules with + * open() anymore... + * echo '_Z14isModuleLoadedPci' | c++filt + */ +long int _Z14isModuleLoadedPci(char *module_name, int i) { + DPRINTF("_Z14isModuleLoadedPci: Checking for module %s (%d)\n", module_name, i); - if (ret == 0 && (!strcmp(__name->machine, "x86_64"))) { - strcpy(__name->machine, "i686"); - } - - return ret; + return 1; } -#endif -/* Ugly hack for ISE 12. They don't seem to open /proc/modules with - * open() anymore... */ -int _Z14isModuleLoadedPci(void) { - DPRINTF("Faking _Z14isModuleLoadedPci\n"); +static void __attribute__ ((constructor)) libusbdriver_init(void) { + #if __WORDSIZE == 32 + struct utsname un; + int ret; - return 1; + ret = uname(&un); + + if (ret == 0 && (!strcmp(un.machine, "x86_64"))) { + DPRINTF("setting 32bit personality\n"); + (long)syscall(SYS_personality, PER_LINUX32); + } + #endif }