[PATCH v3] configure: Avoid clobbering x18 on arm64 within wine
André Hentschel
nerv at dawncrow.de
Mon Jun 26 14:19:24 CDT 2017
Finally I reached a Notebook :)
I think it's worthwhile adding it
Signed-off-by: André Hentschel <nerv at dawncrow.de>
> Martin Storsjo <martin at martin.st> hat am 26. Juni 2017 um 09:14 geschrieben:
>
>
> On aarch64/arm64 on linux, the compiler is free to use x18 for normal
> code generation (while the register is reserved on iOS/darwin, and
> on windows).
>
> If targeting arm64, check for the flags that allows this register to
> be left untouched (the flag is supported both by gcc and clang).
>
> This makes sure that wine for aarch64 built with clang doesn't
> crash immediately on startup. (clang/llvm seems to be more eager on
> using this register than gcc.)
>
> Similar issues can still pop up as soon as system library functions
> that happen to touch x18 are called, unless the system libraries have
> been built with the same flag.
>
> Signed-off-by: Martin Storsjo <martin at martin.st>
> ---
> Changed to try a different flag which is supported by both gcc and clang.
> (Internally, clang maps it to the flag used in the previous generation
> of the patch.) Reworded the commit message to clarify that the same issue
> is present with gcc as well (although I hit the issue sooner with clang).
>
> Also clarified, both in the commit message and in the configure comment,
> that this issue isn't a complete fix.
> ---
> configure.ac | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index 7ae29f7..fe98b80 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -179,6 +179,12 @@ case $host in
> CFLAGS="$CFLAGS -marm"
> AC_SUBST(TARGETFLAGS,"-marm")
> ;;
> + aarch64*)
> + # Avoid clobbering the x18 register which is reserved in windows.
> + # This isn't complete/enough unless all of the system libraries have
> + # been built with the same flag though.
> + WINE_TRY_CFLAGS([-ffixed-x18], [CFLAGS="$CFLAGS -ffixed-x18"])
> + ;;
> i[[3456789]]86*)
> enable_win16=${enable_win16:-yes}
> ;;
> --
> 2.7.4
>
>
>
More information about the wine-patches
mailing list