[gnu.gdb.bug] Incompatibility between gdb 2.7 and gcc-1.30

jonathan@comp.vuw.ac.nz (Jonathan) (12/18/88)

Symptom::
    Gdb 2.7 exits when trying to read symbols from a Pyramid gcc-1.30
    stageN, N > 2.  It encounters a symbol definition it doesn't understand.

Repeat-By::
    Dunno, unless you have a copy of the Pyramid machine description.

Diagnosis::
    Gcc 1.30 appears to occasionally produce output debugging
    information that gdb 2.7 doesn't grok. 
    This happens for pointer parameters passed in registers instead of
    on the stack.

    I found this with my own gcc/gdb machine descriptions for Pyramid
    Technology processors some time ago. Perhaps it's been fixed
    already for SPARC? 
    If not, the code in gcc/dbxout.c producing the contentious output is:

	  current_sym_nchars = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));

	  fprintf (asmfile, ".stabs \"%s:P",
		   IDENTIFIER_POINTER (DECL_NAME (parms)));

	  dbxout_type (DECL_ARG_TYPE (parms), 0);
	  dbxout_finish_symbol ();

    Gdb 2.7 has no idea how do deal with such a symbol (ie, an N_RSYM
    with code 'P').


Fix-By::
    I'm not sure whether gcc is correct in doing this, and if so, what
    gdb should do with it.  I merely #ifdef'ed the gcc source to output a
    'p' instead of a 'P', which isn't entirely satisfactory.

    Which should be/has been fixed, gdb or gcc?  Or both??