diff options
author | Andy Polyakov <appro@openssl.org> | 2016-03-23 21:04:22 +0100 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2016-03-29 09:51:40 +0200 |
commit | fdf6f73e5e09a98112d85ee745ac5b3c78942956 (patch) | |
tree | 1514add686d624ca5d38f8568f4d989383e68750 /ms/uplink.c | |
parent | Build system: VC-WIN64I fixups. (diff) | |
download | openssl-fdf6f73e5e09a98112d85ee745ac5b3c78942956.tar.xz openssl-fdf6f73e5e09a98112d85ee745ac5b3c78942956.zip |
Windows build system: fix 32-bit appveyor build.
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'ms/uplink.c')
-rw-r--r-- | ms/uplink.c | 28 |
1 files changed, 28 insertions, 0 deletions
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() { |