Hello community, here is the log from the commit of package qemu for openSUSE:Factory checked in at Thu Oct 6 16:45:34 CEST 2011.
-------- --- openSUSE:Factory/qemu/qemu.changes 2011-09-29 12:53:30.000000000 +0200 +++ /mounts/work_src_done/STABLE/qemu/qemu.changes 2011-10-04 11:57:17.000000000 +0200 @@ -1,0 +2,17 @@ +Tue Oct 4 08:09:57 UTC 2011 - [email protected] + +- add binfmt misc handler binary patch from alex. This is a handler + which calls qemu with -0 argument and right parameters to avoid + broken runs due to different set $0 as on real hardware +- move arch specific patches at the end to avoid arch dep conflicts + with other patches +- enable linux-user build to get binfmt handler + +------------------------------------------------------------------- +Thu Sep 29 09:21:17 UTC 2011 - [email protected] + +- add 0021-implement-prlimit64-syscall.patch from upstream to avoid + output and confused configure scripts when testing gcc on armv7hl +- add 0022-fixing-smp-races.patch from alex to fix some SMP races + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- 0021-implement-prlimit64-syscall.patch 0022-fixing-smp-races.patch 0023-linux-user-add-binfmt-wrapper-for-argv-0-handling.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qemu.spec ++++++ --- /var/tmp/diff_new_pack.WjJh4m/_old 2011-10-06 16:45:24.000000000 +0200 +++ /var/tmp/diff_new_pack.WjJh4m/_new 2011-10-06 16:45:24.000000000 +0200 @@ -45,6 +45,9 @@ Patch18: 0018-qemu-0.14.1-mcast-udp.patch Patch19: 0019-linux-user-fix-openat.patch Patch20: 0020-linux-user-implement-reboot-syscall.patch +Patch21: 0021-implement-prlimit64-syscall.patch +Patch22: 0022-fixing-smp-races.patch +Patch23: 0023-linux-user-add-binfmt-wrapper-for-argv-0-handling.patch # this is to make lint happy Source300: rpmlintrc BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -57,6 +60,7 @@ BuildRequires: e2fsprogs-devel BuildRequires: libaio BuildRequires: libaio-devel +BuildRequires: libattr-devel BuildRequires: libgnutls-devel BuildRequires: libpcap-devel BuildRequires: ncurses-devel @@ -99,15 +103,18 @@ %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch16 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 %ifarch s390x ppc64 x86_64 # s390 target only builds on 64-bit machines %patch15 -p1 %patch17 -p1 %endif -%patch16 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 %build # build QEMU ++++++ 0001-qemu-0.7.0-amd64.patch ++++++ --- /var/tmp/diff_new_pack.WjJh4m/_old 2011-10-06 16:45:24.000000000 +0200 +++ /var/tmp/diff_new_pack.WjJh4m/_new 2011-10-06 16:45:24.000000000 +0200 @@ -8,10 +8,10 @@ x86_64.ld | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) -diff --git a/x86_64.ld b/x86_64.ld -index 46d8d4d..cce0a17 100644 ---- a/x86_64.ld -+++ b/x86_64.ld +Index: qemu-0.14.1/x86_64.ld +=================================================================== +--- qemu-0.14.1.orig/x86_64.ld ++++ qemu-0.14.1/x86_64.ld @@ -70,8 +70,6 @@ SECTIONS .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } @@ -32,6 +32,3 @@ .dynamic : { *(.dynamic) } .ctors : { --- -1.7.1 - ++++++ 0015-S-390-support.patch ++++++ ++++ 615 lines (skipped) ++++ between openSUSE:Factory/qemu/0015-S-390-support.patch ++++ and /mounts/work_src_done/STABLE/qemu/0015-S-390-support.patch ++++++ 0021-implement-prlimit64-syscall.patch ++++++ >From [email protected] Thu, 29 Sep 2011 11:00:25 +0200 Return-Path: <[email protected]> Received: from imap.suse.de ([unix socket]) by imap-int (Cyrus v2.2.12) with LMTPA; Thu, 29 Sep 2011 11:07:10 +0200 X-Sieve: CMU Sieve 2.2 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "relay.suse.de", Issuer "CAcert Class 3 Root" (verified OK)) by imap.suse.de (Postfix) with ESMTPS id AF8563C539A9 for <[email protected]>; Thu, 29 Sep 2011 11:07:10 +0200 (CEST) Received: by relay2.suse.de (Postfix) id A639118552E6; Thu, 29 Sep 2011 11:07:10 +0200 (CEST) Received: from imap.suse.de (loadbalancer1.suse.de [149.44.160.248]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id A573518552E1; Thu, 29 Sep 2011 11:07:10 +0200 (CEST) Received: from localhost.localdomain (charybdis-ext.suse.de [195.135.221.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by imap.suse.de (Postfix) with ESMTPSA id 7AD993C539A9; Thu, 29 Sep 2011 11:07:10 +0200 (CEST) From: Alexander Graf <[email protected]> To: [email protected] Cc: Peter Maydell <[email protected]>, Riku Voipio <[email protected]> Subject: [PATCH] linux-user: Implement prlimit64 syscall Date: Thu, 29 Sep 2011 11:00:25 +0200 Message-Id: <[email protected]> X-Mailer: git-send-email 1.6.0.2 From: Peter Maydell <[email protected]> Implement the prlimit64 syscall. Slightly modified to apply upstream -Riku Signed-off-by: Peter Maydell <[email protected]> Signed-off-by: Riku Voipio <[email protected]> Index: qemu-0.14.1/linux-user/syscall.c =================================================================== --- qemu-0.14.1.orig/linux-user/syscall.c +++ qemu-0.14.1/linux-user/syscall.c @@ -524,6 +524,21 @@ static int sys_inotify_init1(int flags) #endif /* CONFIG_INOTIFY */ +#if defined(TARGET_NR_prlimit64) +#ifndef __NR_prlimit64 +# define __NR_prlimit64 -1 +#endif +#define __NR_sys_prlimit64 __NR_prlimit64 +/* The glibc rlimit structure may not be that used by the underlying syscall */ +struct host_rlimit64 { + uint64_t rlim_cur; + uint64_t rlim_max; +}; +_syscall4(int, sys_prlimit64, pid_t, pid, int, resource, + const struct host_rlimit64 *, new_limit, + struct host_rlimit64 *, old_limit) +#endif + extern int personality(int); extern int flock(int, int); extern int setfsuid(int); @@ -7620,6 +7635,34 @@ abi_long do_syscall(void *cpu_env, int n break; } #endif +#ifdef TARGET_NR_prlimit64 + case TARGET_NR_prlimit64: + { + /* args: pid, resource number, ptr to new rlimit, ptr to old rlimit */ + struct target_rlimit64 *target_rnew, *target_rold; + struct host_rlimit64 rnew, rold, *rnewp = 0; + if (arg3) { + if (!lock_user_struct(VERIFY_READ, target_rnew, arg3, 1)) { + goto efault; + } + rnew.rlim_cur = tswap64(target_rnew->rlim_cur); + rnew.rlim_max = tswap64(target_rnew->rlim_max); + unlock_user_struct(target_rnew, arg3, 0); + rnewp = &rnew; + } + + ret = get_errno(sys_prlimit64(arg1, arg2, rnewp, arg4 ? &rold : 0)); + if (!is_error(ret) && arg4) { + if (!lock_user_struct(VERIFY_WRITE, target_rold, arg4, 1)) { + goto efault; + } + target_rold->rlim_cur = tswap64(rold.rlim_cur); + target_rold->rlim_max = tswap64(rold.rlim_max); + unlock_user_struct(target_rold, arg4, 1); + } + break; + } +#endif default: unimplemented: Index: qemu-0.14.1/linux-user/syscall_defs.h =================================================================== --- qemu-0.14.1.orig/linux-user/syscall_defs.h +++ qemu-0.14.1/linux-user/syscall_defs.h @@ -2237,6 +2237,11 @@ struct target_mq_attr { abi_long mq_curmsgs; }; +struct target_rlimit64 { + uint64_t rlim_cur; + uint64_t rlim_max; +}; + #include "socket.h" #include "errno_defs.h" ++++++ 0022-fixing-smp-races.patch ++++++ From: Alexander Graf <[email protected]> fixes some SMP races --- cpu-all.h | 2 +- exec.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: qemu-0.14.1/cpu-all.h =================================================================== --- qemu-0.14.1.orig/cpu-all.h +++ qemu-0.14.1/cpu-all.h @@ -775,7 +775,7 @@ void cpu_dump_statistics(CPUState *env, void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...) GCC_FMT_ATTR(2, 3); extern CPUState *first_cpu; -extern CPUState *cpu_single_env; +extern __thread CPUState *cpu_single_env; #define CPU_INTERRUPT_HARD 0x02 /* hardware interrupt pending */ #define CPU_INTERRUPT_EXITTB 0x04 /* exit the current TB (use for x86 a20 case) */ Index: qemu-0.14.1/exec.c =================================================================== --- qemu-0.14.1.orig/exec.c +++ qemu-0.14.1/exec.c @@ -112,7 +112,7 @@ RAMList ram_list = { .blocks = QLIST_HEA CPUState *first_cpu; /* current CPU in the current thread. It is only valid inside cpu_exec() */ -CPUState *cpu_single_env; +__thread CPUState *cpu_single_env; /* 0 = Do not count executed instructions. 1 = Precise instruction counting. 2 = Adaptive rate instruction counting. */ ++++++ 0023-linux-user-add-binfmt-wrapper-for-argv-0-handling.patch ++++++ >From 864b2c7da05bc29a94b3e792b100dd5189576942 Mon Sep 17 00:00:00 2001 From: Alexander Graf <[email protected]> Date: Fri, 30 Sep 2011 19:40:36 +0200 Subject: [PATCH] linux-user: add binfmt wrapper for argv[0] handling When using qemu's linux-user binaries through binfmt, argv[0] gets lost along the execution because qemu only gets passed in the full file name to the executable while argv[0] can be something completely different. This breaks in some subtile situations, such as the grep and make test suites. This patch adds a wrapper binary called qemu-$TARGET-binfmt that can be used with binfmt's P flag which passes the full path _and_ argv[0] to the binfmt handler. The binary would be smart enough to be versatile and only exist in the system once, creating the qemu binary path names from its own argv[0]. However, this seemed like it didn't fit the make system too well, so we're currently creating a new binary for each target archictecture. CC: Reinhard Max <[email protected]> Signed-off-by: Alexander Graf <[email protected]> --- Makefile.target | 8 ++++++++ linux-user/binfmt.c | 42 ++++++++++++++++++++++++++++++++++++++++++ scripts/qemu-binfmt-conf.sh | 34 +++++++++++++++++----------------- 3 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 linux-user/binfmt.c Index: qemu-0.14.1/Makefile.target =================================================================== --- qemu-0.14.1.orig/Makefile.target +++ qemu-0.14.1/Makefile.target @@ -33,6 +33,10 @@ endif PROGS=$(QEMU_PROG) STPFILES= +ifdef CONFIG_LINUX_USER +PROGS+=$(QEMU_PROG)-binfmt +endif + ifndef CONFIG_HAIKU LIBS+=-lm endif @@ -131,6 +135,8 @@ obj-y += $(addprefix ../libuser/, $(user obj-y += $(addprefix ../libdis-user/, $(libdis-y)) obj-y += $(libobj-y) +obj-binfmt-y += binfmt.o + endif #CONFIG_LINUX_USER ######################################################### @@ -346,6 +352,8 @@ obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml $(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)) +$(QEMU_PROG)-binfmt: $(obj-binfmt-y) + $(call LINK,$^) gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh $(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@") Index: qemu-0.14.1/linux-user/binfmt.c =================================================================== --- /dev/null +++ qemu-0.14.1/linux-user/binfmt.c @@ -0,0 +1,42 @@ +#include <stdio.h> +#include <stdarg.h> +#include <unistd.h> +#include <libgen.h> +#include <string.h> +#include <stdlib.h> + + +int main(int argc, char **argv, char **envp) +{ + char *binfmt; + char **new_argv; + + /* + * Check if our file name ends with -binfmt + */ + binfmt = argv[0] + strlen(argv[0]) - strlen("-binfmt"); + if (strcmp(binfmt, "-binfmt")) { + fprintf(stderr, "%s: Invalid executable name\n", argv[0]); + exit(1); + } + if (argc < 3) { + fprintf(stderr, "%s: Please use me through binfmt with P flag\n", + argv[0]); + exit(1); + } + + binfmt[0] = '\0'; + /* Now argv[0] is the real qemu binary name */ + + new_argv = (char **)malloc((argc + 2) * sizeof(*new_argv)); + if (argc > 3) { + memcpy(&new_argv[4], &argv[3], (argc - 3) * sizeof(*new_argv)); + } + new_argv[0] = argv[0]; + new_argv[1] = (char *)"-0"; + new_argv[2] = argv[2]; + new_argv[3] = argv[1]; + new_argv[argc + 1] = NULL; + + return execve(new_argv[0], new_argv, envp); +} Index: qemu-0.14.1/scripts/qemu-binfmt-conf.sh =================================================================== --- qemu-0.14.1.orig/scripts/qemu-binfmt-conf.sh +++ qemu-0.14.1/scripts/qemu-binfmt-conf.sh @@ -34,36 +34,36 @@ esac # register the interpreter for each cpu except for the native one if [ $cpu != "i386" ] ; then - echo ':i386:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386:' > /proc/sys/fs/binfmt_misc/register - echo ':i486:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386:' > /proc/sys/fs/binfmt_misc/register + echo ':i386:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':i486:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-i386-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "alpha" ] ; then - echo ':alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha:' > /proc/sys/fs/binfmt_misc/register + echo ':alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "arm" ] ; then - echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:' > /proc/sys/fs/binfmt_misc/register - echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb:' > /proc/sys/fs/binfmt_misc/register + echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-armeb-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "sparc" ] ; then - echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc:' > /proc/sys/fs/binfmt_misc/register + echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "ppc" ] ; then - echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:' > /proc/sys/fs/binfmt_misc/register + echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "m68k" ] ; then echo 'Please check cpu value and header information for m68k!' - echo ':m68k:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-m68k:' > /proc/sys/fs/binfmt_misc/register + echo ':m68k:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-m68k-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "mips" ] ; then # FIXME: We could use the other endianness on a MIPS host. - echo ':mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips:' > /proc/sys/fs/binfmt_misc/register - echo ':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel:' > /proc/sys/fs/binfmt_misc/register - echo ':mipsn32:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mipsn32:' > /proc/sys/fs/binfmt_misc/register - echo ':mipsn32el:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsn32el:' > /proc/sys/fs/binfmt_misc/register - echo ':mips64:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips64:' > /proc/sys/fs/binfmt_misc/register - echo ':mips64el:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mips64el:' > /proc/sys/fs/binfmt_misc/register + echo ':mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':mipsn32:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mipsn32-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':mipsn32el:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsn32el-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':mips64:M::\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips64-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':mips64el:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mips64el-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi if [ $cpu != "sh" ] ; then - echo ':sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4:' > /proc/sys/fs/binfmt_misc/register - echo ':sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb:' > /proc/sys/fs/binfmt_misc/register + echo ':sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-sh4-binfmt:P' > /proc/sys/fs/binfmt_misc/register + echo ':sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb-binfmt:P' > /proc/sys/fs/binfmt_misc/register fi continue with "q"... Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
