Problem with istream.seekg() and __mbstate_t
Craig Rodrigues
rodrigc@mediaone.net
Tue Feb 13 20:09:00 GMT 2001
On Mon, Feb 12, 2001 at 10:17:16PM -0500, Craig Rodrigues wrote:
> On Tue, Feb 13, 2001 at 01:04:20AM -0200, Alexandre Oliva wrote:
> > On Feb 12, 2001, Craig Rodrigues <rodrigc@mediaone.net> wrote:
> >
> > > /tmp/ccx9JhBd.o: In function `seek(std::istream&)':
> > > /tmp/ccx9JhBd.o(.text+0x3c): undefined reference to `std::istream::seekg(std::fpos<__mbstate_t>)'
> > > collect2: ld returned 1 exit status
> >
> > > Doing an nm on libstdc++.so.3, the closest symbol I could find was:
> > > 00053288 W std::istream::seekg(std::fpos<mbstate_t>)
> >
> > Looks like a binary compatibility problem. Could it be that libstdc++
> > was built with an older version of glibc headers, that had mbstate_t
> > as a struct name, as opposed to a typedef to __mbstate_t?
>
> I believe that is the case. I obtained this build of gcc
> from the CodeSourcery web page at: http://www.codesourcery.com/gcc-snapshots/ .
> I believe CodeSourcery compiles their snapshots on a Redhat 6.2
> system which comes with glibc 2.1.
>
> I am trying to run this on a glibc 2.2 system (RH 7.0). I was unaware
> that there would be a binary incompatibility in libstdc++ depending
> on if it was compiled on a glibc 2.1 or glibc 2.2 system.
Is it a requirement now that if libstdc++.so.3 is compiled, it
can only be used against a certain version of glibc? The fact
that mbstate_t has changed between glibc 2.1 and glibc 2.2 seems
to indicate a binary incompatibility that did not exist in
libstdc++ before.
--
Craig Rodrigues
http://www.gis.net/~craigr
rodrigc@mediaone.net
More information about the Libstdc++
mailing list