cooper@gecrux.steinmetz.ge.com (Clark Cooper) (10/06/88)
Version: G++ 1.27.0 Hardware: Sun 3/50 OS: SunOS 3.5 Configuration: tm.h -> tm-sun3+.h md -> m68k.md Input file: scene.cc from InterViews 2.3 Symptoms: Segmentation Violation in c++ ========================= Script started on Thu Oct 6 10:12:24 1988 sculptorq% g++ -v -g -O -DX11 -c scene.cc g++ version 1.27.0 /usr/local/lib/gcc-cpp+ -v -DX11 -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ scene.cc /tmp/cca01201.cpp GNU CPP version 1.27.0 /usr/local/lib/gcc-c++ /tmp/cca01201.cpp -quiet -dumpbase scene.cc -opt -version -G -o /tmp/cca01201.s GNU C++ version 1.27.0 (68k, MIT syntax) compiled by CC. At top level: scene.cc:18: warning: use of obsolete scope operator `.'; use `::' instead In function void Scene::DoMap (struct Interactor *): scene.cc:336: Segmentation violation /usr/sculptorq/gnu/src/g++/g++: Program c++ got fatal signal 11. sculptorq% gdb+ /usr/sculptorq/gnu/gcc-c++ core GDB 2.8.0 (GNU C++ 1.27.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/sculptorq/gnu/gcc-c++...done. Core file is from "gcc-c++". Program terminated with signal 11, Segmentation fault. Type "help" for a list of commands. (gdb+) directory /usr/sculptorq/gnu/src/g++ Source directories searched: /usr.MC68020/sculptorq/gnu/src/InterViews/src/lib:/usr/sculptorq/gnu/src/g++ (gdb+) where #0 0x3171e in fixup_memory_subreg (x=(rtx) 0x10f84c) (stmt.c line 2524) #1 0x31204 in fixup_var_refs_1 (var=(rtx) 0x10f4c0, x=(rtx) 0x10f84c, insn=(rtx) 0x10f87c) (stmt.c line 2380) #2 0x3168a in fixup_var_refs_1 (var=(rtx) 0x10f4c0, x=(rtx) 0x10f870, insn=(rtx) 0x10f87c) (stmt.c line 2499) #3 0x3112a in fixup_var_refs (var=(rtx) 0x10f4c0) (stmt.c line 2327) #4 0x31080 in put_var_into_stack (decl=(union tree_node *) 0x10f468) (stmt.c line 2300) #5 0x1d92c in mark_addressable (exp=(union tree_node *) 0x10f468) (typecheck.c line 3476) #6 0x1d192 in build_unary_op (code=ADDR_EXPR, xarg=(union tree_node *) 0x10f468, noconvert=0) (typecheck.c line 3197) #7 0x1c8a6 in build_x_unary_op (code=ADDR_EXPR, xarg=(union tree_node *) 0x10f468) (typecheck.c line 2840) #8 0x5428 in yyparse () (parse.y line 458) #9 0x31f0 in compile_file (name=(char *) 0xefffd24 "/tmp/cca01201.cpp") (toplev.c line 905) #10 0x4862 in main (argc=10, argv=(char **) 0xefffcbc, envp=(char **) 0xefffce8) (toplev.c line 1716) (gdb+) list fixup_memory_subreg 2512 return an rtx (MEM:m1 newaddr) which is equivalent. */ 2513 2514 static rtx 2515 fixup_memory_subreg (x) 2516 rtx x; 2517 { 2518 int offset = SUBREG_WORD (x) * UNITS_PER_WORD; 2519 rtx addr = XEXP (SUBREG_REG (x), 0); 2520 enum machine_mode mode = GET_MODE (x); 2521 (gdb+) 2522 #ifdef BYTES_BIG_ENDIAN 2523 offset += (MIN (UNITS_PER_WORD, GET_MODE_SIZE (SUBREG_REG (x))) 2524 - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); 2525 #endif 2526 return change_address (SUBREG_REG (x), mode, 2527 plus_constant (addr, offset)); 2528 } 2529 ^L 2530 #if 0 2531 /* Fix up any references to stack slots that are invalid memory addresses (gdb+) quit sculptorq% ^D script done on Thu Oct 6 10:14:55 1988 ========================= Recommended Patch: *** stmt.c~ Sun Sep 11 00:54:53 1988 --- stmt.c Thu Oct 6 10:16:15 1988 *************** *** 2519,2528 **** rtx addr = XEXP (SUBREG_REG (x), 0); enum machine_mode mode = GET_MODE (x); #ifdef BYTES_BIG_ENDIAN ! offset += (MIN (UNITS_PER_WORD, GET_MODE_SIZE (SUBREG_REG (x))) ! - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); #endif return change_address (SUBREG_REG (x), mode, plus_constant (addr, offset)); } --- 2519,2528 ---- rtx addr = XEXP (SUBREG_REG (x), 0); enum machine_mode mode = GET_MODE (x); #ifdef BYTES_BIG_ENDIAN ! offset += (MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))) ! - MIN (UNITS_PER_WORD, GET_MODE_SIZE (mode))); #endif return change_address (SUBREG_REG (x), mode, plus_constant (addr, offset)); } -- Clark Cooper cooper@gecrux.steinmetz.ge.com, coopercc@crd.ge.com, coopercc@ge-crd.arpa, ...!uunet!steinmetz!cooper