The branch master has been updated
       via  a135948ddaa4deff369cfaeb768efd603649f4de (commit)
      from  b78c777ee3038920064f5c2e3eb2a4f66a35119d (commit)


- Log -----------------------------------------------------------------
commit a135948ddaa4deff369cfaeb768efd603649f4de
Author: Romain Geissler <romain.geiss...@amadeus.com>
Date:   Fri Oct 2 00:07:32 2020 +0000

    Fix aarch64 static linking into shared libraries (see issue #10842 and pull 
request #11464)
    
    This tries to fix the following link errors on aarch64 when using OpenSSL
    3.0.0 alpha 6, compiling it with "no-shared" and -fPIC in CFLAGS, then
    trying to use the resulting OpenSSL static libraries in the build of
    elfutils, which embed libcrypto.a into libdebuginfo.so, which hides all
    symbols (except the libdebuginfod ones) by default:
    
    
/opt/1A/toolchain/aarch64-v4.0.86/lib/gcc/aarch64-1a-linux-gnu/8.4.1/../../../../aarch64-1a-linux-gnu/bin/ld:
 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha1-armv8.o):
 relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `OPENSSL_armcap_P' which 
may bind externally can not be used when making a shared object; recompile with 
-fPIC
    
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha1-armv8.o):
 in function `sha1_block_data_order':
    (.text+0x0): dangerous relocation: unsupported relocation
    
/opt/1A/toolchain/aarch64-v4.0.86/lib/gcc/aarch64-1a-linux-gnu/8.4.1/../../../../aarch64-1a-linux-gnu/bin/ld:
 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-chacha-armv8.o):
 relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `OPENSSL_armcap_P' which 
may bind externally can not be used when making a shared object; recompile with 
-fPIC
    
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-chacha-armv8.o):
 in function `ChaCha20_ctr32':
    (.text+0x6c): dangerous relocation: unsupported relocation
    
/opt/1A/toolchain/aarch64-v4.0.86/lib/gcc/aarch64-1a-linux-gnu/8.4.1/../../../../aarch64-1a-linux-gnu/bin/ld:
 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha256-armv8.o):
 relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `OPENSSL_armcap_P' which 
may bind externally can not be used when making a shared object; recompile with 
-fPIC 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha256-armv8.o):
 in function `sha256_block_data_order':
    (.text+0x0): dangerous relocation: unsupported relocation
    
/opt/1A/toolchain/aarch64-v4.0.86/lib/gcc/aarch64-1a-linux-gnu/8.4.1/../../../../aarch64-1a-linux-gnu/bin/ld:
 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha512-armv8.o):
 relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `OPENSSL_armcap_P' which 
may bind externally can not be used when making a shared object; recompile with 
-fPIC 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-sha512-armv8.o):
 in function `sha512_block_data_order':
    (.text+0x0): dangerous relocation: unsupported relocation
    
/opt/1A/toolchain/aarch64-v4.0.86/lib/gcc/aarch64-1a-linux-gnu/8.4.1/../../../../aarch64-1a-linux-gnu/bin/ld:
 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-poly1305-armv8.o):
 relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `OPENSSL_armcap_P' which 
may bind externally can not be used when making a shared object; recompile with 
-fPIC
    
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-poly1305-armv8.o):
 in function `poly1305_init':
    (.text+0x14): dangerous relocation: unsupported relocation
    
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-poly1305-armv8.o):
 in function `poly1305_emit_neon':
    (.text+0x8e4): relocation truncated to fit: R_AARCH64_CONDBR19 against 
symbol `poly1305_emit' defined in .text section in 
/workdir/build/build-pack/build-pack-temporary-static-dependencies/install/lib/libcrypto.a(libcrypto-lib-poly1305-armv8.o)
    
    In poly1305-armv8.pl, hide symbols the same way they are hidden in 
