Building OpenSSL with OpenWatcom on ArcaOS: Second Porting Effort
I’ve written before about my OpenSSL port to OS/2. I’m doing this with OpenWatcom 1.9 on the ArcaOS flavour of OS/2.
Building with no Assembler
First, we copy OS2-OW.cmd
to OS2-OW-NOASM.cmd
and then make the new file run perl Configure OS2-OW no-asm
and perl util\mk1mf.pl no-asm OS2-OW > OS2-OW.mak
.
Then it’s just a matter of building the make file with OS2\OS2-OW-NOAM.cmd
and building with wmake -u -c -f OS2-OW.mak
.
This builds the libraries ssl.lib
and crypto.lib
plus a few applications. Some of them work.
apps/ca.c
This file fails to build with the error message .\apps\ca.c(86): Error! E1055: Unable to open 'sys/file.h'
and we fix that by adding
&& !defined(OPENSSL_SYS_OS2)
on line 85 where it’s including sys/file.h
and now this application builds also.
The Heisenbug
Now that we have crypto.lib
and ssl.lib
it’s time to try out OpenSSL with a simple example. Copying some code from the internet, and trying it out, we get a mysterious crash inside
SSL_CTX_new( method )
which causes the example program to terminate.
In order to debug this problem, we start by changing the optimization parameters and replace them with debugging symbols. In util/pl/OS2-OW.pl
we make
$cflags="-DL_ENDIAN -d2 ";
in order for OpenSSL to be built with debugging symbols instead of optimizations.
Then we just delete everything in the out/
and tmp/
directories and build all over again with OS2-OW-NOASM.cmd
and wmake -u -c -f OS2-OW.mak
.
Lo and behold, there is no crash when we link with the new .lib
files. This is definitely a Heisenbug.
Final Words
We now have a somewhat functioning OpenSSL port and can make simple applications such as hello, world
work, albeit with a debug build, but more research is needed before the port can be considered finished. Particularly because there is a Heisenbug in the optimized version, which could be a code generation bug in OpenWatcom, or a symptom of something broken inside OpenSSL.
Do you need professional help with OS/2? Write to johann@myrkraverk.com.