From 01e2750c1b0911e04fcf02e10b930bc982045af7 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 15 May 1992 21:01:40 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r993 --- gcc/config/svr4.h | 5 ++++- gcc/dbxout.c | 51 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/gcc/config/svr4.h b/gcc/config/svr4.h index fcdd9d026a4..0a3b99d72d9 100644 --- a/gcc/config/svr4.h +++ b/gcc/config/svr4.h @@ -249,7 +249,10 @@ do { \ /* #define MULTIBYTE_CHARS */ #undef ASM_BYTE_OP -#define ASM_BYTE_OP "\t.byte" +#define ASM_BYTE_OP ".byte" + +#undef SET_ASM_OP +#define SET_ASM_OP ".set" /* This is how to begin an assembly language file. Most svr4 assemblers want at least a .file directive to come first, and some want to see a .version diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 329579931e1..f680465404b 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -94,8 +94,8 @@ extern int errno; #define ASM_STABN_OP ".stabn" #endif -#ifndef DBX_DECL_STABS_CODE -#define DBX_DECL_STABS_CODE N_LSYM +#ifndef DBX_TYPE_DECL_STABS_CODE +#define DBX_TYPE_DECL_STABS_CODE N_LSYM #endif #ifndef DBX_STATIC_CONST_VAR_CODE @@ -110,6 +110,10 @@ extern int errno; #define DBX_REGPARM_STABS_LETTER 'P' #endif +#ifndef DBX_MEMPARM_STABS_LETTER +#define DBX_MEMPARM_STABS_LETTER 'p' +#endif + /* Nonzero means if the type has methods, only output debugging information if methods are actually written to the asm file. */ @@ -1098,6 +1102,9 @@ dbxout_type (type, full, show_arg_types) fprintf (asmfile, ":"); return; } +#ifdef DBX_OUTPUT_ENUM + DBX_OUTPUT_ENUM (asmfile, type); +#else putc ('e', asmfile); CHARS (1); for (tem = TYPE_VALUES (type); tem; tem = TREE_CHAIN (tem)) @@ -1110,6 +1117,7 @@ dbxout_type (type, full, show_arg_types) } putc (';', asmfile); CHARS (1); +#endif break; case POINTER_TYPE: @@ -1367,6 +1375,16 @@ dbxout_symbol (decl, local) fprintf (asmfile, "%s \"%s:", ASM_STABS_OP, IDENTIFIER_POINTER (DECL_NAME (decl))); +/* #ifndef DBX_NO_EXTRA_TAGS rms: I think this is no longer needed. */ + /* This section makes absolutely no sense to me. Why would a tag + ever be needed at this point? The result of this is that any + structure typedef with the tag omitted is treated as if the + tag was given to be the same as the typedef name. Probably + no harm in it, unless the programmer used the same name for + the tag of a *different* structure. At any rate, Alliant's + debugger would want the tag output before the typedef, so + this code still loses. -- hyc */ + /* Short cut way to output a tag also. */ if ((TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE) @@ -1380,9 +1398,10 @@ dbxout_symbol (decl, local) else tag_needed = 1; } +/* #endif */ putc ('t', asmfile); - current_sym_code = DBX_DECL_STABS_CODE; + current_sym_code = DBX_TYPE_DECL_STABS_CODE; dbxout_type (type, 1, 0); dbxout_finish_symbol (decl); @@ -1400,7 +1419,7 @@ dbxout_symbol (decl, local) if (TREE_CODE (name) == TYPE_DECL) name = DECL_NAME (name); - current_sym_code = DBX_DECL_STABS_CODE; + current_sym_code = DBX_TYPE_DECL_STABS_CODE; current_sym_value = 0; current_sym_addr = 0; current_sym_nchars = 2 + IDENTIFIER_LENGTH (name); @@ -1771,13 +1790,15 @@ dbxout_parms (parms) { current_sym_nchars = 2 + IDENTIFIER_LENGTH (DECL_NAME (parms)); - fprintf (asmfile, "%s \"%s:p", ASM_STABS_OP, - IDENTIFIER_POINTER (DECL_NAME (parms))); + fprintf (asmfile, "%s \"%s:%c", ASM_STABS_OP, + IDENTIFIER_POINTER (DECL_NAME (parms)), + DBX_MEMPARM_STABS_LETTER); } else { current_sym_nchars = 8; - fprintf (asmfile, "%s \"(anon):p", ASM_STABS_OP); + fprintf (asmfile, "%s \"(anon):%c", ASM_STABS_OP, + DBX_MEMPARM_STABS_LETTER); } if (GET_CODE (DECL_RTL (parms)) == REG @@ -1917,13 +1938,15 @@ dbxout_parms (parms) { current_sym_nchars = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms))); - fprintf (asmfile, "%s \"%s:p", ASM_STABS_OP, - IDENTIFIER_POINTER (DECL_NAME (parms))); + fprintf (asmfile, "%s \"%s:%c", ASM_STABS_OP, + IDENTIFIER_POINTER (DECL_NAME (parms)), + DBX_MEMPARM_STABS_LETTER); } else { current_sym_nchars = 8; - fprintf (asmfile, "%s \"(anon):p", ASM_STABS_OP); + fprintf (asmfile, "%s \"(anon):%c", ASM_STABS_OP, + DBX_MEMPARM_STABS_LETTER); } current_sym_value @@ -2121,9 +2144,13 @@ dbxout_block (block, depth, args) } } +#ifdef DBX_OUTPUT_LBRAC + DBX_OUTPUT_LBRAC (asmfile, buf); +#else fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_LBRAC); assemble_name (asmfile, buf); fprintf (asmfile, "\n"); +#endif } else if (depth > 0) /* Count blocks the same way regardless of debug_info_level. */ @@ -2146,9 +2173,13 @@ dbxout_block (block, depth, args) { char buf[20]; ASM_GENERATE_INTERNAL_LABEL (buf, "LBE", blocknum); +#ifdef DBX_OUTPUT_RBRAC + DBX_OUTPUT_RBRAC (asmfile, buf); +#else fprintf (asmfile, "%s %d,0,0,", ASM_STABN_OP, N_RBRAC); assemble_name (asmfile, buf); fprintf (asmfile, "\n"); +#endif } } block = BLOCK_CHAIN (block);