* dbxread.c (process_one_symbol): Make a first cut at handling

symbol tables generated by Suns acc.
This commit is contained in:
Stu Grossman 1992-01-28 02:24:08 +00:00
parent 1395529c9d
commit 3c03b5de58
2 changed files with 16 additions and 6 deletions

View File

@ -1,5 +1,8 @@
Mon Jan 27 15:46:21 1992 Stu Grossman (grossman at cygnus.com) Mon Jan 27 15:46:21 1992 Stu Grossman (grossman at cygnus.com)
* dbxread.c (process_one_symbol): Make a first cut at handling
symbol tables generated by Suns acc.
* symtab.c (find_pc_line): Fix stepping into and out of #included * symtab.c (find_pc_line): Fix stepping into and out of #included
files. files.

View File

@ -1355,6 +1355,13 @@ process_one_symbol (type, desc, valu, name)
{ {
case N_FUN: case N_FUN:
case N_FNAME: case N_FNAME:
/* It seems that the Sun ANSI C compiler (acc) replaces N_FUN with N_GSYM and
N_STSYM with a type code of f or F. Can't enable this until we get some
stuff straightened out with psymtabs.
*/
case N_GSYM:
case N_STSYM:
/* Either of these types of symbols indicates the start of /* Either of these types of symbols indicates the start of
a new function. We must process its "name" normally for dbx, a new function. We must process its "name" normally for dbx,
but also record the start of a new lexical context, and possibly but also record the start of a new lexical context, and possibly
@ -1362,10 +1369,6 @@ process_one_symbol (type, desc, valu, name)
/* This is not always true. This type of symbol may indicate a /* This is not always true. This type of symbol may indicate a
text segment variable. */ text segment variable. */
#ifndef SUN_FIXED_LBRAC_BUG
last_pc_address = valu; /* Save for SunOS bug circumcision */
#endif
colon_pos = strchr (name, ':'); colon_pos = strchr (name, ':');
if (!colon_pos++ if (!colon_pos++
|| (*colon_pos != 'f' && *colon_pos != 'F')) || (*colon_pos != 'f' && *colon_pos != 'F'))
@ -1374,6 +1377,10 @@ process_one_symbol (type, desc, valu, name)
break; break;
} }
#ifndef SUN_FIXED_LBRAC_BUG
last_pc_address = valu; /* Save for SunOS bug circumcision */
#endif
within_function = 1; within_function = 1;
if (context_stack_depth > 0) if (context_stack_depth > 0)
{ {
@ -1384,7 +1391,7 @@ process_one_symbol (type, desc, valu, name)
} }
/* Stack must be empty now. */ /* Stack must be empty now. */
if (context_stack_depth != 0) if (context_stack_depth != 0)
complain (lbrac_unmatched_complaint, symnum); complain (&lbrac_unmatched_complaint, symnum);
new = push_context (0, valu); new = push_context (0, valu);
new->name = define_symbol (valu, name, desc, type); new->name = define_symbol (valu, name, desc, type);
@ -1432,7 +1439,7 @@ process_one_symbol (type, desc, valu, name)
new = pop_context(); new = pop_context();
if (desc != new->depth) if (desc != new->depth)
complain (lbrac_mismatch_complaint, symnum); complain (&lbrac_mismatch_complaint, symnum);
/* Some compilers put the variable decls inside of an /* Some compilers put the variable decls inside of an
LBRAC/RBRAC block. This macro should be nonzero if this LBRAC/RBRAC block. This macro should be nonzero if this