2004-02-09 Daniel Jacobowitz * config/djgpp/fnchange.lst: Add cp-names.tab.c. 2003-01-13 Daniel Jacobowitz * Makefile.in (cp_demangle_h): Remove. (libiberty_h): Add. (cp-names.tab.o, cp-names-main.tab.o, cp-support.o): Update dependencies. * cp-support.c: Don't include "cp-demangle.h". (d_left, d_right): New macros. (cp_canonicalize_string, class_name_from_physname, method_name_from_physname): Fix types and component names. * cp-support.h (demangled_name_to_comp, mangled_name_to_comp) (cp_comp_to_string): Update prototypes. 2004-01-13 Daniel Jacobowitz * cp-names.y: Don't include "cp-demangle.h". Convert all references to d_info, d_comp, and D_COMP_* to demangle_info, demangle_component, and DEMANGLE_COMPONENT_*. Convert all calls to cp_v3_d_* functions to new wrapper functions. Add precedences for VOID and ')'. (struct demangle_info): New type. (d_grab, d_left, d_right): New macros. (fill_comp, make_empty, make_operator, make_dtor, make_builtin_type) (make_name): New wrapper functions. (function_args): Remove D_PRINT_VOID test. (function_arglist): Handle '(' VOID ')'. (allocate_info): New function. (demangled_name_to_comp): Use it. Call free. (mangled_name_to_comp): Use cplus_demangle_v3_components. (cp_print, main): Use fputs instead of puts. * cp-support.c (cp_canonicalize_string, class_name_from_physname) (method_name_from_physname): Remove calls to cp_v3_d_free_info. Test demangled_name before freeing it. 2004-01-11 Daniel Jacobowitz * cp-names.y (orig_lexptr): New variable. (exp1): New production for parenthesized references. (yyerror): Print out complete string on parse error. (demangled_name_to_comp, main): Set orig_lexptr. 2003-01-04 Daniel Jacobowitz * Makefile.in (cp_names_h): Remove. (cp_demangle_h): New. (cp-names.tab.o, cp-names-main.tab.o): Use $(cp_demangle_h) and remove $(cp_names_h). (cp-support.o): Use $(cp_demangle_h). * cp-names.y: Don't include cp-names.h. (cp_comp_to_string): Export. (cp_canonicalize_string): Move to cp-support.c. (demangled_name_to_comp, mangled_name_to_comp): New functions. * cp-support.c: Include "cp-demangle.h". (cp_canonicalize_string): New function, moved from cp-names.y and updated. (class_name_from_physname, method_name_from_physname): Rewritten. (find_last_component): Removed. * cp-support.h: Add new opaque types and prototypes. * dwarf2read.c: Don't include cp-names.h. * cp-names.h: Remove file. 2004-01-04 Daniel Jacobowitz * Makefile.in (cp-names.tab.o, cp-names-main.tab.o, test-cpnames): Update dependencies. Link the correct libiberty. * cp-names.y: Include cp-demangle.h instead of cp-demangle.c. Update names of exported functions from cp-demangle.c. Use cp_v3_d_init_info_alloc and cp_v3_d_free_info. 2003-12-30 Daniel Jacobowitz * cp-names.y (yylex): Fix thinko for character constants. * dwarf2read.c: Include "cp-names.h". (read_structure_scope): Canonicalize class names. 2003-12-24 Daniel Jacobowitz * Makefile.in (cp_names_h): New variable. (cp-names.tab.o, cp-names-main.tab.o): Depend on cp-names.h. * cp-names.h: New file. * cp-names.y: Include "cp-names.h". (lexptr, prev_lexptr): Make const. (symbol_end): Make argument and return type const. Move outside of TEST_CPNAMES. (parse_number): Make argument const. Use an ISO C declaration. (parse_escape): Make argument const. (yylex): Make some pointers const. (cp_comp_to_string, cp_canonicalize_string): New functions. (trim_chars): Cast symbol_end's return value to non-const in this case. 2003-12-24 Daniel Jacobowitz * cp-names.y (LONGEST, ULONGEST, DOUBLEST): Remove. (d_qualify): Take an int argument. Update for new INT_LLONG handling. (INT_CHAR, INT_SHORT, INT_LONG, INT_LLONG, INT_SIGNED) (INT_UNSIGNED): Change into bitflags. (%union): Change lval and typed_val_int.val to ints. (scope_id, typespec): Inline non-terminals at their use sites. (sign, size, int_type): Remove. (int_part, int_seq): New non-terminals. (result): Add missing semicolon. (name, nested_name): Inline scope_id here. (template_arg, function_args): Inline type here. (builtin_type): Use int_seq. Add missing semicolon. (typespec_2): Inline typespec and colon_name here. (start, qualifiers_opt, qualifiers): Remove redundant action. (abstract_declarator, direct_abstract_declarator): Likewise. (abstract_declarator_fn): Likewise. (d_builtin_type): New helper function. (parse_number): Use d_builtin_type. (HANDLE_SPECIAL): Only take one argument. (yylex): Remove unused variable unquoted_expr. Use d_builtin_type. Update calls to HANDLE_SPECIAL. Jump around case '-' instead of falling through it. Use ISALNUM and ISALPHA. Add a return statement after a call to error. Match trailing speaces on special tokens. (cp_print): Take a len argument, and pass it to d_print. Print the string instead of returning it. (main): Pass len to cp_print. Allocate and free myinfo.comps. Use putchar and puts instead of printf. * Makefile.in (safe_ctype_h): Add. (test-cpnames, cp-names-main.tab.o): New rules. (clean): Remove test-cpnames. (cp-names.tab.o): Update dependencies. 2003-12-20 Daniel Jacobowitz * cp-names.y (%union): Remove abstract_fn. Add abstract. (abstract_declarator_fn): Change type to abstract. Fold function arglists lazily. Handle start_opt after function_arglist and :: after more complex function types. (abstract_declarator): Change type to abstract. Fold function arglists eagerly. (direct_abstract_declarator): Change type to abstract. Fold function arglists only when necessary. (function): Move start_opt into abstract_declarator_fn. Handle bare conversion typespecs and unfolded arglists. (declarator_1): Handle local names inside more complex function declarations. (main): Support --debug. 2003-12-20 Daniel Jacobowitz * cp-names.y (%union): Add abstract_fn. (conversion_op): New non-terminal, broken out of operator. (conversion_op_name, abstract_declarator_fn): New non-terminals. (ptr_operator_seq): Remove. (function): Use D_COMP_LOCAL_NAME. Handle conversion operators. (declarator_1): Use D_COMP_LOCAL_NAME. (tokentab2, tokentab3): Remove. (HANDLE_TOKEN3): Fix typo. (yylex): Call HANDLE_TOKEN3 before HANDLE_TOKEN2. 2003-12-19 Daniel Jacobowitz * cp-names.y (tokentab2, tokentab3): Remove. (HANDLE_TOKEN2, HANDLE_TOKEN3): New macros. (yylex): Use them. 2003-12-19 Daniel Jacobowitz * cp-names.y (%union): Remove typed_val_float. (INT, FLOAT): Change to type comp. (CONSTRUCTION_VTABLE): Change to untyped. (demangler_special): Use D_COMP_CONSTRUCTION_VTABLE. (array_indicator, exp): Update for new types of INT and FLOAT. Handle D_COMP_LITERAL_NEG. (parse_number): Simplify. Use D_COMP_LITERAL_NEG. (HANDLE_SPECIAL): Define. (tokentab_big): Remove. (yylex): Remove unused variables. Optimize calls to strncmp and handling of multi-word tokens. 2003-12-19 Daniel Jacobowitz * cp-names.y (symbol_end): New function. (trim_chars): Use it. (start_opt, function): New non-terminals used to support function-local names. (GLOBAL): New terminal. (start): Use start_opt. (demangler_special): Handle GLOBAL. (array_indicator): Swap arguments to D_COMP_ARRAY_TYPE. (direct_abstract_declarator, direct_declarator) (direct_declarator_1): Likewise. (declarator_1): Use declarator_1 instead of declarator after a ptr_operator. Support function-local names. (yylex): Handle GLOBAL specially. 2003-12-19 Daniel Jacobowitz * cp-names.y (demangler_special): New non-terminal. (DEMANGLER_SPECIAL, CONSTRUCTION_VTABLE, CONSTRUCTION_IN): New terminals. (GLOBAL_CONSTRUCTORS, GLOBAL_DESTRUCTORS): New enums. (tokentab_big): New struct. (yylex): Recognize them. Handle negative literals. (parse_number): Handle negative literals. (start): Use demangler_special. (operator): Correct typos for ->* and (). Use typespec_2 instead of typespec. (unqualified_name): Allow operator templates. (template_arg): Create a unary operation, not a reference type. (exp): Set the type of D_COMP_LITERALs instead of adding a cast operation. (cp_print, trim_chars): New helper functions. (main): Use them. 2003-12-18 Daniel Jacobowitz * cp-names.y (ext_name): Remove. (colon_ext_only, ext_only_name): New non-terminals. (colon_ext_name): Use colon_ext_only. (declarator_1, direct_declarator_1): New non-terminals. ('('): Remove %right precedence. (result): New non-terminal. (start): Assign to $$. Use declarator_1. Handle functions without return types. (template_arg): Use start instead of colon_ext_name. (yylex): Fix typo in "char" case. (yyerror): Add newline. (main): Behave like c++filt when started with no arguments. 2003-12-18 Daniel Jacobowitz * cp-names.y (basic_exp): Remove. (function_arglist, declarator, abstract_declarator) (direct_declarator, direct_abstract_declarator): Change type to nested. (array_indicator): New rule. (start): Add actions. (operator): Correct actions for conversion operators. (template_arg): Use exp instead of basic_exp. (abstract_declarator, type, declarator): Add missing actions. (direct_abstract_declarator, direct_declarator): Likewise. Use array_indicator. Correct use of function_arglist. 2003-12-17 Daniel Jacobowitz * cp-names.y (ptr_operator_1, ptr_operator_2): Merge back into ptr_operator. (qualified, decl1b): Remove. (NEW, DELETE): Give higher precedence than '['. (typespec, typespec_2, declarator, direct_declarator) (abstract_declarator, direct_abstract_declarator): New. (start, type): Use them. (operator): Add rules for conversion operators. (exp): Avoid a conflict for function-style casts; allow function-style casts to typenames. 2003-12-17 Daniel Jacobowitz * cp-names.y: Use precedence to resolve shift/reduce conflicts for COLONCOLON. Merge type1a, type1b, and type2 rules. 2003-12-16 Daniel Jacobowitz * cp-names.y (function_arglist): Call d_qualify. (ptr_operator_seq): Reverse the list. (decl1b): Add the declarator-id. 2003-12-14 Daniel Jacobowitz * Makefile.in: Add cp-names.y. * cp-names.y: New file. 2002-11-22 David Carlton * symtab.h: Add opaque declarations for struct namespace_info and struct obstack. (struct block): The language_specific stuff is now a struct namespace_info rather than a struct using_direct_node. (BLOCK_NAMESPACE): New macro. Delete macro BLOCK_USING. Add declarations for block_using, block_all_usings, block_set_using, block_scope, block_set_scope. * symtab.c: #include "gdb_assert.h" (lookup_symbol_aux): Move minsym stuff inside lookup_symbol_aux_nonlocal, and always do global search via lookup_symbol_aux_using. (lookup_symbol_aux_nonlocal): Do minsym search. (lookup_symbol_aux_using): Calculate usings via block_all_usings; handle namespace scope. (lookup_symbol_aux_using_loop): New function, not to be confused with the previous function of the same name. (Sorry about that.) (lookup_symbol_namespace): Renamed from lookup_symbol_aux_using_loop. (lookup_symbol_aux_minsyms): Add block_index argument, delete is_a_field_of_this argument, and only check either global or static symbols rather than both of them. (block_using): New function. (block_all_usings): New function. (block_set_using): New function. (block_scope): New function. (block_set_scope): New function. (block_initialize_namespace): New function. * jv-lang.c (get_java_class_symtab): BLOCK_NAMESPACE instead of BLOCK_USING. * dwarf2read.c: Delete variable current_namespace, and replace its uses by processing_current_namespace (from buildsym.h). (scan_partial_symbols): Allow empty pdi.name if we're reading a namespace. * cp-support.h (struct namespace_info): New struct. * cp-support.c: Add comment. * buildsym.h: New variable processing_current_namespace. * buildsym.c (add_symbol_to_list): Do fast search for "(anonymous namespace)". (scan_for_anonymous_namespaces): Delete FIXME. Convert for loop into a clearer while loop. (finish_block): Replace BLOCK_USING by BLOCK_NAMESPACE. (finish_block): Set block_scope of function blocks rather than generating using directives that would have a similar effect. (end_symtab): Set using via block_set_using rather than BLOCK_USING. * Makefile.in (symtab.o): Depend on gdb_assert_h. 2002-11-01 Daniel Jacobowitz * c-typeprint.c (c_type_print_args): Remove. (cp_type_print_method_args): Remove unused PREFIX argument. Simplify logic. Skip FIELD_ARTIFICIAL arguments. (c_type_print_varspec_suffix): Call cp_type_print_method_args. (c_type_print_base): Handle template classes when looking for constructor field names. Update call to cp_type_print_method_args. 2002-11-01 Daniel Jacobowitz * gdbtypes.c (get_destructor_fn_field): Return obvious destructors based on method name. 2002-10-30 Daniel Jacobowitz * c-typeprint.c (c_type_print_modifier_before): New function. (c_type_print_modifier_after): New function. (c_type_print_base): Call c_type_print_modifier_before and c_type_print_modifier_after. 2002-10-28 Daniel Jacobowitz * c-typeprint.c (c_type_print_base): Print method qualifiers. 2002-10-22 David Carlton * Makefile.in (buildsym.o): Depend on $(gdb_assert_h) and $(cp_support_h). (cp-support.o): Fix dependencies and add $(gdb_obstack_h) and $(gdb_assert_h). (symtab.o): Depend on $(cp_support_h). * symtab.h: Add opaque declaration for struct using_direct_node. (struct block): Add member 'language_specific'. (BLOCK_USING): New macro. * symtab.c: #include "cp-support.h" (lookup_symbol_aux): Call lookup_symbol_aux_nonlocal and lookup_symbol_aux_using when appropriate. (lookup_symbol_aux_nonlocal): New function. (lookup_symbol_aux_using): New function. (lookup_symbol_aux_using_loop): New function. * symfile.h: Add opaque declaration for struct obstack. Declare obsavestring to take a const char *. * symfile.c (obsavestring): Make first argument a const char *. * jv-lang.c (get_java_class_symtab): Initialize BLOCK_USING. * dwarf2read.c: New variable current_namespace. (scan_partial_symbols): Handle DW_TAG_namespace. (psymtab_to_symtab_1): Initialize current_namespace. (process_die): Handle DW_TAG_namespace, DW_TAG_imported_declaration, DW_TAG_imported_module. (read_namespace): New function. (dwarf2_name): New function. (dwarf2_extension): New function. (dwarf_tag_name): Add DWARF 3 names. (dwarf_attr_name): Ditto. (dwarf_type_encoding_name): Ditto. * cp-support.h: Opaque declaration for struct obstack. (struct using_direct): New struct. (struct using_direct_node): New struct. Add declarations for cp_add_using_obstack, cp_add_using_xmalloc, cp_copy_usings, cp_free_usings, cp_find_first_component. * cp-support.c: #include "gdb_obstack.h", "gdb_assert.h". Comment on demangled name pitfalls. (cp_add_using_obstack): New function. (cp_add_using_xmalloc): New function. (cp_copy_usings): New function. (cp_free_usings): New function. (cp_find_first_component): New function. * buildsym.h: Declare processing_has_namespace_info. Declare add_using_directive. * buildsym.c: #include "gdb_assert.h", "cp-support.h". Change comment after #include "symfile.h". New variable using_list. (add_symbol_to_list): Scan for anonymous namespaces when appropriate. (scan_for_anonymous_namespaces): New function. (add_using_directive): New function. (start_symtab): Initialize processing_has_namespace_info, using_list. (end_symtab): Copy using_list into block. (copy_usings_to_obstack): New function. (finish_block): Set BLOCK_USING in general case and in C++ function case. 2002-10-11 David Carlton * symtab.c (lookup_symbol_aux): Move chunks of code into separate functions. (lookup_symbol_aux_local): New function. (lookup_symbol_aux_symtabs): New function. (lookup_symbol_aux_psymtabs): New function. (lookup_symbol_aux_minsyms): New function. 2002-10-05 Daniel Jacobowitz * stabsread.c (read_member_functions): Update comment. Set TYPE_NAME if possible. 2002-10-05 Daniel Jacobowitz * c-typeprint.c (cp_type_print_method_args): Don't recursively expand classes in the arguments to methods. (c_type_print_base): Use the name of the method to figure out if it is a constructor or destructor. Use the type information to print out the method signature, instead of using the demangled name.