jjc@UUNET.UU.NET (James Clark) (03/14/89)
G++ 1.34.0 seems to output an invalid symbol table. I'm using a copy of g++ which I uucp'ed from osu-cis on Mar 11. Script started on Mon Mar 13 16:45:43 1989 jclark% cat bug.c struct foo { enum { A, B, C, D } n; }; jclark% g++ -g -v -S bug.c g++ version 1.34.0 /usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ bug.c /tmp/cca07197.cpp GNU CPP version 1.34 /usr/local/lib/gcc-c++ /tmp/cca07197.cpp -quiet -dumpbase bug.c -g -version -o bug.s GNU C++ version 1.34.0 (sparc) compiled by GNU C version 1.34. jclark% cat bug.s gcc_compiled.: .stabs "bug.c",100,0,0,Ltext Ltext: .stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0 .stabs "char:t2=r2;0;127;",128,0,0,0 .stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0 .stabs "unsigned int:t4=r1;0;-1;",128,0,0,0 .stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0 .stabs "short int:t6=r1;-32768;32767;",128,0,0,0 .stabs "long long int:t7=r1;0;-1;",128,0,0,0 .stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0 .stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0 .stabs "signed char:t10=r1;-128;127;",128,0,0,0 .stabs "unsigned char:t11=r1;0;255;",128,0,0,0 .stabs "float:t12=r1;4;0;",128,0,0,0 .stabs "double:t13=r1;8;0;",128,0,0,0 .stabs "long double:t14=r1;8;0;",128,0,0,0 .stabs "void:t15=15",128,0,0,0 .stabs "unknown type:t16=16",128,0,0,0 .stabs "$_0:T17=eD:3,C:2,B:1,A:0,;",128,0,0,0 .stabs "foo:T18=s4A:/217B:/217C:/217D:/217n:/217,0,32;;~;",128,0,0,0 .stabs "$_0:t17",128,0,0,0 .stabs "foo:t18",128,0,0,0 jclark% exit jclark% script done on Mon Mar 13 16:46:17 1989 The line .stabs "foo:T18=s4A:/217B:/217C:/217D:/217n:/217,0,32;;~;",128,0,0,0 is invalid. The following patch seems to keep gdb happy. *** dbxout.c.old Mon Mar 13 16:14:31 1989 --- dbxout.c Mon Mar 13 16:44:15 1989 *************** *** 431,435 **** of each field. */ /* Omit here the nameless fields that are used to skip bits. */ ! if (DECL_NAME (tem) != 0) { /* Continue the line if necessary, --- 433,438 ---- of each field. */ /* Omit here the nameless fields that are used to skip bits. */ ! /* Omit also CONST_DECL. */ ! if (DECL_NAME (tem) != 0 && TREE_CODE (tem) != CONST_DECL) { /* Continue the line if necessary, *************** *** 465,472 **** fprintf (asmfile, ",0,0;"); } - } - else if (TREE_CODE (tem) == CONST_DECL) - { - /* How do we do this? */ } else --- 468,471 ----