]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
ppc: New configure test for ELFV2_ABI
authorNiels Möller <nisse@lysator.liu.se>
Tue, 4 Jan 2022 19:37:27 +0000 (20:37 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Tue, 4 Jan 2022 19:37:27 +0000 (20:37 +0100)
ChangeLog
config.m4.in
configure.ac
powerpc64/machine.m4

index c7c5c99327d62263b11e96e3b59300f9395f756e..8671bc7f209904af996185ae2548eff047ff919b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2022-01-04  Niels Möller  <nisse@lysator.liu.se>
+
+       * configure.ac (ELFV2_ABI): New substituted variable, set on
+       powerpc64 based on the _CALL_ELF define.
+       * config.m4.in (ELFV2_ABI): Substituted here.
+       * powerpc64/machine.m4: Use ELFV2_ABI rather than WORDS_BIGENDIAN
+       to select abi flavor. Intended to support ppc64be + musl, which,
+       unlike other big-endian configurations, uses ELFv2.
+
 2021-12-09  Niels Möller  <nisse@lysator.liu.se>
 
        * x86_64/ecc-secp256r1-redc.asm: New folding scheme with one less
index d89325b88dd1ad35bc1b27b921ee5a886d912953..b98a581789f6a5402e3f0ed18a48cee3910db3e7 100644 (file)
@@ -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
index 54df43ecf4e499b2650e2b7f3275fe203068c613..da72f908ac9e251c01d7923fe487f2f416bd99b5 100644 (file)
@@ -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)
index 187a49b8155841b9442cc72e656d15446ed17902..b59f086370870aa794c159ed915a31be8d4ecce3 100644 (file)
@@ -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)')')