qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] configure: Fix linux-user host detection for riscv64


From: Joel Stanley
Subject: Re: [PATCH] configure: Fix linux-user host detection for riscv64
Date: Mon, 7 Aug 2023 08:26:01 +0000

On Sat, 5 Aug 2023 at 18:02, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Mirror the host_arch variable from meson.build, so that we
> probe for the correct linux-user/include/host/ directory.

This broke all of the linux-user targets for me on a ppc64le host.
None show up when running configure --help, and trying to select one
with --target-list errors out:

  ERROR: Unknown target name 'aarch64-linux-user'

Reverting this patch restores the old behaviour.

This test is the one that fails with the patch applied:

if [ "$linux_user" != no ]; then
    if [ "$targetos" = linux ] && [ -d
"$source_path/linux-user/include/host/$host_arch" ]; then
        linux_user=yes

WIth your patch $host_arch is ppc64le. Previously the line was:

 if [ "$linux_user" != no ]; then
     if [ "$targetos" = linux ] && [ -d
"$source_path/linux-user/include/host/$cpu" ]; then
      linux_user=yes

The directory needs to be /linux-user/include/host/ppc64 for even for ppc64le.

You've put the new test just above the switch statement that does
normalisation of the host CPU name. Could add riscv to that switch
statement instead of adding the host_arch variable?

@@ -508,6 +501,9 @@ case "$cpu" in
     cpu="ppc64"
     CPU_CFLAGS="-m64 -mlittle-endian" ;;

+  riscv*)
+    cpu="riscv" ;;
+
   s390)
     CPU_CFLAGS="-m31" ;;
   s390x)

Cheers,

Joel

>
> Fixes: e3e477c3bca0 ("configure: Fix cross-building for RISCV host")
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  configure | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index afb25fd558..98dc78280e 100755
> --- a/configure
> +++ b/configure
> @@ -469,6 +469,13 @@ else
>    echo "WARNING: unrecognized host CPU, proceeding with 'uname -m' output 
> '$cpu'"
>  fi
>
> +case "$cpu" in
> +  riscv*)
> +    host_arch=riscv ;;
> +  *)
> +    host_arch="$cpu" ;;
> +esac
> +
>  # Normalise host CPU name and set multilib cflags.  The canonicalization
>  # isn't really necessary, because the architectures that we check for
>  # should not hit the 'uname -m' case, but better safe than sorry.
> @@ -803,7 +810,7 @@ default_target_list=""
>  mak_wilds=""
>
>  if [ "$linux_user" != no ]; then
> -    if [ "$targetos" = linux ] && [ -d 
> "$source_path/linux-user/include/host/$cpu" ]; then
> +    if [ "$targetos" = linux ] && [ -d 
> "$source_path/linux-user/include/host/$host_arch" ]; then
>          linux_user=yes
>      elif [ "$linux_user" = yes ]; then
>          error_exit "linux-user not supported on this architecture"
> --
> 2.34.1
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]