Commit 7b176a54 authored by Richard Levitte's avatar Richard Levitte
Browse files

Only build the body of e_padlock when there are lower level routines



engines/e_padlock.c assumes that for all x86 and x86_64 platforms, the
lower level routines will be present.  However, that's not always
true, for example for solaris-x86-cc, and that leads to build errors.

The better solution is to have configure detect if the lower level
padlock routines are being built, and define the macro PADLOCK_ASM if
they are, and use that macro in our C code.

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1510)
parent 93880ce1
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1206,6 +1206,9 @@ unless ($disabled{asm}) {
    if ($target{ec_asm_src} =~ /ecp_nistz256/) {
	push @{$config{defines}}, "ECP_NISTZ256_ASM";
    }
    if ($target{padlock_asm_src} ne $table{DEFAULTS}->{padlock_asm_src}) {
	push @{$config{defines}}, "PADLOCK_ASM";
    }
    if ($target{poly1305_asm_src} ne "") {
	push @{$config{defines}}, "POLY1305_ASM";
    }
+3 −7
Original line number Diff line number Diff line
@@ -41,16 +41,12 @@
 */

#  undef COMPILE_HW_PADLOCK
#  if !defined(I386_ONLY) && !defined(OPENSSL_NO_ASM)
#   if    defined(__i386__) || defined(__i386) ||    \
        defined(__x86_64__) || defined(__x86_64) || \
        defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64)
#  if !defined(I386_ONLY) && defined(PADLOCK_ASM)
#   define COMPILE_HW_PADLOCK
#   ifdef OPENSSL_NO_DYNAMIC_ENGINE
static ENGINE *ENGINE_padlock(void);
#   endif
#  endif
#  endif

#  ifdef OPENSSL_NO_DYNAMIC_ENGINE
void engine_load_padlock_int(void);