Skip to content

Commit

Permalink
Windows build system: fix 32-bit appveyor build.
Browse files Browse the repository at this point in the history
Reviewed-by: Richard Levitte <[email protected]>
  • Loading branch information
Andy Polyakov committed Mar 29, 2016
1 parent 6ddb62a commit fdf6f73
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Configurations/10-main.conf
Original file line number Diff line number Diff line change
Expand Up @@ -1295,7 +1295,7 @@ sub vc_wince_info {
# x86 Win32 target defaults to ANSI API, if you want UNICODE,
# configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
inherit_from => [ "VC-noCE-common", asm("x86_asm"),
sub { $disabled{shared} ? () : "x86_uplink" } ],
sub { $disabled{shared} ? () : "uplink_common" } ],
as => sub { my $ver=`nasm -v 2>NUL`;
my $vew=`nasmw -v 2>NUL`;
return $ver ge $vew ? "nasm" : "nasmw" },
Expand Down
28 changes: 28 additions & 0 deletions ms/uplink.c
Original file line number Diff line number Diff line change
Expand Up @@ -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()
{
Expand Down

0 comments on commit fdf6f73

Please sign in to comment.