dwf%hope@LANL.GOV (David W. Forslund) (09/24/88)
I've tried building g++ 1.27.0 on a Sun3 running SunOS4.0. I compiled it with gcc 1.26 and applied the combine.c patch and the tm-sun3.h patch. I also fixed the commented out line in the Makefile for building ld++ so that it had the "right" options for the Sun3 instead of the Sun4. G++ builds and compiles everything fine including libg++.a. However, when I try to load anything including the tests, I get Undefined symbols: start Script started on Fri Sep 23 15:39:00 1988 make tests hope% (cd tests; make GXX="../../g++/g++ -B../../g++/ -L..") ../../g++/g++ -B../../g++/ -L.. -g -fchar-charconst -B../../g++/ -c test1.cc ../../g++/g++ -B../../g++/ -L.. test1.o -o test1 Undefined symbols: start ../../g++/g++ -B../../g++/ -L.. -g -fchar-charconst -B../../g++/ -c test2.cc ../../g++/g++ -B../../g++/ -L.. test2.o -o test2 -lg++ -lm Undefined symbols: start ../../g++/g++ -B../../g++/ -L.. -g -fchar-charconst -B../../g++/ -c test3.cc ^C *** tests not removed. hope% g++ -fchar-charconst -v -c test1.cc g++ version 1.27.0 /usr/local/lib/gcc-cpp+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix test1.cc /tmp/cca00425.cpp GNU CPP version 1.27.0 /usr/local/lib/gcc-c++ /tmp/cca00425.cpp -quiet -dumpbase test1.cc -fchar-charconst -noreg -version -o /tmp/cca00425.s gGNU C++ version 1.27.0 (68k, MIT syntax) compiled by GNU C version 1.26. as -mc68020 /tmp/cca00425.s -o test1.o hope% g++ -v -g -o test1 test1.o -lg++ -lm g++ version 1.27.0 /usr/local/lib/gcc-ld++ -C -o test1 -e start -dc -dp /usr/local/lib/crt0+.o /lib/Mcrt1.o test1.o -lg++ -lm -lg++ /usr/local/lib/gcc-gnulib+ -lg -lc Undefined symbols: start hope% ^D script done on Fri Sep 23 15:41:23 1988 Any ideas? Dave Forslund (dwf@lanl.gov)
metz@iam.unibe.ch (Igor Metz) (09/26/88)
Hi, I have some problems with the latest g++ version. I compile it on my SUN 3/260 (SunOS 3.5) and I get the following warnings from gcc 1.27 ===== the beginning ====== gcc -g -c fold-const.c In function fold: fold-const.c:1435: warning: comparison is always 0 due to limited range of data type fold-const.c:1452: warning: comparison is always 0 due to limited range of data type gcc -g -c expr.c In function expand_increment: expr.c:3258: warning: comparison is always 0 due to limited range of data type expr.c:3258: warning: comparison is always 0 due to limited range of data type gcc -g -c class.c In function instantiate_type: class.c:3454: warning: case value out of range class.c:3455: warning: case value out of range class.c:3456: warning: case value out of range class.c:3457: warning: case value out of range gcc -g -c method.c In function dump_init: method.c:690: warning: case value out of range method.c:691: warning: case value out of range method.c:696: warning: case value out of range method.c:697: warning: case value out of range gcc -g -c search.c In function my_tree_cons: search.c:172: warning: initialization between incompatible pointer types In function my_build_string: search.c:186: warning: initialization between incompatible pointer types ==== the end ==== When I then try to compile the following little program, gcc-c++ abort()'s itself (see below for typescript of gdb session), when it tries to expand an expression: ==== the beginning ==== #include <stream.h> const int dim = 10; class Vektor { short vec[dim]; public: Vektor(); short& operator[](int i) { return(vec[i]); } }; Vektor::Vektor() { for (int i= 0; i<dim; i++) vec[i] = 0; // or any other value needed } class Matrix { Vektor mat[dim]; public : Vektor& operator[](int i) { return(mat[i]); } }; main() { Matrix m; int i, j; for (i=0; i<dim; i++) for (j=0; j<dim; j++) m[i][j] = j + i*dim; for (i=0; i<dim; i++) { for (j=0; j<dim; j++) cout << m[i][j] << "\t"; cout << "\n"; } } ==== the end ==== ==== the beginning ==== Script started on Mon Sep 26 11:39:01 1988 gina:/u-gina/metz/g++/g++% gdb ~/lib/gcc-c++ core GDB 2.3, Copyright (C) 1987 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 /u-gina/metz/lib/gcc-c++...done. Core file is from "gcc-c++". Type "help" for a list of commands. (gdb) whe #0 0xa3f84 in kill () #1 0x337a0 in expand_expr (exp=(tree) 0xd4848, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 3018) #2 0x372ba in expand_expr_stmt (exp=(tree) 0xd4848) (stmt.c line 752) #3 0xef90 in yyparse () (parse.y line 1802) #4 0x3162 in compile_file (name=(char *) 0xefffc30 "/tmp/cca00218.cpp") (toplev.c line 905) #5 0x4a28 in main (argc=9, argv=(char **) 0xefffbc8, envp=(char **) 0xefffbf0) (toplev.c line 1716) (gdb) up 1 #1 0x337a0 in expand_expr (exp=(tree) 0xd4848, target=(rtx) 0x0, tmode=VOIDmode, modifier=EXPAND_NORMAL) (expr.c line 3018) 3018 abort (); (gdb) li 3013 3014 case ERROR_MARK: 3015 return const0_rtx; 3016 3017 default: 3018 abort (); 3019 } 3020 3021 /* Here to do an ordinary binary operator, generating an instruction 3022 from the optab already placed in `this_optab'. */ (gdb) i lo code = -124 exp = (tree) 0xd4848 ignore = 1 mode = SImode negate_1 = 251656602 op0 = (rtx) 0xefff698 op1 = (rtx) 0xefffbf0 original_target = (rtx) 0x0 subtarget = (rtx) 0x0 temp = (rtx) 0x9 this_optab = (optab) 0xefff698 type = (tree) 0xd2d90 (gdb) p *exp $1 = {common = {uid = 13992, chain = 0x0, type = 0xd2d90, code = -2079326208, external_attr = 0, public_attr = 0, static_attr = 0, volatile_attr = 1, packed_attr = 0, readonly_attr = 0, literal_attr = 0, nonlocal_attr = 0, permanent_attr = 0, addressable_attr = 0, regdecl_attr = 0, this_vol_attr = 0, unsigned_attr = 0, asm_written_attr = 0, overloaded_attr = 0, private_attr = 0, protected_attr = 0, virtual_attr = 0, inline_attr = 0, everused_attr = 0, has_ctor_attr = 0, needs_ctor_attr = 0, has_dtor_attr = 0, needs_dtor_attr = 0}, int_cst = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, int_cst_low = 1478668, int_cst_high = 883658}, real_cst = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, rtl = 0x16900c, real_cst = 1.87512e-308}, string = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, rtl = 0x16900c, length = 883658, pointer = 0xd480c ""}, complex = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, rtl = 0x16900c, real = 0xd7bca, imag = 0xd480c}, identifier = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, length = 1478668, pointer = 0xd7bca "", global_value = 0xd480c, class_value = 0xd486c, local_value = 0xc91a8, label_value = 0x36ab, implicit_decl = 0x0}, decl = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, filename = 0x16900c "", linenum = 883658, size = 0xd480c, mode = 870508, size_unit = 0 '\000', align = 12 '\f', voffset_unit = 145 '\221', name = 0x36ab, original_name = 0x0, context = 0x1664c2, offset = 855638016, voffset = 0xd3824, arguments = 0x166556, result = 0x36ad, initial = 0x0, rtl = 0xd328a, frame_size = 956301312, saved_insns = 0xd486c, block_symtab_address = 1478668}, type = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, values = 0x16900c, sep = 0xd7bca, size = 0xd480c, size_unit = 0 '\000', align = 13 '\r', sep_unit = 72 'H', mode = 1811942545, pointer_to = 0xc91a8, reference_to = 0x36ab, parse_info = 0, symtab_address = 1467586, name = 0x33000000, max = 0xd3824, next_variant = 0x166556, main_variant = 0x36ad}, classtype = {type_info = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000\000\026\220\f\000\r{\312\000\rH\f\000\rHl\000\f\221\250\000\0006\253\000\000\000\000\000\026d\3023\000\000\000\000\r8$\000\026eV\000\0006\255"}, type_flags = {has_type_conversion_attr = 0, has_int_conversion_attr = 0, has_float_conversion_attr = 0, gets_init_ref_attr = 0, gets_new_attr = 0, gets_delete_attr = 0, has_assignment_attr = 0, gets_assignment_attr = 0, has_assign_ref_attr = 0, gets_assign_ref_attr = 0, has_wrapper = 0, needs_wrapper = 0, has_wrapper_pred = 0, has_method_call_overloaded = 0, gets_init_aggr_attr = 0, has_call_overloaded = 0, has_array_ref_overloaded = 0, any_assigns_this = 0, none_assign_this = 0, uses_multiple_inheritance = 0, marked = 0, marked2 = 0, marked3 = 0, marked4 = 0, declared_class = 0, dummy_6 = 0}, offset = 0xd328a, vtable = 0x39000000, virtuals = 0xd486c, vfield = 0x16900c, vsize = 13998, n_parents = 0, cid = 863632, types = 0x25020000, n_ancestors = 0, by_bfs = 0x0, for_bfs = 0x36af, by_dfs = 0x0, for_dfs = 0xd328a, tags = 0x75000000, main_class_variant = 0xd489c, next_class_variant = 0x36b0, memoized_table_entry = 0x0, via_pub_or_virt = 0xd328a "", sep = 0x25020000, size = 0x0, size_unit = 0 '\000', align = 0 '\000', sep_unit = 0 '\000', mode = 54, base_init_list = 0x36b1, member_init_list = 0x0}, list = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, purpose = 0x16900c, value = 0xd7bca}, exp = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, operands = {0x16900c}}, stmt = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, filename = 0x16900c "", linenum = 883658, body = 0xd480c}, if_stmt = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, filename = 0x16900c "", linenum = 883658, cond = 0xd480c, thenpart = 0xd486c, elsepart = 0xc91a8}, bind_stmt = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, filename = 0x16900c "", linenum = 883658, body = 0xd480c, vars = 0xd486c, supercontext = 0xc91a8, bind_size = 0x36ab, type_tags = 0x0}, case_stmt = {common = {"\000\0006\250\000\000\000\000\000\r-\220\204\020\000\000"}, filename = 0x16900c "", linenum = 883658, index = 0xd480c, case_list = 0xd486c}} (gdb) q ==== the end ==== In my earlier experiments gcc-cpp+ crashed in malloc until I used the GNUEmacs version of malloc. Is there anybody out there who can help??? Thank you in advance Igor Metz X400: metz@iam.unibe.ch Institut fuer Informatik ARPA: metz%iam.unibe.ch@relay.cs.net und angewandte Mathematik UUCP: ..!uunet!mcvax!iam.unibe.ch!metz Universitaet Bern Switzerland Phone: (+41) 31 65 49 02
metz@iam.unibe.ch (Igor Metz) (09/26/88)
Hi, I'm answering my question myself! I asked > I have some problems with the latest g++ version. I compile it on my > SUN 3/260 (SunOS 3.5) and I get the following warnings from gcc 1.27 The problem was, that I had the wrong version of gcc on my search path (1.18 instead of 1.27). Sorry for bothering you all! Regards, Igor P.S. Is there anybody out there who has a *good* C++-mode for Emacs? I have hacked c-mode.el, but I'm not very happy with it. If anybody wants it, let me know. Igor Metz X400: metz@iam.unibe.ch Institut fuer Informatik ARPA: metz%iam.unibe.ch@relay.cs.net und angewandte Mathematik UUCP: ..!uunet!mcvax!iam.unibe.ch!metz Universitaet Bern Switzerland Phone: (+41) 31 65 49 02