mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
* dbxread.c (process_one_symbol): Make a first cut at handling
symbol tables generated by Suns acc.
This commit is contained in:
parent
1395529c9d
commit
3c03b5de58
@ -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.
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user