Don't overload uname but set personality in library constructor
This fixes planAhead crashing on startup
This commit is contained in:
parent
9f78065e21
commit
daa4fc041d
34
usb-driver.c
34
usb-driver.c
@ -41,6 +41,8 @@
|
|||||||
#include <bits/wordsize.h>
|
#include <bits/wordsize.h>
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
|
#include <syscall.h>
|
||||||
|
#include <linux/personality.h>
|
||||||
#include "usb-driver.h"
|
#include "usb-driver.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "xpcu.h"
|
#include "xpcu.h"
|
||||||
@ -655,24 +657,6 @@ int semop (int __semid, struct sembuf *__sops, size_t __nsops) {
|
|||||||
}
|
}
|
||||||
#endif
|
#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);
|
|
||||||
|
|
||||||
if (ret == 0 && (!strcmp(__name->machine, "x86_64"))) {
|
|
||||||
strcpy(__name->machine, "i686");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ugly hack for ISE 12. They don't seem to open /proc/modules with
|
* Ugly hack for ISE 12. They don't seem to open /proc/modules with
|
||||||
* open() anymore...
|
* open() anymore...
|
||||||
@ -683,3 +667,17 @@ int _Z14isModuleLoadedPci(char *module_name, int i) {
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __attribute__ ((constructor)) libusbdriver_init(void) {
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
struct utsname un;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = uname(&un);
|
||||||
|
|
||||||
|
if (ret == 0 && (!strcmp(un.machine, "x86_64"))) {
|
||||||
|
DPRINTF("setting 32bit personality\n");
|
||||||
|
(long)syscall(SYS_personality, PER_LINUX32);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user