]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
make-functions: check working binfmt_misc and add x86_64 helper.
authorArne Fitzenreiter <arne_f@ipfire.org>
Sun, 20 Sep 2015 15:06:59 +0000 (17:06 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 20 Sep 2015 15:06:59 +0000 (17:06 +0200)
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
tools/make-functions

index a9baab96d50257230fcf75d5fbe21122f100898e..e297c50cef72a6ef3b579e01294d1fe28d0317b4 100644 (file)
@@ -361,7 +361,7 @@ qemu_is_required() {
        fi
 
        case "${BUILD_ARCH},${target_arch}" in
        fi
 
        case "${BUILD_ARCH},${target_arch}" in
-               x86_64,arm*|i?86,arm*)
+               x86_64,arm*|i?86,arm*|i?86,x86_64)
                        return 0
                        ;;
                *)
                        return 0
                        ;;
                *)
@@ -376,6 +376,15 @@ qemu_install_helper() {
                return 0
        fi
 
                return 0
        fi
 
+       if [ ! -e /proc/sys/fs/binfmt_misc/status ]; then
+               exiterror "binfmt_misc not mounted. QEMU_TARGET_HELPER not useable."
+       fi
+
+       if [ ! $(cat /proc/sys/fs/binfmt_misc/status) = 'enabled' ]; then
+               exiterror "binfmt_misc not enabled. QEMU_TARGET_HELPER not useable."
+       fi
+
+
        if [ -z "${QEMU_TARGET_HELPER}" ]; then
                exiterror "QEMU_TARGET_HELPER not set"
        fi
        if [ -z "${QEMU_TARGET_HELPER}" ]; then
                exiterror "QEMU_TARGET_HELPER not set"
        fi
@@ -413,12 +422,17 @@ qemu_find_target_helper_name() {
                arm*)
                        magic="7f454c4601010100000000000000000002002800"
                        ;;
                arm*)
                        magic="7f454c4601010100000000000000000002002800"
                        ;;
+               x86_64)
+                       magic="7f454c4602010100000000000000000002003e00"
+                       ;;
        esac
 
        [ -z "${magic}" ] && return 1
 
        local file
        for file in /proc/sys/fs/binfmt_misc/*; do
        esac
 
        [ -z "${magic}" ] && return 1
 
        local file
        for file in /proc/sys/fs/binfmt_misc/*; do
+               # skip write only register entry
+               [ $(basename "${file}") = "register" ] && continue
                # Search for the file with the correct magic value.
                grep -qE "^magic ${magic}$" "${file}" || continue
 
                # Search for the file with the correct magic value.
                grep -qE "^magic ${magic}$" "${file}" || continue