From fdf6f73e5e09a98112d85ee745ac5b3c78942956 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Wed, 23 Mar 2016 21:04:22 +0100 Subject: Windows build system: fix 32-bit appveyor build. Reviewed-by: Richard Levitte --- ms/uplink.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'ms') diff --git a/ms/uplink.c b/ms/uplink.c index 4f480a7981..6a5091b570 100644 --- a/ms/uplink.c +++ b/ms/uplink.c @@ -90,6 +90,34 @@ void OPENSSL_Uplink(volatile void **table, int index) table[index] = func; } +#if defined(_MSC_VER) && defined(_M_IX86) +# define LAZY(i) \ +__declspec(naked) static void lazy##i (void) { \ + _asm push i \ + _asm push OFFSET OPENSSL_UplinkTable \ + _asm call OPENSSL_Uplink \ + _asm add esp,8 \ + _asm jmp OPENSSL_UplinkTable+4*i } + +# if APPLINK_MAX>25 +# error "Add more stubs..." +# endif +/* make some in advance... */ +LAZY(1) LAZY(2) LAZY(3) LAZY(4) LAZY(5) + LAZY(6) LAZY(7) LAZY(8) LAZY(9) LAZY(10) + LAZY(11) LAZY(12) LAZY(13) LAZY(14) LAZY(15) + LAZY(16) LAZY(17) LAZY(18) LAZY(19) LAZY(20) + LAZY(21) LAZY(22) LAZY(23) LAZY(24) LAZY(25) +void *OPENSSL_UplinkTable[] = { + (void *)APPLINK_MAX, + lazy1, lazy2, lazy3, lazy4, lazy5, + lazy6, lazy7, lazy8, lazy9, lazy10, + lazy11, lazy12, lazy13, lazy14, lazy15, + lazy16, lazy17, lazy18, lazy19, lazy20, + lazy21, lazy22, lazy23, lazy24, lazy25, +}; +#endif + #ifdef SELFTEST main() { -- cgit v1.2.3