OpenWatcom 1.6 passes tests with DLL build
Ross Johnson
Ross.Johnson@homemail.com.au
Thu May 31 07:23:00 GMT 2007
Hi Marc,
This is good news.
Sending a small patch via the list is fine I think and if in doubt you
can send direct to me. I'll endeavour to get it into the next release,
which is long overdue. Could you please include your Wmakefile - I'm
sure I had one at some point but I can't find it here anywhere.
Regards.
Ross
Marc Peter wrote:
> Hi,
>
> I've managed to build a DLL version of the library with Open Watcom 1.6
> which passes all tests after only slight modifications to the source.
>
> I used the CVS sources.
>
> Here is a short summary of the changes I made:
> - use the -br compiler switch for both the library and the tests
> This is necessary so both, library and application, use the same
> run-time library instance. This fixes the errno problem mentioned
> in README.Watcom.[1]
> - enable inclusion of <stdint.h>
> Open Watcom has int64_t in this header.
> - define PTW32_CDECL to be empty
> This prevents compilation errors in tests, where calling conventions
> for callbacks don't match. This could also have been fixed by using
> proxy functions for the callbacks in the tests, but I went for the
> quick fix.[2]
> - use #pragma aux syntax for inline assembly
> This is more efficient then _asm { ... } syntax and doesn't require
> to disable any compiler warnings.
> - fix Wamekefile in the "tests" directory
> Some extensions in the PASSES variable were missing.
>
> The patch is 225 lines long, my experimental make file has another 22
> lines. If it is okay with the policy of this list, I can attach them in
> another message.
>
> Note:
> The "Wmakefile" mentioned in README.Watcom was nowhere to be found.
>
> I have not performed any regression tests with other compilers, but I
> don't expect any incompatibilities.
>
>
> best regards
> Marc
>
>
> [1] As soon as a thread is started, the CRT must behave slightly
> different, for instance lock concurrently used resources such as
> the heap during malloc/free calls. This is the reason why new
> threads must be created with a CRT function like _beginthread(ex),
> and not by calling the Win32 API directly.
>
> [2] __cdecl was only chosen so a DLL created with Open Watcom can be
> used with different compilers. But mixing runtime libraries of
> different compilers is another step further towards "interesting"
> behavior than using two instances of the same CRT - see errno
> problem. So, if we restrict the DLL to be only used with Watcom
> generated applications, we can safely use register based calling.
>
>
>
More information about the Pthreads-win32
mailing list