wine/port.h #include fixes

François Gouget fgouget at codeweavers.com
Thu Oct 18 21:39:11 CDT 2001


Roger Fujii wrote:
> 
> François Gouget wrote:
> 
> > > well, I had to add an -lc to the gcc -shared to resolve the libc labels
> > > on some of the libraries (winedbg and some others).
> >    I don't think you should not use '-shared' to compile the dlls.
> 
> err. double negatives...  The choice of gcc -shared was done by configure.

    The dangers of rewriting a sentence. Still I find it strange that
configure chose '-shared'. Ah, I see why: it's because now you are using
the GNU binutils. Now that we get gcc to use the GNU binutils it uses
'-shared' too.


> > If you had trouble with the 'standard' '-Wl,-B,symbolic' then it's because
> > you are using the wrong version of ld.
> 
> actually, the solaris linker ate that.  Now whether or not it does the
> same thing as gld is another matter.

   I found that the Solaris linker gave a return code indicating
success, but that in the make log, when linking Wine dlls, I would
sometimes see errors about 'main' being an unresolved symbol. These went
away when I switched to using '-symbolic' and also when we switched to
using gld instead of ld.

[...]
> >    But you need the GNU ld anyway.
> 
> just as a query, is there some documentation somewhere that explains
> why you need gld?  gas is obvious, but it's not clear to me why gld
> makes a difference.

    One thing we noticed was an alignment problem with the init section
generated by winebuild. This caused a crash ow wine on startup and went
away with gld. There may have been other issues.


> >    As for '-lc' we had this problem too. I don't understand why we need
> > to specify it explicitly. Maybe this is because we are not using the
> > native ld. I would like to understand why we need to do so but it looks
> > like we should have yet another configure check for this.
> 
> funny you should mention this.  Just got this from another maillist:
> 
>   > I get the following message from a distribution I created on Linux.
>   >
>   > This is displayed when the configure script is run from the distribution
>   > directory.
>   >
>   > *** Warning: Releases of GCC earlier than version 3.0 cannot reliably
>   > *** create self contained shared libraries on Solaris systems, without
>   > *** introducing a dependency on libgcc.a.  Therefore, libtool is disabling
>   > *** -no-undefined support, which will at least allow you to build shared
>   > *** libraries.  However, you may find that when you link such libraries
>   > *** into an application without using GCC, you have to manually add
>   > *** `gcc --print-libgcc-file-name` to the link command.  We urge you to
>   > *** upgrade to a newer version of GCC.  Another option is to rebuild your
>   > *** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer.

   This only talks about libgcc, i.e. '-lgcc', not about libc, i.e.
'-lc'. I did not notice any problem with libgcc. I am using gcc 2.95.3
btw.

> > > >    We still have to investigate how to detect the Solaris toolchain and
> > > > issue a big fat error message in the configure script. Also we should
> > > > try to see if there is a way to tell gcc which toolchain to use.
> > > well, you could tell it with a -Bpath for gas/ld.
> >    It would be cleaner indeed. It looks like something that configure.in
> > should check and set if necessary. Maybe it should even provide a
> > configure option for that...
> 
> I'm hoping to figure out how to make this use the native tools...
> (so I'm a masochist :) )

   This seems like something that would be best attempted once Wine
works well with the GNU tools.
   Here is a short list of what needs to be done already:
 * enhance the configure script to better detect the binutils issues,
and a few other problems (e.g. test -e, lex)
 * solve some process/thread id issues: Wine expects each thread to have
a separate process id. This is necessary for proper handle inheritance
 * teach Wine how to send a signal to a specific LWP (hint, man -s 4
proc). This is for SuspendThread and needed by winedbg too.
 * get ptrace to work with LWPs. This is for winedbg.
 * fix all these _FILE_OFFSET_BITS warnings. I have the solution at
hand. I just need some time to get back to it.

-- 
François Gouget
fgouget at codeweavers.com




More information about the wine-devel mailing list