* Makefile.in (SFILES): Add cp-names.y.

(libiberty_h, safe_ctype_h): New.
	(YYFILES): Add cp-names.c.
	(YYOBJ): Add cp-names.o.
	(test-cp-names.o, test-cp-names$(EXEEXT), cp-names.o): New rules.
	(clean): Remove test-cp-names$(EXEEXT).
	(local-maintainer-clean): Remove cp-names.c.
	* cp-names.y: New file.
	* cp-support.c (find_last_component): Delete.
	(d_left, d_right): Define.
	(cp_canonicalize_string, mangled_name_to_comp): New functions.
	(cp_class_name_from_physname, method_name_from_physname): Rewrite
	to use mangled_name_to_comp.
	* cp-support.h (cp_canonicalize_string, cp_demangled_name_to_comp)
	(cp_comp_to_string): New prototypes.
	* config/djgpp/fnchange.lst: Add cp-names.c.
This commit is contained in:
Daniel Jacobowitz
2005-03-11 02:24:23 +00:00
parent 0fa77c953f
commit fb4c6eba43
6 changed files with 2383 additions and 120 deletions

View File

@@ -1,5 +1,5 @@
/* Helper routines for C++ support in GDB.
Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Contributed by MontaVista Software.
Namespace support contributed by David Carlton.
@@ -35,6 +35,7 @@ struct obstack;
struct block;
struct objfile;
struct type;
struct demangle_component;
/* This struct is designed to store data from using directives. It
says that names from namespace INNER should be visible within
@@ -52,6 +53,8 @@ struct using_direct
/* Functions from cp-support.c. */
extern char *cp_canonicalize_string (const char *string);
extern char *cp_class_name_from_physname (const char *physname);
extern char *method_name_from_physname (const char *physname);
@@ -113,6 +116,14 @@ extern void cp_check_possible_namespace_symbols (const char *name,
struct type *cp_lookup_transparent_type (const char *name);
/* Functions from cp-names.y. */
extern struct demangle_component *cp_demangled_name_to_comp
(const char *demangled_name, void **memory_p, const char **errmsg);
extern char *cp_comp_to_string (struct demangle_component *result,
int estimated_len);
/* The list of "maint cplus" commands. */
extern struct cmd_list_element *maint_cplus_cmd_list;