This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


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

Re: Restore __eprintf


On 29-May-2001, Zack Weinberg <zackw@Stanford.EDU> wrote:
> On Tue, May 29, 2001 at 04:35:05PM -0700, Jeffrey Oldham wrote:
> > My recent upgrade to the latest dejagnu for mips-sgi-irix6.5 revealed
> > hundreds of libstdc++-v3 test failures all because `__eprintf' is
> > declared but not defined.  __eprintf() is declared in a
> > mips-sgi-irix6.5/include/assert.h.  assert.h is included by
> > libstdc++-v3/include/c_std/bits/std_cassert.h.  See the attached file
> > for an example.
> 
> mips-sgi-irix6.5/include/assert.h was installed by an older version of
> the compiler.  Your problem should go away if you remove that file.

You may also need to remove any object files or static libraries
compiled with older versions of gcc, since they might contain
references to __eprintf().

In other words, to put it fairly strongly:
for Irix, the version of GNU C in the current GCC 3.0 snapshots
has broken binary backwards compatibility of object files with GCC 2.x.

The only good news is that there is a work-around: extract the definition
of __eprintf from the libgcc.a in your old GCC distribution, and add that
object file to your link line.

Still, the work-around would be a pain.
Would it be possible to put __eprintf() in the shared glibc just for Irix?

Or alternatively, how about putting it in the shared glibc for all
architectures, marking it as deprecated, and then removing it in GCC 4.0?

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
                                    |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.


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