[Python-Dev] Re: Switching to VC.NET 2003
Phillip J. Eby
pje at telecommunity.com
Sun Jan 4 11:11:47 EST 2004
At 02:57 PM 1/4/04 +0000, Paul Moore wrote:
>I have a patch which seems to do the right thing with respect to
>adding "-lmsvcr71" to the GCC link command.
>
>The resulting build looks OK, and building a simple extension works
>fine. Apparently, however, Phillip J. Eby got a working DLL without
>needing this. And indeed I have no problems omitting the -lmsvcr71. So
>we don't have a real example of the "potential issue" with mismatched
>MSVC runtimes. Nevertheless, if you do "objdump -p myext.pyd" and look
Aha, so *that*'s the option I needed ("private headers" didn't look like
something to do with dependencies). Dumping my kjbuckets.pyd, I got:
DLL Name: msvcrt.dll
vma: Hint/Ord Member-Name Bound-To
c1f8 36 __dllonexit
c208 147 _errno
c214 510 abort
c21c 522 calloc
c228 537 fflush
c234 547 fputc
c23c 552 free
c244 560 fwrite
c250 603 malloc
c25c 636 sprintf
I didn't think kjbuckets used that many C functions. Apparently there are
lots of debugging prints. protocols/_speedupds.pyd had much fewer:
DLL Name: msvcrt.dll
vma: Hint/Ord Member-Name Bound-To
9258 36 __dllonexit
9268 147 _errno
9274 510 abort
927c 537 fflush
9288 552 free
9290 603 malloc
and ZODB 4's _persistence.pyd has:
DLL Name: msvcrt.dll
vma: Hint/Ord Member-Name Bound-To
6200 36 __dllonexit
6210 108 _assert
621c 147 _errno
6228 510 abort
6230 537 fflush
623c 552 free
6244 603 malloc
6250 666 time
So it really does appear that the mscvcr71 linkage would be a very good idea.
>at the import tables, you do see that runtime symbols are satisfied
>from msvcrt without the -l flag, and from msvcr71 with it (apart from
>abort, which is always from msvcrt, which seems to be a peculiarity of
>how the mingw startup code is linked).
Do you think that's likely to cause any issues?
More information about the Python-Dev
mailing list