This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: binutils prerelease available for testing (feedback needed)


I've tried building binutils in three ways:

  cvs 20000718
  cvs 20000718 with the gas/config/obj-coff.c patch reverted
  cvs 20000721 (after DJ reverted the gas/config.obj-coff.c patch in
CVS)

I will try using the patch posted to the cygwin list by Mark E. on
2000-7-20 at 19:54 EDT.

In all three tested cases, I get the same behavior with libpng, pngtest,
*with png_libpng_ver exported as DATA*.

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

CASE 1: 'USE_GLOBAL_ARRAYS' #define'd -- this forces access to
'png_libpng_ver' to directly refer to a character array, rather than
being #defined into an access_function: 'png_get_header_ver()'

I can link statically. Executable works fine.

CASE 2: 'USE_GLOBAL_ARRAYS' #define'd (dll exports png_libpng_ver as a
DATA item)
I can link directly to the dll (that is, remove the import lib and the
static lib from the search path, *forcing* ld to link with the dll using
a virtual, in-memory, generate-on-the-fly import lib. Executable works
fine.

CASE 3: 'USE_GLOBAL_ARRAYS' #define'd (dll exports png_libpng_ver as a
DATA item)
I can link using the import lib. Executable stackdumps.

CASE 4: 'NO_GLOBAL_ARRAYS' #define'd (causes: #define png_libpng_ver
png_get_header_ver(); png_libpng_ver DOES NOT APPEAR anywhere in the
dll, importlib, static lib, or executable.

I can link statically. Executable works fine.

CASE 5: 'NO_GLOBAL_ARRAYS' #define'd. dll contains NO DATA items.
I can link directly to the dll. Executable works fine.

CASE 6: 'NO_GLOBAL_ARRAYS' #define'd. 
I can link using the import lib libpng.dll.a. Executable works fine.

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

Danny, when you ran your tests, did your DLL export any DATA items? 

The problem seems to be that the combination of: 'link using an import
lib' + 'DATA items exported by dll' doesn't work. None of the proposed
fixes helps this problem. (Haven't tested Mark E.'s patch yet)

--Chuck


Charles Wilson wrote:
> 
> I'll check to see if this eliminates my problems, later tonight.
> 
> --Chuck
> 
> Danny Smith wrote:
> >
> > Hi
> > You may be ahead of me on this but...
> > I have experienced similar problems as report by Eric Fifer and Charles
> > Wilson using binutils-000718, with access violations linking against C
> > dlls with data exports or with C++ dlls.
> >
> > But, rebuilding binutils-000718 after reverting the changes made to
> > gas/config/obj_coff.c
> > (http://sources.redhat.com/ml/binutils/2000-07/msg00226.html)  back to
> > binutils-000717 version, I can successfully build and link against dlls,
> > using either dllwrap or gcc -shared.  This works also with -mno-cygwin.
> > I have tested linking against implib as well as directly aginst dll
> > without implib.  Both work, for C and C++, and dll data is exported
> > correctly.   Also with standalone MingW.
> >
> > Hope this helps.
> >
> > Regards
> >
> > --
> > 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

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]