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