[PATCH v2] configure: Avoid clobbering x18 on arm64 when building with clang

André Hentschel nerv at dawncrow.de
Sat Jun 24 07:09:50 CDT 2017


Am 21.06.2017 um 12:39 schrieb Martin Storsjo:
> On aarch64/arm64, clang/LLVM feels free to use x18 for normal code
> generation on linux (while the register is reserved on iOS/darwin).
> For windows/arm64, this register must not be clobbered.
> 
> If targeting arm64, check for the clang cflags that allows this
> register to be left untouched.
> 
> This makes sure that wine for aarch64 built with clang doesn't
> crash immediately on startup.
> 
> Signed-off-by: Martin Storsjo <martin at martin.st>
> ---
> Now with the sign-off included, which was forgotten in v1.
> ---
>  configure.ac | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/configure.ac b/configure.ac
> index 7ae29f7..5b5a1d8 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -179,6 +179,11 @@ case $host in
>      CFLAGS="$CFLAGS -marm"
>      AC_SUBST(TARGETFLAGS,"-marm")
>      ;;
> +  aarch64*)
> +    # Clang needs these flags in order not to clobber the x18 register
> +    WINE_TRY_CFLAGS([-Xclang -target-feature -Xclang +reserve-x18],
> +                    [CFLAGS="$CFLAGS -Xclang -target-feature -Xclang +reserve-x18"])
> +    ;;
>    i[[3456789]]86*)
>      enable_win16=${enable_win16:-yes}
>      ;;
> 

I think it's worthwhile adding it

Signed-off-by: André Hentschel <nerv at dawncrow.de>



More information about the wine-patches mailing list