🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: gnu.g++.lib.bug
1 messages
1 total messages Started by David Edelsohn Tue, 22 Dec 1992 22:31
Re: libg++-2.3 build problems under AIX-3.2
#331
Author: David Edelsohn
Date: Tue, 22 Dec 1992 22:31
83 lines
4451 bytes
	[Possible gcc backend bug for RS/6000 architecture.  libg++-2.3
does not pass its self-tests (make check) and calls abort because of assert
in tFile.C:t11().]

	I have tracked down the bug in formatted I/O further by comparing
the steps that the Sun version takes versus the RS/6000 version.  For
t11(), cout.form(...), the Sun version calls __outfloat() from
streambuf::vform() with precision=2 and fill=' ' while the RS/6000 version
uses precision=6 and fill=GARBAGE.  fill is set correctly before the call
but is corrupted in the call itself (it is wrong in the called subroutine
itself so this presumably is not a gdb-4.7 bug).  precision is set
differently because the Sun and RS/6000 take slightly different paths
through the code for the '.' case of the format.  The Sun executes:


                        while (is_digit(ch)) {
                                n = 10 * n + to_digit(ch);
                                ch = *fmt++;
                        }

but the RS/6000 skips that fragment and proceeds directly to:

                        prec = n < 0 ? -1 : n;
                        goto reswitch;

so that it ignores the precision specification.  This appears to be an
error in the generated code.  I have not tried to check the assembly output
itself.  As I stated in the original report, I am using gcc-2.3.2 for both
the Sun and RS/6000 tests.  gdb call and traceback information follows.

					David
(Disclaimer: I do not speak for IBM and it does not speak for me.)

	Sun call and traceback:

__outfloat (value=5.5, sb=0xf7fff150, type=102, width=0, precision=2, flags=0,
    sign_mode=0 '\000', fill=32 ' ') at outfloat.C:31
31          int count = 0;
(gdb) where
#0  __outfloat (value=5.5, sb=0xf7fff150, type=102, width=0, precision=2,
    flags=0, sign_mode=0 '\000', fill=32 ' ') at outfloat.C:31
#1  0xb8d8 in streambuf::vform (this=0xf7fff150, fmt0=0x0,
    ap=0xf7fff90c "@\031") at sbufvform.C:339
#2  0xb40c in help_vform (sb=0x1a9a4, fmt0=0x4fb0 "%.2f+%.2f = %4.3e\n%n",
    ap=0xf7fff904 "@\026") at sbufvform.C:86
#3  0xb4bc in streambuf::vform (this=0x1a9a4,
    fmt0=0x4fb0 "%.2f+%.2f = %4.3e\n%n", ap=0xf7fff904 "@\026")
    at sbufvform.C:200
#4  0xa6dc in ostream::form (this=0x1a3bc,
    format=0x4fb0 "%.2f+%.2f = %4.3e\n%n") at iostream.C:638
#5  0x5060 in t11 () at tFile.C:423
#6  0x52e0 in main (argc=0, argv=0xf7fffa34) at tFile.C:460
(gdb)

	RS/6000 call and traceback:

__outfloat (value=5.5, sb=0x2ff7f778, type=102 'f', width=0, precision=6,
    flags=0, sign_mode=0 '\000', fill=536870912) at outfloat.C:31
31          int count = 0;
(gdb) where
#0  __outfloat (value=5.5, sb=0x2ff7f778, type=102 'f', width=0, precision=6,
    flags=0, sign_mode=0 '\000', fill=536870912) at outfloat.C:31
#1  0x10013270 in streambuf::vform (this=<unknown struct>,
    fmt0=0x10018a58 "%.2f+%.2f = %4.3e\n%n", ap=0x2ff7fa28 "@\031")
    at sbufvform.C:339
#2  0x10012e1c in help_vform (sb=<unknown struct>,
    fmt0=0x10018a58 "%.2f+%.2f = %4.3e\n%n", ap=0x2ff7fa20 "@\026")
    at sbufvform.C:86
#3  0x10012eac in streambuf::vform (this=<unknown struct>,
    fmt0=0x10018a58 "%.2f+%.2f = %4.3e\n%n", ap=0x2ff7fa20 "@\026")
    at sbufvform.C:200
#4  0x10006ed4 in ostream::form (this=0x20051fa4,
    format=0x10018a58 "%.2f+%.2f = %4.3e\n%n") at streambuf.h:5
#5  0x10002a6c in t11 () at tFile.C:423
#6  0x10002c80 in main (argc=1, argv=0x2ff7faf0) at tFile.C:460
#7  0x1000042c in __start ()
(gdb)
===============================================================================
David Edelsohn                                      T.J. Watson Research Center
c$dje@watson.ibm.com                                P.O. Box 218
+1 914 945 3011 (Tieline 862)                       Yorktown Heights, NY 10598
"The Church doesn't have problems with sex; the world does" -- Vatican official
"A good theory should fit on a T-shirt" -- Astronomer at Jan 1992 AAS meeting
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads