gcc-2.95.2-51 is buggy
Quoted 4 lines
Quoted 1 line
... RedHat's GCC snapshot "2.96" handles this case just fine.
Now, if you can isolate the relevant part of the diff between 2.95.2 and RH 2.96...
Maybe I have to be more precise in the statement "gcc 2.95.2 is buggy".
I just installed gcc 2.95.2 freshly ftp'ed from ftp.gnu.org, and
% /usr/bin/gcc -v
Reading specs from /usr/lib/gcc-lib/i486-suse-linux/2.95.2/specs gcc version 2.95.2 19991024 (release)
% /usr/bin/gcc -Wall -O2 -o bug bug.c; ./bug0x84800000
% /usr/gcc/aeb/bin/gcc -v
Reading specs from /usr/gcc/aeb/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs gcc version 2.95.2 19991024 (release)
% /usr/gcc/aeb/bin/gcc -Wall -O2 -o nobug bug.c; ./nobug0x0
So, not all versions of gcc 2.95.2 are equal.
% rpm -qf /usr/bin/gcc
gcc-2.95.2-51
This is from a SuSE distribution, I forget which, not very recent. Revised summary: gcc-2.95.2-51 from SuSE is buggy.
Andries
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
Quoted 11 lines · On Fri, 24 Nov 2000 06:20:33 +0100 (MET), [email protected] wrote:
Reading specs from
/usr/lib/gcc-lib/i486-suse-linux/2.95.2/specsgcc version 2.95.2 19991024 (release)
%/usr/bin/gcc-Wall -O2 -o bugbug.c; ./bug0x84800000
%/usr/gcc/aeb/bin/gcc-v
Reading specs from/usr/gcc/aeb/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specsgcc version 2.95.2 19991024 (release)
%/usr/gcc/aeb/bin/gcc-Wall -O2 -o nobugbug.c; ./nobug0x0So, not all versions of gcc 2.95.2 are equal.
Interesting. Plain vanilla 2.95.2 from ftp.gnu.org exhibits the same bug on an BSDI2.1 i386 system.
defiant ~/tmp$ gcc -v
Reading specs from /usr/local/gnu/lib/gcc-lib/i386-pc-bsdi2.1/2.95.2/specs gcc version 2.95.2 19991024 (release)
defiant ~/tmp$ gcc -O2 -o bug bug.c; ./bug0x4800000
Ion
Signature · 6 lines
It is better to keep your mouth shut and be thought a fool,
than to open it and remove all doubt.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/Quoted 6 lines
Quoted 6 lines
Reading specs from
/usr/lib/gcc-lib/i486-suse-linux/2.95.2/specsgcc version 2.95.2 19991024 (release)
%/usr/bin/gcc-Wall -O2 -o bugbug.c; ./bug0x84800000
%/usr/gcc/aeb/bin/gcc-v
Reading specs from
/usr/gcc/aeb/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs
Quoted 9 lines
Quoted 5 lines
gcc version 2.95.2 19991024 (release)
%/usr/gcc/aeb/bin/gcc-Wall -O2 -o nobugbug.c; ./nobug0x0So, not all versions of gcc 2.95.2 are equal.
Interesting. Plain vanilla 2.95.2 from ftp.gnu.org exhibits the same bug on an BSDI2.1 i386 system.
Quoted 8 lines
defiant ~/tmp$ gcc -v
Reading specs from/usr/local/gnu/lib/gcc-lib/i386-pc-bsdi2.1/2.95.2/specsgcc version 2.95.2 19991024 (release)
defiant ~/tmp$ gcc -O2 -o bugbug.c; ./bug0x4800000Ion
Don't know if anyone else has noticed this but from what I've seen
posted it appears, unless I missed something, the gcc 2.95.2s that have exibited the bug were compiled for a 386 or a 486 while the one on which it worked was a 686. Perhaps the bug only appears on certain gcc configurations. Either the build configuration or the default optimization method(s), if I remember correctly gcc optimizes for the platform (i.e. i386, i486, i586, etc) it was configured for by default.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
Quoted 20 lines · On Fri, Nov 24, 2000 at 06:20:33AM +0100, [email protected] wrote:
Quoted 4 lines
Quoted 1 line
... RedHat's GCC snapshot "2.96" handles this case just fine.
Now, if you can isolate the relevant part of the diff between 2.95.2 and RH 2.96...
Maybe I have to be more precise in the statement "gcc 2.95.2 is buggy".
I just installed gcc 2.95.2 freshly ftp'ed from ftp.gnu.org, and
%
/usr/bin/gcc-v
Reading specs from/usr/lib/gcc-lib/i486-suse-linux/2.95.2/specsgcc version 2.95.2 19991024 (release)
%/usr/bin/gcc-Wall -O2 -o bugbug.c; ./bug0x84800000
%/usr/gcc/aeb/bin/gcc-v
Reading specs from/usr/gcc/aeb/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specsgcc version 2.95.2 19991024 (release)
%/usr/gcc/aeb/bin/gcc-Wall -O2 -o nobugbug.c; ./nobug0x0
Quoted 1 line
So, not all versions of gcc 2.95.2 are equal.
I believe all 2.95.2's are equal in this, I think the fact that it gives 0 in the nobug case is some other reason:
$ for i in gcc kgcc '/usr/src/gcc-trunk/obj/gcc/xgcc -B /usr/src/gcc-trunk/obj/gcc/' '/usr/src/gcc-2.95.2/obj/gcc/xgcc -B /usr/src/gcc-2.95.2/obj/gcc/'; do $i -v; for j in -mcpu=i386 -mcpu=i586 -mcpu=i686; do $i $j -O2 -o aeb aeb.c; echo -n "$i $j "; ./aeb; done; done Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.0) gcc -mcpu=i386 0x0 gcc -mcpu=i586 0x0 gcc -mcpu=i686 0x0 Reading specs from /usr/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/specs gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) kgcc -mcpu=i386 0x0 kgcc -mcpu=i586 0x0 kgcc -mcpu=i686 0x0 Reading specs from /usr/src/gcc-trunk/obj/gcc/specs Configured with: gcc version 2.97 20001120 (experimental) /usr/src/gcc-trunk/obj/gcc/xgcc -B /usr/src/gcc-trunk/obj/gcc/ -mcpu=i386 0x0 /usr/src/gcc-trunk/obj/gcc/xgcc -B /usr/src/gcc-trunk/obj/gcc/ -mcpu=i586 0x0 /usr/src/gcc-trunk/obj/gcc/xgcc -B /usr/src/gcc-trunk/obj/gcc/ -mcpu=i686 0x0 Reading specs from /usr/src/gcc-2.95.2/obj/gcc/specs gcc version 2.95.2 19991024 (release) /usr/src/gcc-2.95.2/obj/gcc/xgcc -B /usr/src/gcc-2.95.2/obj/gcc/ -mcpu=i386 0x84800000 /usr/src/gcc-2.95.2/obj/gcc/xgcc -B /usr/src/gcc-2.95.2/obj/gcc/ -mcpu=i586 0x84800000 /usr/src/gcc-2.95.2/obj/gcc/xgcc -B /usr/src/gcc-2.95.2/obj/gcc/ -mcpu=i686 0x0
so the reason why it did not show up in the gcc you picked up from ftp.gnu.org is that you have compiled it so that it defaults to -mcpu=i686 where the bug does not show up.
Jakub
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/