stabsread.c (find_name_end): New function.

(define_symbol): Use it.
This commit is contained in:
Adam Fedor 2002-10-18 22:49:42 +00:00
parent 6e8d29a92c
commit 7e1d63ec94
2 changed files with 36 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2002-10-18 Adam Fedor <fedor@gnu.org>
* stabsread.c (find_name_end): New function.
(define_symbol): Use it.
2002-10-18 Daniel Jacobowitz <drow@mvista.com>
* config/alpha/nm-fbsd.h (CANNOT_STEP_BREAKPOINT): Define to 1.

View File

@ -169,6 +169,8 @@ static int
read_cfront_member_functions (struct field_info *, char **,
struct type *, struct objfile *);
static char *find_name_end (char *name);
/* end new functions added for cfront support */
static void
@ -1271,7 +1273,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
struct objfile *objfile)
{
register struct symbol *sym;
char *p = (char *) strchr (string, ':');
char *p = (char *) find_name_end (string);
int deftype;
int synonym = 0;
register int i;
@ -2004,7 +2006,8 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
a typedef for "foo". Unfortunately, cfront never makes the typedef
when translating C++ into C. We make the typedef here so that
"ptype foo" works as expected for cfront translated code. */
else if (current_subfile->language == language_cplus)
else if ((current_subfile->language == language_cplus)
|| (current_subfile->language == language_objc))
synonym = 1;
SYMBOL_TYPE (sym) = read_type (&p, objfile);
@ -5616,6 +5619,32 @@ finish_global_stabs (struct objfile *objfile)
}
}
/* Find the end of the name, delimited by a ':', but don't match
ObjC symbols which look like -[Foo bar::]:bla. */
static char *
find_name_end (char *name)
{
char *s = name;
if (s[0] == '-' || *s == '+')
{
/* Must be an ObjC method symbol. */
if (s[1] != '[')
{
error ("invalid symbol name \"%s\"", name);
}
s = strchr (s, ']');
if (s == NULL)
{
error ("invalid symbol name \"%s\"", name);
}
return strchr (s, ':');
}
else
{
return strchr (s, ':');
}
}
/* Initializer for this module */
void