|
@@ -205,6 +205,9 @@ Usage: qemu-binfmt-conf.sh [--qemu-path PATH][--debian][--systemd CPU]
|
|
|
--persistent: if yes, the interpreter is loaded when binfmt is
|
|
|
configured and remains in memory. All future uses
|
|
|
are cloned from the open file.
|
|
|
+ --ignore-family: if yes, it is assumed that the host CPU (e.g. riscv64)
|
|
|
+ can't natively run programs targeting a CPU that is
|
|
|
+ part of the same family (e.g. riscv32).
|
|
|
--preserve-argv0 preserve argv[0]
|
|
|
|
|
|
To import templates with update-binfmts, use :
|
|
@@ -337,7 +340,12 @@ qemu_set_binfmts() {
|
|
|
fi
|
|
|
|
|
|
if [ "$host_family" = "$family" ] ; then
|
|
|
- continue
|
|
|
+ # When --ignore-family is used, we have to generate rules even
|
|
|
+ # for targets that are in the same family as the host CPU. The
|
|
|
+ # only exception is of course when the CPU types exactly match
|
|
|
+ if [ "$target" = "$host_cpu" ] || [ "$IGNORE_FAMILY" = "no" ] ; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
fi
|
|
|
|
|
|
$BINFMT_SET
|
|
@@ -355,10 +363,11 @@ CREDENTIAL=no
|
|
|
PERSISTENT=no
|
|
|
PRESERVE_ARG0=no
|
|
|
QEMU_SUFFIX=""
|
|
|
+IGNORE_FAMILY=no
|
|
|
|
|
|
_longopts="debian,systemd:,qemu-path:,qemu-suffix:,exportdir:,help,credential:,\
|
|
|
-persistent:,preserve-argv0:"
|
|
|
-options=$(getopt -o ds:Q:S:e:hc:p:g:F: -l ${_longopts} -- "$@")
|
|
|
+persistent:,preserve-argv0:,ignore-family:"
|
|
|
+options=$(getopt -o ds:Q:S:e:hc:p:g:F:i: -l ${_longopts} -- "$@")
|
|
|
eval set -- "$options"
|
|
|
|
|
|
while true ; do
|
|
@@ -418,6 +427,10 @@ while true ; do
|
|
|
shift
|
|
|
PRESERVE_ARG0="$1"
|
|
|
;;
|
|
|
+ -i|--ignore-family)
|
|
|
+ shift
|
|
|
+ IGNORE_FAMILY="$1"
|
|
|
+ ;;
|
|
|
*)
|
|
|
break
|
|
|
;;
|