Bug 40637 - Ada bootstrap on powerpc64 ICE on stage3 s-bitops.o
Summary: Ada bootstrap on powerpc64 ICE on stage3 s-bitops.o
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: ada (show other bugs)
Version: 4.5.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: build, ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2009-07-03 13:21 UTC by Laurent GUERBY
Modified: 2009-09-10 16:15 UTC (History)
4 users (show)

See Also:
Host: powerpc64-unknown-linux-gnu
Target: powerpc64-unknown-linux-gnu
Build: powerpc64-unknown-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2009-07-30 12:51:10


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Laurent GUERBY 2009-07-03 13:21:40 UTC
On trunk revision 149204:

/home/guerby/build/./prev-gcc/xgcc -B/home/guerby/build/./prev-gcc/ -B/n/40/guerby/install-trunk/powerpc64-unknown-linux-gnu/bin/ -B/n/40/guerby/install-trunk/powerpc64-unknown-linux-gnu/bin/ -B/n/40/guerby/install-trunk/powerpc64-unknown-linux-gnu/lib/ -isystem /n/40/guerby/install-trunk/powerpc64-unknown-linux-gnu/include -isystem /n/40/guerby/install-trunk/powerpc64-unknown-linux-gnu/sys-include    -c -g -O2  -gnatpg -gnata -nostdinc -I- -I. -Iada -I../../trunk/gcc/ada -I../../trunk/gcc/ada/gcc-interface ../../trunk/gcc/ada/s-bitops.adb -o ada/s-bitops.o

