[Python-Dev] MinGW And The other Py2.4 issue

A.B., Khalid abkhd at hotmail.com
Mon Dec 13 17:43:18 CET 2004


Paul Moore wrote:
>I tried this out, and from some basic uses, it seems to work OK.
>However, the PYD file references msvcrt.dll, which suggests that there
>will be issues in more complex cases. The biggest problem with CRT
>compatibility issues is that (AFAIK) no-one has actually been able to
>trigger a *real* error, all of the problems are still theoretical. I
>have done some fairly extensive analysis of what could go wrong, and I
>suspect that there are very few genuine cases where data from one CRT
>could end up being manipulated by another - but this doesn't mean that
>the problems aren't real, just VERY hard to locate :-(



First of all, thank you for your input. It is greatly appreciated. And
yes if Martin, for whom I have much respect, can help here, then that
would be awesome.

Okay. This is partly my own fault. I am not using a standard MinGW
distribution. This is why there is no release date in the sys.version
information of the Python I compiled. I am using GCC RC 3.4.1 but the
linking is still done by the 2002 MinGW 3.2, which is most probably hard-
wired to use msvcrt.dll. Having said that, however, let me quickly add
that it is almost a certainity that the newer standard MinGW
distributions link with the latest libraries.

Nevertheless, I updated pyMinGW's cygwinccompiler.py to always link in
with libmsvcr71, and rebuit the sample pymingw extension[1]. Now
according to objdump we get the following:

[CUT]

00007014       000070b0 00000000 00000000 00007420 00007158

        DLL Name: KERNEL32.dll
        vma:  Hint/Ord Member-Name Bound-To
        72fc        0  AddAtomA
        7308      147  FindAtomA
        7314      191  GetAtomNameA

00007028       000070c4 00000000 00000000 00007468 0000716c

        DLL Name: msvcr71.dll
        vma:  Hint/Ord Member-Name Bound-To
        7324       56  __dllonexit
        7334      189  _errno
        7340      610  ctime
        7348      619  fflush
        7354      630  fputs
        735c      634  free
        7364      642  fwrite
        7370      685  malloc
        737c      701  puts
        7384      724  strcmp
        7390      726  strcpy
        739c      730  strlen
        73a8      733  strncpy
        73b4      748  time

0000703c       00007104 00000000 00000000 00007478 000071ac

        DLL Name: msvcrt.dll
        vma:  Hint/Ord Member-Name Bound-To
        73bc      510  abort

00007050       00000000 00000000 00000000 00000000 00000000

There is an export table in .edata at 0x6000

[CUT]



So what see ye? :) Does it look good?



Best wishes
Khalid




[1] pymingw-01.zip (5.37 KB):
Location: http://jove.prohosting.com/iwave/misc/pymingw-01.zip
MD5: 63b486093b344b0299538c952dea4ce1
--------------------------
Contents in KB:
--------------------------
PYMINGW  PY          1.115  13/12/04  16:12 pymingw.py
PYMINGW  I             278  13/12/04   1:00 pymingw.i
EXAMPLE  C             848  13/12/04   0:23 example.c
SETUP    PY            192  13/12/04   0:59 setup.py
_PYMINGW PYD         9.216  13/12/04  16:12 _pymingw.pyd

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/



More information about the Python-Dev mailing list