gautron@UUNET.UU.NET (Philippe Gautron) (12/22/88)
version: G++ 1.31.0, GCC 1.31., libg++ 1.25.0 Machine: SUN 3/260, running SUN 0S 3.4 Configuration: tm.h --> tm-sun3+.h md --> m68k.md aux-output.c --> output.m68k.c Bug fixes: SUN3.README expr.c (article 244) stmt.c (article 245) Symptoms: - libg++ compiles without -O, aborts with -0 (see also article 247) - libg++ tests: compilation aborts with test4.cc (signal 11) - ATT cfront 1.1: compiles (that's new!) but execution fails. More about 1) libg++ test4.cc ------ []/u2/gautron/GNU/usr/local/bin/g++ -B/u2/gautron/GNU/usr/local/lib/gcc- -I. -I/u2/gautron/GNU/usr/local/lib/g++-include -v -c test4.cc g++ version 1.31.0 /u2/gautron/GNU/usr/local/lib/gcc-cpp+ -v -I. -I/u2/gautron/GNU/usr/local/lib/g++-include -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix test4.cc /tmp/cca00819.cpp GNU CPP version 1.31.0 /u2/gautron/GNU/usr/local/lib/gcc-c++ /tmp/cca00819.cpp -quiet -dumpbase test4.cc -noreg -version -o /tmp/cca00819.s GNU C++ version 1.31.0 (68k, MIT syntax) compiled by GNU C version 1.31. In function struct Integer fibonacci (struct Integer): test4.cc:35: Segmentation violation /u2/gautron/GNU/usr/local/bin/g++: Program c++ got fatal signal 11. []gdb+ /u2/gautron/GNU/usr/local/lib/gcc-c++ core gdb+ /u2/gautron/GNU/usr/local/lib/gcc-c++ core GDB 2.5.4 (GNU C++ 1.22.0 compatible), Copyright (C) 1988 Free Software Foundation, Inc. There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details. GDB is free software and you are welcome to distribute copies of it under certain conditions; type "info copying" to see the conditions. Reading symbol data from /u2/gautron/GNU/usr/local/lib/gcc-c++...done. Core file is from "gcc-c++". Program terminated with signal 11, Segmentation fault. Type "help" for a list of commands. [gdb] bt bt #0 0x11e00 in chainon (op1=(tree) 0x1c98d4, op2=(tree) 0x1ce824) (tree.c line 777) #1 0x169ae in poplevel (keep=1, reverse=1, functionbody=0) (cplus-decl.c line 735) #2 0x5171a in expand_inline_function (fndecl=(tree) 0x14f948, parms=(tree) 0x1caa98, target=(rtx) 0x0, ignore=1, type=(tree) 0xd20ce, structure_value_addr=(rtx) 0x0) (integrate.c line 939) #3 0x36c0c in expand_call (exp=(tree) 0x1cdee4, target=(rtx) 0x0, ignore=1, modifier=EXPAND_NORMAL) (expr.c line 4123) #4 0x349ca in expand_expr (exp=(tree) 0x1cdee4, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 2720) #5 0x39c52 in expand_expr_stmt (exp=(tree) 0x1cdee4) (stmt.c line 929) #6 0xa30b0 in expand_delete (type=(tree) 0x14dfac, addr=(tree) 0x1c6ea4, auto_delete=860270) (cplus-init.c line 2307) #7 0x35a7e in expand_expr (exp=(tree) 0x1c6f14, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 3294) #8 0x3b08a in expand_cleanups (list=(tree) 0xce4e4, dont_do=(tree) 0x0) (stmt.c line 1902) #9 0x3b0b6 in fixup_cleanups (list=(tree) 0xce4e4, before_jump=(rtx *) 0x1ca88c) (stmt.c line 1918) #10 0x3965c in fixup_gotos (stack_level=(rtx) 0x0, cleanup_list=(tree) 0x0, first_insn=(rtx) 0x1c451c, dont_jump_in=0) (stmt.c line 696) #11 0x3dc5e in fixup_parm_cleanups (after=(rtx) 0x1cd40c, before=(rtx) 0x1c5584, end=(rtx) 0x1cde20) (stmt.c line 3733) #12 0x2138a in finish_function (call_poplevel=0) (cplus-decl.c line 6451) #13 0xc790 in yyparse () (cplus-parse.y line 251) #14 0x34b0 in compile_file (name=(char *) 0xefffde8 "/tmp/cca00819.cpp") (toplev.c line 1010) #15 0x4d4e in main (argc=9, argv=(char **) 0xefffd78, envp=(char **) 0xefffda0) (toplev.c line 1824) 2) cfront: gdb+ cfront core GDB 2.5.4 (GNU C++ 1.22.0 compatible), Copyright (C) 1988 Free Software Foundation, Inc. There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details. GDB is free software and you are welcome to distribute copies of it under certain conditions; type "info copying" to see the conditions. Reading symbol data from /usr.MC68020/corto2/gautron/TMP/cfront...Invalid symbol data: unknown symbol-type code `/' at symtab pos 182. Core file is from "cfront". Program terminated with signal 10, Bus error. Type "help" for a list of commands. [gdb] quit [] []dbx cfront core dbx cfront core Reading symbolic information... dbx: internal error: unexpected value 47 at line 1903 in file object.c [] []cat table.s .... .globl _new_key _new_key: link a6,#-8 moveb a6@(15),a6@(15) moveb a6@(19),a6@(19) movel a6@(8),sp@- clrl sp@- jbsr _name_PSname_PQI movel d0,a6@(-4) clrl sp@- movel a6@(-4),sp@- movel _ktbl,sp@- jbsr _insert_PStable_PSname_uQI movel d0,a6@(-8) movel a6@(-8),a0 moveb a6@(15),a0@ addw #20,sp movel a6@(-8),a0 tstb a6@(19) jeq L165 moveb a6@(19),d0 jra L166 L165: moveb a6@(15),d0 L166: clrl d1 moveb d0,d1 movel d1,a0@(4) cmpb #143,a6@(15) jne L167 moveb a6@(19),d0 jra L168 L167: moveb a6@(15),d0 L168: clrl d1 moveb d0,d1 movel d1,d0 asll #2,d0 lea _keys,a0 movel a6@(8),a0@(d0:l) pea 1:w movel a6@(-4),sp@- jbsr __$_name addqw #8,sp L164: unlk a6 rts LC9: .ascii "Qr%n'sT missing\0" ... [] cat norm2.s ... .globl __$_expr __$_expr: link a6,#0 tstl a6@(8) jeq L77 addql #1,_NFe movel a6@(8),a0 movel _expr_free,a0@(8) movel a6@(8),_expr_free clrl a6@(8) tstl a6@(12) jeq L75 movel a6@(8),sp@- jbsr ___builtin_delete addqw #4,sp jra L76 L75: L76: L77: L74: unlk a6 rts .even ... .globl __$_name __$_name: link a6,#0 addqw #8,sp tstl a6@(8) jeq L138 addql #1,_NFn movel a6@(8),a0 movel _name_free,a0@(52) movel a6@(8),_name_free clrl a6@(8) movel a6@(12),sp@- movel a6@(8),sp@- jbsr __$_expr L138: L137: unlk a6 rts .even []adb cfront core core file = core -- program ``cfront'' SIGBUS 10: bus error $C __$_name() + 38 0x25E8E? __$_name: __$_name: 4e560000 = addqw #8,sp :r :r # 1 "" /* <<ATT cfront by G++>> */ breakpoint _new_key+0x82: pea 1:w :s :s stopped at _new_key+0x86: movl a6@(-4),sp@- :s :s stopped at _new_key+0x8a: bsrl __$_name :s :s stopped at __$_name: linkw a6,#0 :s :s stopped at __$_name+4: addqw #8,sp :s :s stopped at __$_name+6: tstl a6@(8) :s :s stopped at __$_name+0xa: beqs __$_name+0x36 :s :s stopped at __$_name+0xc: addql #1,_NFn:l :s :s stopped at __$_name+0x12: movl a6@(8),a0 :s :s stopped at __$_name+0x16: movl _name_free:l,a0@(0x34) :s :s stopped at __$_name+0x1e: movl a6@(8),_name_free:l :s :s stopped at __$_name+0x26: clrl a6@(8) :s :s stopped at __$_name+0x2a: movl a6@(0xc),sp@- :s :s stopped at __$_name+0x2e: movl a6@(8),sp@- :s :s stopped at __$_name+0x32: bsr __$_expr :s :s stopped at __$_expr: linkw a6,#0 :s :s stopped at __$_expr+4: tstl a6@(8) :s :s stopped at __$_expr+8: beqs __$_expr+0x3c :s :s stopped at __$_expr+0x3c: unlk a6 :s :s stopped at __$_expr+0x3e: rts :s :s stopped at __$_name+0x36: unlk a6 :s :s stopped at __$_name+0x38: rts :s :s SIGBUS 10: bus error stopped at __$_name+0x38: rts Have a fun Michael.... -- Philippe Gautron --
gautron@UUNET.UU.NET (Philippe Gautron) (12/23/88)
version: G++ 1.31.0, GCC 1.31., libg++ 1.25.0 Machine: SUN 3/260, running SUN 0S 3.4 Configuration: tm.h --> tm-sun3+.h md --> m68k.md aux-output.c --> output.m68k.c Bug fixes: SUN3.README expr.c (article 244) stmt.c (article 245) Symptoms: - ATT cfront 1.1: compiles (that's new!) but execution fails. My previous message was about execution of ATT cfront Execution aborts with bus error. We continue to work at home, so more information follows. 1) Consider this C++ session: struct expr{ ~expr(); }; struct name: expr{ ~name(); }; name::~name() { this = 0; } 2) C code that C++ generates is: int _name__dtor (_auto_this , _auto__free ) struct name *_auto_this ; int _auto__free ; { if (_auto_this ){ _auto_this = 0 ; if (_auto_this ) // <-- Remember this test _expr__dtor ( (struct expr *)_auto_this , _auto__free ) ; } } 3) C++ + gcc generation: .globl __name__dtor __name__dtor: link a6,#0 tstl a6@(8) jeq L2 clrl a6@(8) tstl a6@(8) # <-- test jeq L3 movel a6@(12),sp@- movel a6@(8),sp@- jbsr __expr__dtor addqw #8,sp L3: L2: L1: unlk a6 rts 4) G++ generation .globl __$_name __$_name: link a6,#0 addqw #8,sp tstl a6@(8) jeq L2 clrl a6@(8) # where is the test ? movel a6@(12),sp@- movel a6@(8),sp@- jbsr __$_expr L2: L1: unlk a6 rts To michael: People at home are hurry and says me: Vacation, what vacation... -- Philippe Gautron and Yvon Gourhant --