poly1305-x86_64.pl.
    
    Reviewed-by: Kurt Roeckx <k...@roeckx.be>
    Reviewed-by: Paul Dale <paul.d...@oracle.com>
    (Merged from https://github.com/openssl/openssl/pull/13056)

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

Summary of changes:
 crypto/chacha/asm/chacha-armv8.pl     | 1 +
 crypto/poly1305/asm/poly1305-armv8.pl | 6 +++++-
 crypto/sha/asm/sha1-armv8.pl          | 4 +---
 crypto/sha/asm/sha512-armv8.pl        | 7 +------
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/crypto/chacha/asm/chacha-armv8.pl 
b/crypto/chacha/asm/chacha-armv8.pl
index 41503f03f0..dcdc4a04e3 100755
--- a/crypto/chacha/asm/chacha-armv8.pl
+++ b/crypto/chacha/asm/chacha-armv8.pl
@@ -135,6 +135,7 @@ $code.=<<___;
 #ifndef        __KERNEL__
 # include "arm_arch.h"
 .extern        OPENSSL_armcap_P
+.hidden        OPENSSL_armcap_P
 #endif
 
 .text
diff --git a/crypto/poly1305/asm/poly1305-armv8.pl 
b/crypto/poly1305/asm/poly1305-armv8.pl
index d2d31fcc27..d2d875ad6c 100755
--- a/crypto/poly1305/asm/poly1305-armv8.pl
+++ b/crypto/poly1305/asm/poly1305-armv8.pl
@@ -61,10 +61,14 @@ $code.=<<___;
 
 // forward "declarations" are required for Apple
 .extern        OPENSSL_armcap_P
+.hidden        OPENSSL_armcap_P
+.globl poly1305_init
+.hidden        poly1305_init
 .globl poly1305_blocks
+.hidden        poly1305_blocks
 .globl poly1305_emit
+.hidden        poly1305_emit
 
-.globl poly1305_init
 .type  poly1305_init,%function
 .align 5
 poly1305_init:
diff --git a/crypto/sha/asm/sha1-armv8.pl b/crypto/sha/asm/sha1-armv8.pl
index 97ffac1fb9..cdea8845af 100644
--- a/crypto/sha/asm/sha1-armv8.pl
+++ b/crypto/sha/asm/sha1-armv8.pl
@@ -178,6 +178,7 @@ $code.=<<___;
 #ifndef        __KERNEL__
 # include "arm_arch.h"
 .extern OPENSSL_armcap_P
+.hidden OPENSSL_armcap_P
 #endif
 
 .text
@@ -323,9 +324,6 @@ $code.=<<___;
 .long  0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6     //K_60_79
 .asciz "SHA1 block transform for ARMv8, CRYPTOGAMS by <appro\@openssl.org>"
 .align 2
-#if !defined(__KERNELL__) && !defined(_WIN64)
-.comm  OPENSSL_armcap_P,4,4
-#endif
 ___
 }}}
 
diff --git a/crypto/sha/asm/sha512-armv8.pl b/crypto/sha/asm/sha512-armv8.pl
index 9c15496eb0..6bcff0b7d3 100644
--- a/crypto/sha/asm/sha512-armv8.pl
+++ b/crypto/sha/asm/sha512-armv8.pl
@@ -193,6 +193,7 @@ $code.=<<___;
 #ifndef        __KERNEL__
 # include "arm_arch.h"
 .extern        OPENSSL_armcap_P
+.hidden        OPENSSL_armcap_P
 #endif
 
 .text
@@ -829,12 +830,6 @@ $code.=<<___;
 ___
 }
 
-$code.=<<___;
-#if !defined(__KERNEL__) && !defined(_WIN64)
-.comm  OPENSSL_armcap_P,4,4
-#endif
-___
-
 {   my  %opcode = (
        "sha256h"       => 0x5e004000,  "sha256h2"      => 0x5e005000,
        "sha256su0"     => 0x5e282800,  "sha256su1"     => 0x5e006000   );

Reply via email to