diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2017-12-25 04:40:41 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2017-12-28 15:08:38 -0500 |
commit | 28afb45ff5151bd0e1c6d2796a12fac36b960b1b (patch) | |
tree | c175cd03862d5c98cb229f76fdfa9f5a59630fed /libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch | |
parent | 55ce24617af467542ae1b07814617fbe2b360e33 (diff) | |
download | abslibre-28afb45ff5151bd0e1c6d2796a12fac36b960b1b.tar.gz abslibre-28afb45ff5151bd0e1c6d2796a12fac36b960b1b.tar.bz2 abslibre-28afb45ff5151bd0e1c6d2796a12fac36b960b1b.zip |
libre/{qemu-static => qemu-user-static}: upgpkg 2.11.0-3.parabola1
Diffstat (limited to 'libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch')
-rw-r--r-- | libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch b/libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch new file mode 100644 index 000000000..bbc3840fe --- /dev/null +++ b/libre/qemu-user-static/0001-linux-user-Use-if-to-only-call-validate_guest_space-.patch @@ -0,0 +1,81 @@ +From 0c5afb7a15b6bb0e3fe276e377ad3702427e85d1 Mon Sep 17 00:00:00 2001 +From: Luke Shumaker <lukeshu@parabola.nu> +Date: Wed, 27 Dec 2017 03:33:21 -0500 +Subject: [PATCH 01/10] linux-user: Use #if to only call validate_guest_space + for 32-bit ARM target + +Instead of defining a bogus validate_guest_space that always returns 1 on +targets other than 32-bit ARM, use #if blocks to only call it on 32-bit ARM +targets. This makes the "normal" flow control clearer. + +Signed-off-by: Luke Shumaker <lukeshu@parabola.nu> +--- + linux-user/elfload.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +diff --git a/linux-user/elfload.c b/linux-user/elfload.c +index 20f3d8c2c3..cac991159c 100644 +--- a/linux-user/elfload.c ++++ b/linux-user/elfload.c +@@ -354,7 +354,6 @@ enum { + + /* The commpage only exists for 32 bit kernels */ + +-#define TARGET_HAS_VALIDATE_GUEST_SPACE + /* Return 1 if the proposed guest space is suitable for the guest. + * Return 0 if the proposed guest space isn't suitable, but another + * address space should be tried. +@@ -1823,15 +1822,6 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc, + return sp; + } + +-#ifndef TARGET_HAS_VALIDATE_GUEST_SPACE +-/* If the guest doesn't have a validation function just agree */ +-static int validate_guest_space(unsigned long guest_base, +- unsigned long guest_size) +-{ +- return 1; +-} +-#endif +- + unsigned long init_guest_space(unsigned long host_start, + unsigned long host_size, + unsigned long guest_start, +@@ -1845,11 +1835,12 @@ unsigned long init_guest_space(unsigned long host_start, + /* If just a starting address is given, then just verify that + * address. */ + if (host_start && !host_size) { ++#if defined(TARGET_ARM) && !defined(TARGET_AARCH64) + if (validate_guest_space(host_start, host_size) == 1) { +- return host_start; +- } else { + return (unsigned long)-1; + } ++#endif ++ return host_start; + } + + /* Setup the initial flags and start address. */ +@@ -1888,6 +1879,8 @@ unsigned long init_guest_space(unsigned long host_start, + + /* Check to see if the address is valid. */ + if (!host_start || real_start == current_start) { ++#if defined(TARGET_ARM) && !defined(TARGET_AARCH64) ++ /* On 32-bit ARM, we need to also be able to map the commpage. */ + int valid = validate_guest_space(real_start - guest_start, + real_size); + if (valid == 1) { +@@ -1896,6 +1889,10 @@ unsigned long init_guest_space(unsigned long host_start, + return (unsigned long)-1; + } + /* valid == 0, so try again. */ ++#else ++ /* On other architectures, whatever we have here is fine. */ ++ break; ++#endif + } + + /* That address didn't work. Unmap and try a different one. +-- +2.15.1 + |