From nobody Mon Mar 31 20:42:19 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1551814424686802.2616583792092; Tue, 5 Mar 2019 11:33:44 -0800 (PST) Received: from localhost ([127.0.0.1]:48236 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1Foh-0008DH-Qs for importer@patchew.org; Tue, 05 Mar 2019 14:33:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h1Fng-0007qT-2F for qemu-devel@nongnu.org; Tue, 05 Mar 2019 14:32:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h1Fnd-0007yq-UL for qemu-devel@nongnu.org; Tue, 05 Mar 2019 14:32:27 -0500 Received: from smtp.lg.ehu.es ([158.227.0.66]:34102 helo=smtp.ehu.eus) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h1Fnb-0007hL-DQ for qemu-devel@nongnu.org; Tue, 05 Mar 2019 14:32:25 -0500 Received: from imsva2.lgp.ehu.es (imsva2.lgp.ehu.es [10.0.3.246]) by postfix.smtp2.imsva2 (Postfix) with ESMTPS id 2E2B8660E for ; Tue, 5 Mar 2019 20:32:19 +0100 (CET) Received: from imsva2.lgp.ehu.es (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E09275A051 for ; Tue, 5 Mar 2019 20:32:18 +0100 (CET) Received: from imsva2.lgp.ehu.es (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CBB6E5A045 for ; Tue, 5 Mar 2019 20:32:18 +0100 (CET) Received: from smtp.ehu.eus (unknown [10.0.100.76]) by imsva2.lgp.ehu.es (Postfix) with ESMTPS for ; Tue, 5 Mar 2019 20:32:18 +0100 (CET) Received: from mail-it1-f178.google.com (mail-it1-f178.google.com [209.85.166.178]) by smtp2 (Postfix) with ESMTPSA id 758F568FB for ; Tue, 5 Mar 2019 20:32:18 +0100 (CET) Received: by mail-it1-f178.google.com with SMTP id e24so5838003itl.1 for ; Tue, 05 Mar 2019 11:32:18 -0800 (PST) X-Gm-Message-State: APjAAAXqwg9h/uOp2V/K5HFNv+2wg9xhoCsVjn3NLGU2iFtPSfBghzRx jpnjvpXWT6RouaHf2sa4VM5hK5CkDjz3wEMiBA== X-Google-Smtp-Source: APXvYqwvlQYF/Q1p+ggkzCdETG0LyexI2IxYnsbxTo/z1S5O/9oPwSdOFS1ZxUeA7eReHnCj/zValxScBQbIavZT1x4= X-Received: by 2002:a24:66c8:: with SMTP id k191mr3438223itc.20.1551814337103; Tue, 05 Mar 2019 11:32:17 -0800 (PST) MIME-Version: 1.0 References: <0ac05885-96d6-9355-0333-31a909fd943b@redhat.com> In-Reply-To: From: Unai Martinez Corral Date: Tue, 5 Mar 2019 20:32:07 +0100 X-Gmail-Original-Message-ID: Message-ID: To: qemu-devel@nongnu.org X-Greylist: ACL 174 matched, not delayed by milter-greylist-4.4.3 (smtp2); Tue, 05 Mar 2019 20:32:18 +0100 (CET) X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSVA-9.1.0.1631-8.2.0.1013-24472.002 X-TM-AS-Result: No--4.357-7.0-31-10 X-imss-scan-details: No--4.357-7.0-31-10 X-TMASE-Version: IMSVA-9.1.0.1631-8.2.1013-24472.002 X-TMASE-Result: 10--4.357400-10.000000 X-TMASE-MatchedRID: c/Wb3O5icOmgBUTSh64wSSnjDVPUYtjj7euC4Hkicfu3Ayen5HOxZ3ch tJI6MELja8dzyZlF6/VmQMW7CIYGnszt+Tik8YflNs3S39zaoXaIC8B9SJGpmSejgKDUPU+kfjP 2OXYiDO+Awv1Q6AIE97Fcy6780oEesPJBU3ZwaVHhuXUWQoMQt9SqEluSYtV7NSweOixQAJKcWp NZSj8YTTPrFHJ4NBST2tHfM/RpuNBmAMnltUmR5BIRh9wkXSlFf2g6KJZtxl28NrbzjPvzJ0Oi+ VacedxgD/It0fT6ofuC9kuxmaZKNJFCdtV6Jf3WneIQmu8UmaFA8I/PJy4EU7uqk4cq52pz03RB tBgNhTH3cuxjGnQlwF+24nCsUSFNYk+dVZgKqvjdB/CxWTRRu0g4939Fmwi1LsKAQko3ztt7q3w ihC6WCH6SWYuENC8AwR7pOkYO8WN/wFfKsOneSQcwURW14FjsjDJKM7D4CsLBXI46nkQxXDR8os E0l0FMxpZTVowTqcpeE8aE87ahady3p6VecAvZdH6+MVau5QR5EdJeRDnwG8C+ksT6a9fy X-TMASE-SNAP-Result: 1.821001.0001-0-1-12:0,22:0,33:0,34:0-0 X-Greylist: Sender IP whitelisted, Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.4.3 (postfix.smtp2.imsva2); Tue, 05 Mar 2019 20:32:19 +0100 (CET) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 158.227.0.66 Subject: [Qemu-devel] [PATCH v2] qemu-binfmt-conf.sh: add CPUS, add --reset, make -p and -c boolean (no arg) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: unai.martinezcorral@ehu.eus Cc: riku.voipio@iki.fi, laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Unai Martinez-Corral --- scripts/qemu-binfmt-conf.sh | 190 +++++++++++++++++++++++------------- 1 file changed, 121 insertions(+), 69 deletions(-) diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh index b5a16742a1..b1aa4a312a 100755 --- a/scripts/qemu-binfmt-conf.sh +++ b/scripts/qemu-binfmt-conf.sh @@ -6,6 +6,35 @@ mips mipsel mipsn32 mipsn32el mips64 mips64el \ sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb \ microblaze microblazeel or1k x86_64" +# check if given target CPUS is/are in the supported target list +qemu_check_target_list() { + all=3D"$qemu_target_list" + if [ "x$1" =3D "xALL" ]; then + checked_target_list=3D"$all" + return + fi + list=3D"" + bIFS=3D"$IFS" + IFS=3D" ," + for target in $@; do + unknown_target=3D"true" + for cpu in $all ; do + if [ "x$cpu" =3D "x$target" ] ; then + list=3D"$list $target" + unknown_target=3D"false" + break + fi + done + if [ "$unknown_target" =3D "true" ] ; then + echo "ERROR: unknown CPU \"$target\"" 1>&2 + usage + exit 1 + fi + done + IFS=3D"$bIFS" + checked_target_list=3D"$list" +} + i386_magic=3D'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\= x00\x03\x00' i386_mask=3D'\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\= xff\xfe\xff\xff\xff' i386_family=3Di386 @@ -167,45 +196,48 @@ qemu_get_family() { usage() { cat <&2 continue fi qemu=3D"$QEMU_PATH/qemu-$cpu" - if [ "$cpu" =3D "i486" ] ; then + if [ "x$cpu" =3D "xi486" ] ; then qemu=3D"$QEMU_PATH/qemu-i386" fi qemu=3D"$qemu$QEMU_SUFFIX" - if [ "$host_family" !=3D "$family" ] ; then + if [ "x$host_family" !=3D "x$family" ] ; then $BINFMT_SET fi done } +qemu_remove_notimplemented() { + echo "ERROR: option reset not implemented for this mode yet" 1>&2 + usage + exit 1 +} + +qemu_remove_interpreter() { + names=3D'qemu-*' + if [ "x$1" !=3D "xALL" ]; then + qemu_check_target_list $1 + unset names pre + for t in $checked_target_list; do + names=3D"${names}${pre}qemu-$t" + pre=3D' -o -name ' + done + fi + find /proc/sys/fs/binfmt_misc/ -type f -name $names -exec sh -c 'printf %s -1 > {}' \; +} + CHECK=3Dqemu_check_bintfmt_misc BINFMT_SET=3Dqemu_register_interpreter +BINFMT_REMOVE=3Dqemu_remove_interpreter SYSTEMDDIR=3D"/etc/binfmt.d" DEBIANDIR=3D"/usr/share/binfmts" @@ -324,37 +386,27 @@ CREDENTIAL=3Dno PERSISTENT=3Dno QEMU_SUFFIX=3D"" -options=3D$(getopt -o ds:Q:S:e:hc:p: -l debian,systemd:,qemu-path:,qemu-suffix:,exportdir:,help,credential:,persist= ent: -- "$@") +options=3D$(getopt -o r:dsQ:S:e:hcp -l reset:,debian,systemd,qemu-path:,qemu-suffix:,exportdir:,help,credential,pe= rsistent -- "$@") eval set -- "$options" while true ; do case "$1" in + -r|--reset) + shift + $CHECK + qemu_remove_interpreter $1 + ;; -d|--debian) CHECK=3Dqemu_check_debian BINFMT_SET=3Dqemu_generate_debian + BINFMT_REMOVE=3Dqemu_remove_notimplemented EXPORTDIR=3D${EXPORTDIR:-$DEBIANDIR} ;; -s|--systemd) CHECK=3Dqemu_check_systemd BINFMT_SET=3Dqemu_generate_systemd + BINFMT_REMOVE=3Dqemu_remove_notimplemented EXPORTDIR=3D${EXPORTDIR:-$SYSTEMDDIR} - shift - # check given cpu is in the supported CPU list - if [ "$1" !=3D "ALL" ] ; then - for cpu in ${qemu_target_list} ; do - if [ "$cpu" =3D "$1" ] ; then - break - fi - done - - if [ "$cpu" =3D "$1" ] ; then - qemu_target_list=3D"$1" - else - echo "ERROR: unknown CPU \"$1\"" 1>&2 - usage - exit 1 - fi - fi ;; -Q|--qemu-path) shift @@ -373,12 +425,10 @@ while true ; do exit 1 ;; -c|--credential) - shift - CREDENTIAL=3D"$1" + CREDENTIAL=3Dyes ;; -p|--persistent) - shift - PERSISTENT=3D"$1" + PERSISTENT=3Dyes ;; *) break @@ -387,5 +437,7 @@ while true ; do shift done +shift + $CHECK -qemu_set_binfmts +qemu_set_binfmts $@ --=20 2.20.1