From e942111267f292070cbc8397e0cc5fddaf8371a0 Mon Sep 17 00:00:00 2001 From: Pauli Date: Sun, 6 Sep 2020 20:39:12 +1000 Subject: [PATCH] In a non-shared build, don't include the md5 object files in legacy provider Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/11961) --- crypto/md5/build.info | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crypto/md5/build.info b/crypto/md5/build.info index 18d5342a36..bbb70fde3c 100644 --- a/crypto/md5/build.info +++ b/crypto/md5/build.info @@ -17,7 +17,16 @@ ENDIF $COMMON=md5_dgst.c md5_one.c md5_sha1.c $MD5ASM SOURCE[../../libcrypto]=$COMMON SOURCE[../../providers/libimplementations.a]=$COMMON -SOURCE[../../providers/liblegacy.a]=$COMMON + +# A no-deprecated no-shared build ends up with double function definitions +# without conditioning this on dso. The issue is MD5 which is needed in the +# legacy provider for one of the spliced algorithms, however it resides in the +# default provider. A no-deprecated build removes the external definition from +# libcrypto and this means that the code needs to be in liblegacy. However, +# when building without 'dso', liblegacy is included in libcrypto. +IF[{- !$disabled{dso} -}] + SOURCE[../../providers/liblegacy.a]=$COMMON +ENDIF # Implementations are now spread across several libraries, so the defines # need to be applied to all affected libraries and modules. -- 2.34.1