[openssl] master update

Dr. Paul Dale pauli at openssl.org
Thu Dec 9 05:07:44 UTC 2021


The branch master has been updated
       via  f5485b97b6c9977c0d39c7669b9f97a879312447 (commit)
      from  f4f77c2d9756cee12875397276799a93f057d412 (commit)


- Log -----------------------------------------------------------------
commit f5485b97b6c9977c0d39c7669b9f97a879312447
Author: pkubaj <pkubaj at FreeBSD.org>
Date:   Sat Nov 20 20:40:06 2021 +0000

    Add support for BSD-ppc, BSD-ppc64 and BSD-ppc64le configurations
    
    OpenSSL assumes AT_HWCAP = 16 (as on Linux), but on FreeBSD AT_HWCAP = 25
    Switch to using AT_HWCAP, and setting it to 16 if it is not defined.
    
    CLA: trivial
    
    Reviewed-by: Matt Caswell <matt at openssl.org>
    Reviewed-by: Paul Dale <pauli at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/17090)

-----------------------------------------------------------------------

Summary of changes:
 Configurations/10-main.conf | 25 +++++++++++++++++++++++++
 Configure                   |  2 +-
 crypto/ppccap.c             | 12 ++++++++----
 util/perl/OpenSSL/config.pm |  5 +++--
 4 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 9f8fb32a86..071b1e5abe 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1070,6 +1070,31 @@ my %targets = (
         perlasm_scheme   => "linux64",
     },
 
+    "BSD-ppc" => {
+        inherit_from     => [ "BSD-generic32" ],
+        asm_arch         => 'ppc32',
+        perlasm_scheme   => "linux32",
+        lib_cppflags     => add("-DB_ENDIAN"),
+    },
+
+    "BSD-ppc64" => {
+        inherit_from     => [ "BSD-generic64" ],
+        cflags           => add("-m64"),
+        cxxflags         => add("-m64"),
+        lib_cppflags     => add("-DB_ENDIAN"),
+        asm_arch         => 'ppc64',
+        perlasm_scheme   => "linux64",
+    },
+
+    "BSD-ppc64le" => {
+        inherit_from     => [ "BSD-generic64" ],
+        cflags           => add("-m64"),
+        cxxflags         => add("-m64"),
+        lib_cppflags     => add("-DL_ENDIAN"),
+        asm_arch         => 'ppc64',
+        perlasm_scheme   => "linux64le",
+    },
+
     "bsdi-elf-gcc" => {
         inherit_from     => [ "BASE_unix" ],
         CC               => "gcc",
diff --git a/Configure b/Configure
index b00b91ac63..f48b7ab075 100755
--- a/Configure
+++ b/Configure
@@ -1549,7 +1549,7 @@ my %predefined_CXX = $config{CXX}
 
 unless ($disabled{asm}) {
     # big endian systems can use ELFv2 ABI
-    if ($target eq "linux-ppc64") {
+    if ($target eq "linux-ppc64" || $target eq "BSD-ppc64") {
         $target{perlasm_scheme} = "linux64v2" if ($predefined_C{_CALL_ELF} == 2);
     }
 }
diff --git a/crypto/ppccap.c b/crypto/ppccap.c
index dca3c5342b..da371a5345 100644
--- a/crypto/ppccap.c
+++ b/crypto/ppccap.c
@@ -117,14 +117,18 @@ static unsigned long getauxval(unsigned long key)
 #endif
 
 /* I wish <sys/auxv.h> was universally available */
-#define HWCAP                   16      /* AT_HWCAP */
+#ifndef AT_HWCAP
+# define AT_HWCAP               16      /* AT_HWCAP */
+#endif
 #define HWCAP_PPC64             (1U << 30)
 #define HWCAP_ALTIVEC           (1U << 28)
 #define HWCAP_FPU               (1U << 27)
 #define HWCAP_POWER6_EXT        (1U << 9)
 #define HWCAP_VSX               (1U << 7)
 
-#define HWCAP2                  26      /* AT_HWCAP2 */
+#ifndef AT_HWCAP2
+# define AT_HWCAP2              26      /* AT_HWCAP2 */
+#endif
 #define HWCAP_VEC_CRYPTO        (1U << 25)
 #define HWCAP_ARCH_3_00         (1U << 23)
 
@@ -215,8 +219,8 @@ void OPENSSL_cpuid_setup(void)
 
 #ifdef OSSL_IMPLEMENT_GETAUXVAL
     {
-        unsigned long hwcap = getauxval(HWCAP);
-        unsigned long hwcap2 = getauxval(HWCAP2);
+        unsigned long hwcap = getauxval(AT_HWCAP);
+        unsigned long hwcap2 = getauxval(AT_HWCAP2);
 
         if (hwcap & HWCAP_FPU) {
             OPENSSL_ppccap_P |= PPC_FPU;
diff --git a/util/perl/OpenSSL/config.pm b/util/perl/OpenSSL/config.pm
index e3802ade43..50efef423a 100755
--- a/util/perl/OpenSSL/config.pm
+++ b/util/perl/OpenSSL/config.pm
@@ -739,8 +739,9 @@ EOF
                                     disable => [ 'sse2' ] } ],
       [ 'alpha.*-.*-.*bsd.*',     { target => "BSD-generic64",
                                     defines => [ 'L_ENDIAN' ] } ],
-      [ 'powerpc64-.*-.*bsd.*',   { target => "BSD-generic64",
-                                    defines => [ 'B_ENDIAN' ] } ],
+      [ 'powerpc-.*-.*bsd.*',     { target => "BSD-ppc" } ],
+      [ 'powerpc64-.*-.*bsd.*',   { target => "BSD-ppc64" } ],
+      [ 'powerpc64le-.*-.*bsd.*', { target => "BSD-ppc64le" } ],
       [ 'sparc64-.*-.*bsd.*',     { target => "BSD-sparc64" } ],
       [ 'ia64-.*-.*bsd.*',        { target => "BSD-ia64" } ],
       [ 'x86_64-.*-dragonfly.*',  { target => "BSD-x86_64" } ],


More information about the openssl-commits mailing list