From: Niels Möller Date: Tue, 4 Jan 2022 19:37:27 +0000 (+0100) Subject: ppc: New configure test for ELFV2_ABI X-Git-Tag: nettle_3.8_release_20220602~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7cf19390dcb0e9792fc23b0c935c1fe5e4f91e1;p=thirdparty%2Fnettle.git ppc: New configure test for ELFV2_ABI --- diff --git a/ChangeLog b/ChangeLog index c7c5c993..8671bc7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2022-01-04 Niels Möller + + * 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 * x86_64/ecc-secp256r1-redc.asm: New folding scheme with one less 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)')')