Subject: Re: Shared library troubles
To: Alex Zepeda <garbanzo@hooked.net>
From: Andy Finnell <andyf@vei.net>
List: port-mac68k
Date: 07/07/1999 12:44:32
Alex Zepeda wrote:
> > > Do you have duplicate sets of headers installed?
> >
> > So its a class or a structure? I was think along the lines of a
> > function... I didn't think to check the headers, but I don't think so.
> > I'll check.
>
> I'm pretty sure. I can't think of any reason why a function's size would
> be checked (in fact, that's almost the whole point of shlibs).. also,
> turn off any exotic options.
I've tracked down what the symbol is. In the pthread's stdio.h header,
the symbol __sF (what ld.so is complaining about changing sizes) is an
extern array of FILE.
__BEGIN_DECLS
extern FILE __sF[];
__END_DECLS
Right before this FILE is defined (redefined?). Later on in this file we
have some important #defines:
#define stdin (&__sF[0])
#define stdout (&__sF[1])
#define stderr (&__sF[2])
With some testing I've found I only get this warning when I reference
stdin, stdout, or stderr directly. Since I don't touch any of the file
stuff in any of my files, it maybe something in a file I didn't write.
Could someone with access to mit-pthreads on another netbsd machine try
this test? Simply dynamically link in the pthread library and try to
reference stdin, stdout, or stderr. This would help me a lot.
Thanks,
-andy