Monthly Archives: October 2018
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.
CWEB: Hello, World!
To give literate programming a try, I wrote the quintessential hello, world program as an exercise. It includes how to build and run the resulting hello.c file with several compilers on different operating systems. The cweb source is not included though, so people cannot just tangle my source code. Writing out hello.c is left as an exercise for the reader.