DLLs built corrupted with mingw32 hunt

Suhaib M. Siddiqi Ssiddiqi@InspirePharm.Com
Sun Feb 28 23:02:00 GMT 1999


Can I ask for a favor? Can people avoid attaching "test suites" and
error file logs as attachment to
list.  This can be sent directly to authors too.





----- Original Message -----
From: Paul Sokolovsky <paul-ml@is.lg.ua>
To: Mumit Khan <khan@xraylith.wisc.edu>; DJ Delorie <dj@delorie.com>;
<cygwin@sourceware.cygnus.com>
Sent: Friday, February 19, 1999 2:20 PM
Subject: DLLs built corrupted with mingw32 hunt


>Hello Mumit,
>
>
>      This describes problem concerning building DLLs with mingw32 on
>win95, with solution, some kind of.
>
>      Fact: dlls, linked with native mingw32 ld on win95 in most cases
>are not relocatable. The problem is in behavior of underlying lseek()
>(SetFilePointer() ultimately). It sure not there when cross-compiling,
>and I don't believe that NT has it - how could they get C2 for 3.51
>with it in?
>
>      External symptom is that referred dlls has garbage at the
>sections paddings. I send 2 samples to Mumit if he'd like to take a
>look at them. Here's a utility to check relocatabilty by practise:
>
>----
>#include <windows.h>
>
>char tempname[100];
>
>void main(int argc,char *argv[])
>{
>  HANDLE h=0,h2=0;
>  if (argc!=2) {printf("Usage: check-dll-reloc <dll>\n"); exit(0);}
>  h=LoadLibrary(argv[1]);
>  if (!h) {printf("Couldn't load image '%s' at all\n",argv[1]);
exit(0);}
>  strcpy(tempname,"dllXXXXXX");
>  mktemp(tempname);
>  strcat(tempname,".dll");
>  printf("Copying to temp '%s'\n",tempname);
>  CopyFile(argv[1],tempname,TRUE);
>  h2=LoadLibrary(tempname);
>  printf("Handles (load addrs) are: %x %x\n",h,h2);
>  printf("Image is %srelocatable\n",h2?"":"NOT ");
>  FreeLibrary(h);
>  FreeLibrary(h2);
>  DeleteFile(tempname);
>}
>----
>
>    The problem itself is due win95 SetFilePointer(), when seeking
>past end of file, leaving previous medium contents in areas not
>explicitly written, despite POSIX saying they should be zeroed. BFD
>likes such seeks, so it goes. In cygwin b20 dll was introduced
workaround
>for this, so its ld produces correct dll's. It's, however, would be
>nice to have mingw32 self-sufficient, so I tried to fix it. I cast
>aside making wrapper around lseek by analogy with cygwin because I
>neither like that solution nor have idea how to implement it
>correctly. Instead I found "bad" places in BFD and did workarounds
there.
>
>    Attached is patch as of bfd from cygwin b20. It's somewhat adhoc,
>so changes wrapped in #ifdefs.
>
>    With this patch dll's are ok. (If someone has this problems and
>wants immediate solution, there's precompiled binary at
> http://ftp.is.lg.ua/pub/gnuwin32/alpha/ld-mingw32-replacement.zip .
>It's however an alpha effort featuring bfd as dll (required) at
> http://ftp.is.lg.ua/pub/gnuwin32/alpha/bfd-dll.zip and another
>underlying library). But strip built with patched bfd still wrecks dll
>off relocatability, just as cygwin b20 strip does.
>
>
>Best regards,
> Paul                          mailto:paul-ml@is.lg.ua


------------------------------------------------------------------------
--------

>--
>Want to unsubscribe from this list?
>Send a message to cygwin-unsubscribe@sourceware.cygnus.com


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com




More information about the Cygwin mailing list