mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
40 lines
1.6 KiB
Diff
40 lines
1.6 KiB
Diff
|
From d99a6180cdca6274f1a8b868c38a89883daf6e23 Mon Sep 17 00:00:00 2001
|
||
|
From: Martin Storsjo <martin@martin.st>
|
||
|
Date: Wed, 21 Jun 2017 11:42:40 +0300
|
||
|
Subject: [PATCH] configure: Avoid clobbering x18 on arm64 within wine
|
||
|
|
||
|
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).
|
||
|
|
||
|
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@martin.st>
|
||
|
---
|
||
|
configure.ac | 4 ++++
|
||
|
1 file changed, 4 insertions(+)
|
||
|
|
||
|
diff --git a/configure.ac b/configure.ac
|
||
|
index d1502bacf7..6cf838ef09 100644
|
||
|
--- a/configure.ac
|
||
|
+++ b/configure.ac
|
||
|
@@ -212,6 +212,10 @@ case $host in
|
||
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>]], [[void func(__builtin_ms_va_list *args);]])],
|
||
|
[wine_cv_builtin_ms_va_list=yes],[wine_cv_builtin_ms_va_list=no])])
|
||
|
test $wine_cv_builtin_ms_va_list != no || AC_MSG_ERROR([You need clang >= 5.0 to build Wine for arm64.])
|
||
|
+ # 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.17.1
|
||
|
|