summaryrefslogtreecommitdiff
path: root/user/nettle/ppc64.patch
blob: d13a2ec880647813ebdfdc660f6e40fe81ade5c7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
From c7cf19390dcb0e9792fc23b0c935c1fe5e4f91e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 4 Jan 2022 20:37:27 +0100
Subject: [PATCH] ppc: New configure test for ELFV2_ABI

---
 ChangeLog            |  9 +++++++++
 config.m4.in         |  1 +
 configure.ac         | 14 +++++++++++++-
 powerpc64/machine.m4 |  4 ++--
 4 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/config.m4.in b/config.m4.in
index d89325b8..b98a5817 100644
--- a/config.m4.in
+++ b/config.m4.in
@@ -5,6 +5,7 @@ define(`COFF_STYLE', `@ASM_COFF_STYLE@')dnl
 define(`TYPE_FUNCTION', `@ASM_TYPE_FUNCTION@')dnl
 define(`TYPE_PROGBITS', `@ASM_TYPE_PROGBITS@')dnl
 define(`ALIGN_LOG', `@ASM_ALIGN_LOG@')dnl
+define(`ELFV2_ABI', `@ELFV2_ABI@')dnl
 define(`W64_ABI', `@W64_ABI@')dnl
 define(`RODATA', `@ASM_RODATA@')dnl
 define(`WORDS_BIGENDIAN', `@ASM_WORDS_BIGENDIAN@')dnl
diff --git a/configure.ac b/configure.ac
index 54df43ec..da72f908 100644
--- a/configure.ac
+++ b/configure.ac
@@ -311,6 +311,9 @@ AC_SUBST([GMP_NUMB_BITS])
 # Figure out ABI. Currently, configurable only by setting CFLAGS.
 ABI=standard
 
+ELFV2_ABI=no # For powerpc64
+W64_ABI=no   # For x86_64 windows
+
 case "$host_cpu" in
   [x86_64 | amd64])
     AC_TRY_COMPILE([
@@ -355,6 +358,15 @@ case "$host_cpu" in
     ], [
       ABI=64
     ])
+    if test "$ABI" = 64 ; then
+      AC_TRY_COMPILE([
+#if _CALL_ELF == 2
+#error ELFv2 ABI
+#endif
+      ], [], [], [
+	ELFV2_ABI=yes
+      ])
+    fi
     ;;
   aarch64*)
     AC_TRY_COMPILE([
@@ -756,7 +768,6 @@ IF_DLL='#'
 LIBNETTLE_FILE_SRC='$(LIBNETTLE_FORLINK)'
 LIBHOGWEED_FILE_SRC='$(LIBHOGWEED_FORLINK)'
 EMULATOR=''
-W64_ABI=no
 
 case "$host_os" in
   mingw32*|cygwin*)
@@ -1037,6 +1048,7 @@ AC_SUBST(ASM_TYPE_FUNCTION)
 AC_SUBST(ASM_TYPE_PROGBITS)
 AC_SUBST(ASM_MARK_NOEXEC_STACK)
 AC_SUBST(ASM_ALIGN_LOG)
+AC_SUBST(ELFV2_ABI)
 AC_SUBST(W64_ABI)
 AC_SUBST(ASM_WORDS_BIGENDIAN)
 AC_SUBST(EMULATOR)
diff --git a/powerpc64/machine.m4 b/powerpc64/machine.m4
index 187a49b8..b59f0863 100644
--- a/powerpc64/machine.m4
+++ b/powerpc64/machine.m4
@@ -1,7 +1,7 @@
 define(`PROLOGUE',
 `.globl C_NAME($1)
 DECLARE_FUNC(C_NAME($1))
-ifelse(WORDS_BIGENDIAN,no,
+ifelse(ELFV2_ABI,yes,
 `ifdef(`FUNC_ALIGN',`.align FUNC_ALIGN')
 C_NAME($1):
 addis 2,12,(.TOC.-C_NAME($1))@ha
@@ -17,7 +17,7 @@ ifdef(`FUNC_ALIGN',`.align FUNC_ALIGN')
 undefine(`FUNC_ALIGN')')
 
 define(`EPILOGUE',
-`ifelse(WORDS_BIGENDIAN,no,
+`ifelse(ELFV2_ABI,yes,
 `.size C_NAME($1), . - C_NAME($1)',
 `.size .C_NAME($1), . - .C_NAME($1)
 .size C_NAME($1), . - .C_NAME($1)')')
-- 
GitLab