Subject: Re: Cygwin gcc/ld doesn't like some DLL filenames...
From: Jason Tishler <[email-masked]>
To: Bernard Dautrevaux <[email-masked]>
Cc: Cygwin <[email-masked]>
Date: Thu, 26 Oct 2000 05:23:40 -0400

On Thu, Oct 26, 2000 at 10:33:48AM +0200, Bernard Dautrevaux wrote:
> Sure you do not have any other "python2.0.dll" somewhere on your system
> (even if it's not on the PATH)?

Just to be safe, I did a find on my entire computer for "python2.0.dll".
I only found one -- the one that is part of my test case.

> Could you try "cygcheck -v ./main.exe" for both cases?

Bad main.exe:

    $ cygcheck -v ./main.exe
    ./main.exe - os=4.0 img=1.0 sys=4.0
      .\python2.0.dll - os=4.0 img=1.0 sys=4.0
        "python2.0.dll" v0.0 ts=2000/10/26 4:52
        C:\Cygwin\1.1.4\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
          "cygwin1.dll" v0.0 ts=2000/8/3 20:53
          C:\WINNT\System32\KERNEL32.dll - os=4.0 img=4.0 sys=4.0
            "KERNEL32.dll" v0.0 ts=1999/7/20 17:19
            C:\WINNT\System32\ntdll.dll - os=4.0 img=4.0 sys=4.0
              "ntdll.dll" v0.0 ts=1999/7/9 15:26
        C:\WINNT\System32\KERNEL32.dll (already done)
      C:\Cygwin\1.1.4\bin\cygwin1.dll (already done)
      C:\WINNT\System32\KERNEL32.dll (already done)

Good main.exe:

    $ cygcheck -v ./main.exe
    ./main.exe - os=4.0 img=1.0 sys=4.0
      C:\Cygwin\1.1.4\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
        "cygwin1.dll" v0.0 ts=2000/8/3 20:53
        C:\WINNT\System32\KERNEL32.dll - os=4.0 img=4.0 sys=4.0
          "KERNEL32.dll" v0.0 ts=1999/7/20 17:19
          C:\WINNT\System32\ntdll.dll - os=4.0 img=4.0 sys=4.0
            "ntdll.dll" v0.0 ts=1999/7/9 15:26
      C:\WINNT\System32\KERNEL32.dll (already done)
      .\python2.0.dll - os=4.0 img=1.0 sys=4.0
        "python2.0.dll" v0.0 ts=2000/10/26 4:52
        C:\Cygwin\1.1.4\bin\cygwin1.dll (already done)
        C:\WINNT\System32\KERNEL32.dll (already done)

So the above shows a "difference" in the ordering of the DLLs in
main.exe.  I also noticed this difference when fiddling about with
objdump -p:

Bad main.exe:

The Import Tables (interpreted .idata section contents)
 vma:            Hint    Time      Forward  DLL       First
                 Table   Stamp     Chain    Name      Thunk
 00004000       00004054 00000000 00000000 00004150 00004090

        DLL Name: python2.0.dll
        vma:  Hint/Ord Member-Name
        40c8        0  sub
        The Import Address Table is identical

 00004014       00004060 00000000 00000000 0000417c 0000409c

        DLL Name: cygwin1.dll
        vma:  Hint/Ord Member-Name
        40d0       24  __main
        40dc      540  calloc
        40e8      594  cygwin_internal
        40fc      611  dll_crt0__FP11per_process
        4118      676  free
        4120      812  malloc
        412c      893  realloc
        The Import Address Table is identical

 00004028       00004084 00000000 00000000 0000418c 000040c0

        DLL Name: KERNEL32.dll
        vma:  Hint/Ord Member-Name
        4138      290  GetModuleHandleA
        The Import Address Table is identical

Good main.exe:

The Import Tables (interpreted .idata section contents)
 vma:            Hint    Time      Forward  DLL       First
                 Table   Stamp     Chain    Name      Thunk
 00004000       00004054 00000000 00000000 00004168 00004090

        DLL Name: cygwin1.dll
        vma:  Hint/Ord Member-Name
        40c8       24  __main
        40d4      540  calloc
        40e0      594  cygwin_internal
        40f4      611  dll_crt0__FP11per_process
        4110      676  free
        4118      812  malloc
        4124      893  realloc
        The Import Address Table is identical

 00004014       00004078 00000000 00000000 00004178 000040b4

        DLL Name: KERNEL32.dll
        vma:  Hint/Ord Member-Name
        4130      290  GetModuleHandleA
        The Import Address Table is identical

 00004028       00004084 00000000 00000000 0000418c 000040c0

        DLL Name: python2.0.dll
        vma:  Hint/Ord Member-Name
        4144        0  sub
        The Import Address Table is identical

Does any of the above shed more light on the situation?

Note that if I change the name to Python2.0.dll, python2.1.dll,
python20.dll, or anything else that I can think of, main.exe run normally
even though its DLL ordering is the same as python2.0.dll.

Thanks,
Jason

-- 
Jason Tishler
Director, Software Engineering       Phone: +1 (732) 264-8770 x235
Dot Hill Systems Corporation         Fax:   +1 (732) 264-8798
82 Bethany Road, Suite 7             Email: [email-masked]
Hazlet, NJ 07730 USA                 WWW:   http://www.dothill.com

--
Want to unsubscribe from this list?
Send a message to [email-masked]