diff options
author | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-05-15 21:01:40 +0000 |
---|---|---|
committer | rms <rms@138bc75d-0d04-0410-961f-82ee72b054a4> | 1992-05-15 21:01:40 +0000 |
commit | 98123cec2b269aae7ea3849ba94b555916e1e3b9 (patch) | |
tree | 54b6f37eedfbb85c4c749feb710c882adc580ffd /gcc | |
parent | 30b373e567080777fdd1cb3f145c831b3a29fd8b (diff) | |
download | gcc-98123cec2b269aae7ea3849ba94b555916e1e3b9.tar.gz |
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@993 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/svr4.h | 5 | ||||
-rw-r--r-- | 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); |