stabsread.c (find_name_end): New function.
(define_symbol): Use it.
This commit is contained in:
parent
6e8d29a92c
commit
7e1d63ec94
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user