raised STORAGE_ERROR : stack overflow (or erroneous memory access)
make[3]: *** [ada/s-bitops.o] Error 1
make[3]: Leaving directory `/home/guerby/build/gcc'
make[2]: *** [all-stage3-gcc] Error 2
make[2]: Leaving directory `/home/guerby/build'
make[1]: *** [stage3-bubble] Error 2
make[1]: Leaving directory `/home/guerby/build'
make: *** [bootstrap] Error 2

Under the debugger:

(gdb) r -I- -I. -Iada -I../../trunk/gcc/ada -I../../trunk/gcc/ada/gcc-interface -quiet -nostdinc -dumpbase s-bitops.adb -auxbase-strip ada/s-bitops.o -O2 -g -gnatpg -gnata -gnatO ada/s-bitops.o ../../trunk/gcc/ada/s-bitops.adb -o /tmp/ccz0AGDK.s
Starting program: /home/guerby/build/prev-gcc/gnat1 -I- -I. -Iada -I../../trunk/gcc/ada -I../../trunk/gcc/ada/gcc-interface -quiet -nostdinc -dumpbase s-bitops.adb -auxbase-strip ada/s-bitops.o -O2 -g -gnatpg -gnata -gnatO ada/s-bitops.o ../../trunk/gcc/ada/s-bitops.adb -o /tmp/ccz0AGDK.s
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x100000

Program received signal SIGSEGV, Segmentation fault.
0x000000001030d95c in <osint___elabs> () at ../../trunk/gcc/ada/osint.ads:601
601	                  new File_Name_Array (1 .. Int (Argument_Count) + 2);
Current language:  auto; currently ada
(gdb) bt
#0  0x000000001030d95c in <osint___elabs> () at ../../trunk/gcc/ada/osint.ads:601
#1  0x000000001011e644 in adainit () at ada/b_gnat1.c:368
Backtrace stopped: frame did not save the PC
(gdb) b main
Breakpoint 3 at 0x104ae94c: file ../../trunk/gcc/main.c, line 35.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/guerby/build/prev-gcc/gnat1 -I- -I. -Iada -I../../trunk/gcc/ada -I../../trunk/gcc/ada/gcc-interface -quiet -nostdinc -dumpbase s-bitops.adb -auxbase-strip ada/s-bitops.o -O2 -g -gnatpg -gnata -gnatO ada/s-bitops.o ../../trunk/gcc/ada/s-bitops.adb -o /tmp/ccz0AGDK.s
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x100000

Breakpoint 3, main (argc=21, argv=0xffffffff7d8) at ../../trunk/gcc/main.c:35
35	  return toplev_main (argc, argv);
Current language:  auto; currently c
(gdb) bt
#0  main (argc=21, argv=0xffffffff7d8) at ../../trunk/gcc/main.c:35
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x000000001030d95c in <osint___elabs> () at ../../trunk/gcc/ada/osint.ads:601
601	                  new File_Name_Array (1 .. Int (Argument_Count) + 2);
Current language:  auto; currently ada
(gdb) bt
#0  0x000000001030d95c in <osint___elabs> () at ../../trunk/gcc/ada/osint.ads:601
#1  0x000000001011e644 in adainit () at ada/b_gnat1.c:368
Backtrace stopped: frame did not save the PC

This is the first Ada file compiled during stage3, likely stage2 compiler is miscompiled.
Comment 1 Laurent GUERBY 2009-07-03 13:26:53 UTC
powerpc 32 bits Ada bootstraps and testresults are fine:

http://gcc.gnu.org/ml/gcc-testresults/2009-07/msg00181.html

Comment 2 Debian GCC Maintainers 2009-07-04 16:01:10 UTC
I see this with a biarch compiler defaulting to powerpc-linux-gnu as well, rev 149224

  Matthias

Configured with: ../src/configure -v --with-pkgversion='Debian 20090704-1' --with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs --enable-languages=c,ada,c++,java,fortran,objc,obj-c++ --prefix=/usr/lib/gcc-snapshot --enable-shared --enable-multiarch --with-system-zlib --disable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-java-awt=gtk --enable-gtk-cairo --disable-plugin --with-java-home=/usr/lib/gcc-snapshot/java-1.5.0-gcj-4.5/jre --enable-java-home --with-jvm-root-dir=/usr/lib/gcc-snapshot/java-1.5.0-gcj-4.5 --with-arch-directory=ppc --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --disable-softfloat --enable-secureplt --enable-targets=powerpc-linux,powerpc64-linux --with-cpu=default32 --with-long-double-128 --disable-werror --build=powerpc-linux-gnu --host=powerpc-linux-gnu --target=powerpc-linux-gnu
Thread model: posix
gcc version 4.5.0 20090704 (experimental) [trunk revision 149224] (Debian 20090704-1) 
Comment 3 Laurent GUERBY 2009-07-30 12:51:10 UTC
So confirmed. I'm now trying to identify the commit.
Comment 4 Laurent GUERBY 2009-07-30 13:25:26 UTC
boot ok 148068
boot fail 149083
binary search running on gcc40
Comment 5 Laurent GUERBY 2009-07-31 16:08:02 UTC
Current progress:

boot ok 148068
boot ok 148575
boot ok 148638
boot ok 148702
boot ok 148829
boot ko 148892
boot ko 148956
boot ko 149083
Comment 6 Michael Meissner 2009-07-31 22:01:54 UTC
It is probably related to my powerpc power7 checkin starting with 148869.  It may or may not be related to an issue I am looking at in that if you build the compiler with altivec, it miscompiles the code, and 403.gcc in spec does not run correctly.

Unfortunately, SUSE doesn't provide Gnu Ada for powerpc, which means I can't build it on my normal systems.
Comment 7 Laurent GUERBY 2009-08-02 17:21:15 UTC
Indeed the search converged to:

boot ok 148868
boot ko 148869

May be you can use your compile farm account to use or grab a working Ada compiler for powerpc-linux?

guerby@gcc40:~$ ldd /usr/lib/gcc/powerpc-linux-gnu/4.1.3/gnat1 
	libc.so.6 => /lib/tls/libc.so.6 (0x0fe8c000)
	/lib/ld.so.1 (0xf7fe6000)
guerby@gcc40:~$ ldd /opt/cfarm/release/4.4.1/libexec/gcc/powerpc64-unknown-linux-gnu/4.4.1/gnat1
	libc.so.6 => /lib64/libc.so.6 (0x0000040000037000)
	/lib64/ld64.so.1 (0x0000040000000000)
Comment 8 Laurent GUERBY 2009-08-23 18:03:42 UTC
It now happens on powerpc 32 bits:

/home/guerby/build/./prev-gcc/xgcc -B/home/guerby/build/./prev-gcc/ -B/n/53/guerby/install-trunk/powerpc-unknown-linux-gnu/bin/ -B/n/53/guerby/install-trunk/powerpc-unknown-linux-gnu/bin/ -B/n/53/guerby/ins\
tall-trunk/powerpc-unknown-linux-gnu/lib/ -isystem /n/53/guerby/install-trunk/powerpc-unknown-linux-gnu/include -isystem /n/53/guerby/install-trunk/powerpc-unknown-linux-gnu/sys-include    -c -g -O2  -gnatp\
g -gnata -nostdinc -I- -I. -Iada -I../../trunk/gcc/ada -I../../trunk/gcc/ada/gcc-interface ../../trunk/gcc/ada/s-bitops.adb -o ada/s-bitops.o

raised STORAGE_ERROR : stack overflow (or erroneous memory access)
make[3]: *** [ada/s-bitops.o] Error 1
make[3]: Leaving directory `/home/guerby/build/gcc'
make[2]: *** [all-stage3-gcc] Error 2
make[2]: Leaving directory `/home/guerby/build'
make[1]: *** [stage3-bubble] Error 2
make[1]: Leaving directory `/home/guerby/build'
make: *** [bootstrap] Error 2

Michael, any idea on how to make progress here?
Comment 9 Laurent GUERBY 2009-09-10 16:15:12 UTC
powerpc32 started working again:

151259 ko
151268 ok

So both powerpc64 and powerpc32 are bootstraping with Ada again.

Likely candidate:

+2009-09-01  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (tree_expr_size): New function.
+       * tree.h (tree_expr_size): Declare.
+       * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
+       * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
+       * langhooks.c (lhd_expr_size): Remove.
+       * langhooks.h (struct lang_hooks): Remove expr_size.
+       * explow.c (expr_size): Use tree_expr_size.
+       (int_expr_size): Likewise.
+       * langhooks-def.h (lhd_expr_size): Remove.
+       (LANG_HOOKS_EXPR_SIZE): Likewise.
+       (LANG_HOOKS_INITIALIZER): Adjust.
+
+2009-09-01  Richard Guenther  <rguenther@suse.de>
+
+       * tree-flow.h (mark_addressable): Move declaration ...
+       * tree.h (mark_addressable): ... here.
+       * stmt.c (expand_asm_operands): Use mark_addressable, not
+       lang_hooks.mark_addressable.
+       * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
+       LANG_HOOKS_MARK_ADDRESSABLE.
+       * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
+       * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
+