summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-05-15 21:01:40 +0000
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>1992-05-15 21:01:40 +0000
commit98123cec2b269aae7ea3849ba94b555916e1e3b9 (patch)
tree54b6f37eedfbb85c4c749feb710c882adc580ffd /gcc
parent30b373e567080777fdd1cb3f145c831b3a29fd8b (diff)
downloadgcc-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.h5
-rw-r--r--gcc/dbxout.c51
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);