63 lines
2.2 KiB
Text
63 lines
2.2 KiB
Text
|
Watcom compiler notes
|
||
|
=====================
|
||
|
|
||
|
Status
|
||
|
------
|
||
|
Not yet usable. Although the library builds under Watcom it
|
||
|
substantially fails the test suite.
|
||
|
|
||
|
There is a working Wmakefile for wmake for the library build.
|
||
|
|
||
|
invoke as any of:
|
||
|
wmake -f Wmakefile clean WC
|
||
|
wmake -f Wmakefile clean WC-inlined
|
||
|
wmake -f Wmakefile clean WCE
|
||
|
wmake -f Wmakefile clean WCE-inlined
|
||
|
|
||
|
These build pthreadWC.dll and pthreadWCE.dll.
|
||
|
|
||
|
There is a working Wmakefile for wmake for the test suite.
|
||
|
|
||
|
invoke as any of:
|
||
|
wmake -f Wmakefile clean WC
|
||
|
wmake -f Wmakefile clean WCX
|
||
|
wmake -f Wmakefile clean WCE
|
||
|
wmake -f Wmakefile clean WC-bench
|
||
|
wmake -f Wmakefile clean WCX-bench
|
||
|
wmake -f Wmakefile clean WCE-bench
|
||
|
|
||
|
|
||
|
Current known problems
|
||
|
----------------------
|
||
|
|
||
|
Library build:
|
||
|
The Watcom compiler uses a different default call convention to MS C or GNU C and so
|
||
|
applications are not compatible with pthreadVC.dll etc using pre 2003-10-14 versions
|
||
|
of pthread.h, sched.h, or semaphore.h. The cdecl attribute can be used on exposed
|
||
|
function prototypes to force compatibility with MS C built DLLs.
|
||
|
|
||
|
However, there appear to be other incompatibilities. Errno.h, for example, defines
|
||
|
different values for the standard C and POSIX errors to those defined by the MS C
|
||
|
errno.h. It may be that references to Watcom's threads compatible 'errno' do set
|
||
|
and return translated numbers consistently, but I have not verified this.
|
||
|
|
||
|
Watcom defines errno as a dereferenced pointer returned by the function
|
||
|
_get_errno_ptr(). This is similar to both the MS and GNU C environments for
|
||
|
multithreaded use. However, the Watcom version appears to have a number of problems:
|
||
|
|
||
|
- different threads return the same pointer value. Compare with the MS and GNU C
|
||
|
versions which correctly return different values (since each thread must maintain
|
||
|
a thread specific errno value).
|
||
|
|
||
|
- an errno value set within the DLL appears as zero in the application even though
|
||
|
both share the same thread.
|
||
|
|
||
|
Therefore applications built using the Watcom compiler may need to use
|
||
|
a Watcom built version of the library (pthreadWC.dll). If this is the case, then
|
||
|
the cdecl function attribute should not be required.
|
||
|
|
||
|
Application builds:
|
||
|
The test suite fails with the Watcom compiler.
|
||
|
|
||
|
Test semaphore1.c fails for pthreadWC.dll because errno returns 0 instead of EAGAIN.
|