|
@@ -144,35 +144,35 @@ loongarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x
|
|
|
loongarch64_mask='\xff\xff\xff\xff\xff\xff\xff\xfc\x00\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
|
|
loongarch64_family=loongarch
|
|
|
|
|
|
-qemu_get_family() {
|
|
|
- cpu=${HOST_ARCH:-$(uname -m)}
|
|
|
+# Converts the name of a host CPU architecture to the corresponding QEMU
|
|
|
+# target.
|
|
|
+#
|
|
|
+# FIXME: This can probably be simplified a lot by dropping most entries.
|
|
|
+# Remember that the script is only used on Linux, so we only need to
|
|
|
+# handle the strings Linux uses to report the host CPU architecture.
|
|
|
+qemu_normalize() {
|
|
|
+ cpu="$1"
|
|
|
case "$cpu" in
|
|
|
- amd64|i386|i486|i586|i686|i86pc|BePC|x86_64)
|
|
|
+ i[3-6]86)
|
|
|
echo "i386"
|
|
|
;;
|
|
|
- mips*)
|
|
|
- echo "mips"
|
|
|
+ amd64)
|
|
|
+ echo "x86_64"
|
|
|
;;
|
|
|
- "Power Macintosh"|ppc64|powerpc|ppc)
|
|
|
+ powerpc)
|
|
|
echo "ppc"
|
|
|
;;
|
|
|
- ppc64el|ppc64le)
|
|
|
- echo "ppcle"
|
|
|
+ ppc64el)
|
|
|
+ echo "ppc64le"
|
|
|
;;
|
|
|
- arm|armel|armhf|arm64|armv[4-9]*l|aarch64)
|
|
|
+ armel|armhf|armv[4-9]*l)
|
|
|
echo "arm"
|
|
|
;;
|
|
|
- armeb|armv[4-9]*b|aarch64_be)
|
|
|
+ armv[4-9]*b)
|
|
|
echo "armeb"
|
|
|
;;
|
|
|
- sparc*)
|
|
|
- echo "sparc"
|
|
|
- ;;
|
|
|
- riscv*)
|
|
|
- echo "riscv"
|
|
|
- ;;
|
|
|
- loongarch*)
|
|
|
- echo "loongarch"
|
|
|
+ arm64)
|
|
|
+ echo "aarch64"
|
|
|
;;
|
|
|
*)
|
|
|
echo "$cpu"
|
|
@@ -309,7 +309,13 @@ EOF
|
|
|
|
|
|
qemu_set_binfmts() {
|
|
|
# probe cpu type
|
|
|
- host_family=$(qemu_get_family)
|
|
|
+ host_cpu=$(qemu_normalize ${HOST_ARCH:-$(uname -m)})
|
|
|
+ host_family=$(eval echo \$${host_cpu}_family)
|
|
|
+
|
|
|
+ if [ "$host_family" = "" ] ; then
|
|
|
+ echo "INTERNAL ERROR: unknown host cpu $host_cpu" 1>&2
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
|
|
|
# register the interpreter for each cpu except for the native one
|
|
|
|