mirror of https://github.com/xqemu/xqemu.git
personality fix - i386 interpreter fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@73 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
f48c3dd51a
commit
f801f97e04
|
@ -23,6 +23,9 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)
|
||||||
|
#include <sys/personality.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
|
|
||||||
|
@ -34,6 +37,12 @@ FILE *logfile = NULL;
|
||||||
int loglevel;
|
int loglevel;
|
||||||
const char *interp_prefix = CONFIG_QEMU_PREFIX "/qemu-i386";
|
const char *interp_prefix = CONFIG_QEMU_PREFIX "/qemu-i386";
|
||||||
|
|
||||||
|
#ifdef __i386__
|
||||||
|
/* Force usage of an ELF interpreter even if it is an ELF shared
|
||||||
|
object ! */
|
||||||
|
const char interp[] __attribute__((section(".interp"))) = "/lib/ld-linux.so.2";
|
||||||
|
#endif
|
||||||
|
|
||||||
/* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
|
/* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
|
||||||
we allocate a bigger stack. Need a better solution, for example
|
we allocate a bigger stack. Need a better solution, for example
|
||||||
by remapping the process stack directly at the right place */
|
by remapping the process stack directly at the right place */
|
||||||
|
@ -370,6 +379,13 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
if (argc <= 1)
|
if (argc <= 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
/* Set personality to X86_LINUX. May fail on unpatched kernels:
|
||||||
|
if so, they need to have munged paths themselves (eg. chroot,
|
||||||
|
hacked ld.so, whatever). */
|
||||||
|
if (personality(0x11) >= 0)
|
||||||
|
interp_prefix = "";
|
||||||
|
|
||||||
loglevel = 0;
|
loglevel = 0;
|
||||||
optind = 1;
|
optind = 1;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
|
|
Loading…
Reference in New Issue