Trying to bootstrap gpc-20030507.tar.gz with GCC 3.3 (actually the gcc-3.3-hammer-branch but that shouldn't make a difference here) on an AMD64 system, the bootstrap fails with:
$ ../.././xgpc -B../.././ -c -g -I. -W -Wall -Wpointer-ar ith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -g -O2 --unit-path=/usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts --automake `cat needed-options` -DRTS_RELEASE_STRING="'`cat /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts/rts-version`'" -DGCC_VERSION="'3.3-hammer'" /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts/rtsc.pas -v -save-temps Reading specs from ../.././specs Configured with: /usr/src/aj/cvs/gcc-hammer-pascal/configure --prefix=/opt/gcc/3.3-pascal --disable-nls --enable-threads=posix --enable-clocale=gnu --enable-__cxa_atexit --enable-shared --enable-languages=c,c++,f77,objc,ada,treelang,java,f77,pascal --with-system-zlib x86_64-suse-linux-gnu Thread model: posix gpc version 20030507, based on gcc-3.3-hammer ../.././gpcpp -D__BITS_LITTLE_ENDIAN__=1 -D__BYTES_LITTLE_ENDIAN__=1 -D__WORDS_LITTLE_ENDIAN__=1 -D__NEED_NO_ALIGNMENT__=1 -quiet -v -I. -iprefix ../.././../lib/gcc-lib/x86_64-suse-linux-gnu/3.3-hammer/ -isystem ../.././include -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -DRTS_RELEASE_STRING='20030507' -DGCC_VERSION='3.3-hammer' /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts/rtsc.pas -funit-path=/usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts -fautomake -famtmpfile=/tmp/cc6ax0Gt.gpa -W -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations rtsc.i GNU Pascal Compiler PreProcessor version 20030507, based on gcc-3.3-hammer (x86-64 Linux/ELF) {$include "..."} search starts here: {$include <...>} search starts here: . End of search list. ../.././gpc1 rtsc.i -quiet -dumpbase rtsc.pas -auxbase rtsc -g -g -O2 -W -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -version -funit-path=/usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts -fautomake -famtmpfile=/tmp/cc6ax0Gt.gpa -o rtsc.s GNU Pascal version is actually 20030507, based on gcc-3.3-hammer GNU Pascal version 3.3-hammer (x86_64-suse-linux-gnu) compiled by GNU C version 3.3-hammer. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 <implicit code>: In procedure `RunFinalizers': <implicit code>:14: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See URL:http://gcc.gnu.org/bugs.html for instructions.
Running gdb shows the following backtrace:
Starting program: /abuild/aj/builds/gcc/misc/gcc/gpc1 rtsc.i -quiet -dumpbase rtsc.pas -auxbase rtsc -g -g -O2 -W -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -version -funit-path=/usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts -o rtsc.s GNU Pascal version is actually 20030507, based on gcc-3.3-hammer GNU Pascal version 3.3-hammer (x86_64-suse-linux-gnu) compiled by GNU C version 3.3-hammer. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Program received signal SIGSEGV, Segmentation fault. 0x0000002a956db314 in free () from /lib64/libc.so.6 (gdb) bt #0 0x0000002a956db314 in free () from /lib64/libc.so.6 #1 0x00000000004025e9 in poplevel (keep=0, reverse=0, routinebody=0) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/declarations.c:407 #2 0x0000000000427b99 in main_yyparse () at parse.y:2838 #3 0x0000000000494bf2 in compile_file () at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:2185 #4 0x00000000004999fb in do_compile () at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:5558 #5 0x0000000000499a6a in toplev_main (argc=-1789304384, argv=0x0) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:5588 #6 0x0000002a9568d017 in __libc_start_main () from /lib64/libc.so.6 #7 0x000000000040221a in _start () (gdb) up #1 0x00000000004025e9 in poplevel (keep=0, reverse=0, routinebody=0) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/declarations.c:407 407 free (level); (gdb) b poplevel Breakpoint 2 at 0x4024a0: file /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/declarations.c, line 316. (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Keeping /abuild/aj/builds/gcc/misc/gcc/gpc1... Removing /lib64/libc.so.6... Removing /lib64/ld-linux-x86-64.so.2...
Starting program: /abuild/aj/builds/gcc/misc/gcc/gpc1 rtsc.i -quiet -dumpbase rtsc.pas -auxbase rtsc -g -g -O2 -W -Wall -Wpointer-arith -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -version -funit-path=/usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/rts -o rtsc.s GNU Pascal version is actually 20030507, based on gcc-3.3-hammer GNU Pascal version 3.3-hammer (x86_64-suse-linux-gnu) compiled by GNU C version 3.3-hammer. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Breakpoint 2, poplevel (keep=-1073747992, reverse=778, routinebody=482) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/declarations.c:316 316 { (gdb) n 320 check_forward_decls (1); (gdb) 316 { (gdb) 319 struct binding_level *level = current_binding_level; (gdb) 320 check_forward_decls (1); (gdb) p level $2 = (struct binding_level *) 0x2a955961c0 (gdb) n 321 current_binding_level = current_binding_level->level_chain; (gdb) 326 if (reverse) (gdb) 325 decls = level->names; (gdb) 321 current_binding_level = current_binding_level->level_chain; (gdb) 326 if (reverse) (gdb) 327 decls = nreverse (decls); (gdb) 330 for (t = decls; t; t = TREE_CHAIN (t)) (gdb) 367 restore_identifiers (level->shadowed); (gdb) 371 if (level->this_block) (gdb) 376 block = NULL_TREE; (gdb) 377 if (block) (gdb) 389 for (t = level->blocks; t; t = TREE_CHAIN (t)) (gdb) 392 if (routinebody) (gdb) bt #0 poplevel (keep=0, reverse=0, routinebody=0) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/p/declarations.c:392 #1 0x0000000000427b99 in main_yyparse () at parse.y:2838 #2 0x0000000000494bf2 in compile_file () at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:2185 #3 0x00000000004999fb in do_compile () at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:5558 #4 0x0000000000499a6a in toplev_main (argc=-1789304384, argv=0x0) at /usr/src/aj/cvs/gcc-hammer-pascal/gcc/toplev.c:5588 #5 0x0000002a9568d017 in __libc_start_main () from /lib64/libc.so.6 #6 0x000000000040221a in _start () (gdb) n 394 else if (block) (gdb) 402 else if (level->blocks) (gdb) 404 if (block) (gdb) 407 free (level);
the problem is here that the address of level is wrong, it seems to be in the address space of the dynamic linker.
Any ideas or fixes for this problem?
Andreas