mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
5c4e30cabe
* gdbtypes.h: Add TYPE_CODE_NAMESPACE. * gdbtypes.c (init_type): Handle TYPE_CODE_NAMESPACE. (recursive_dump_type): Ditto. * printcmd.c (print_formatted): Ditto. * typeprint.c (print_type_scalar): Ditto. * c-typeprint.c (c_type_print_varspec_prefix): Ditto. (c_type_print_varspec_suffix, c_type_print_base): Ditto. * cp-support.h: Declare cp_check_possible_namespace_symbols, maint_cplus_cmd_list. * cp-support.c: Make maint_cplus_cmd_list extern. * cp-namespace.c: Include objfiles.h, gdbtypes.h, dictionary.h, command.h. (lookup_symbol_file): Look in possible namespace blocks when appropriate. (initialize_namespace_symtab): New. (get_possible_namespace_block, free_namespace_block) (check_possible_namespace_symbols) (check_possible_namespace_symbols_loop) (check_one_possible_namespace_symbol) (lookup_possible_namespace_symbol, maintenance_cplus_namespace) (_initialize_cp_namespace): Ditto. * block.h: Declare allocate_block. * block.c (allocate_block): New. * jv-lang.c (get_java_class_symtab): Allocate blocks via allocate_block. * symfile.h: Update declaration of add_psymbol_to_list. * symfile.c (add_psymbol_to_list): Return the partial symbol in question. * dwarf2read.c (dwarf2_build_psymtabs_hard): Add argument to scan_partial_symbols_call. (scan_partial_symbols): Add NAMESPACE argument; update calls to helper functions. (add_partial_symbol): If necessary, scan mangled names for names of namespaces. (add_partial_namespace): Add NAMESPACE argument; generate partial symbols associated to namespaces. (add_partial_enumeration): Add NAMESPACE argument. (new_symbol): Allow namespace syms. (read_namespace): Generate namespace syms. * objfiles.h: Add opaque declaration of struct symtab. (struct objfile): Add cp_namespace_symtab member. * objfiles.c (allocate_objfile): Set objfile->cp_namespace_symtab. * Makefile.in (cp-namespace.o): Depend on objfiles_h, gdbtypes_h, dictionary_h, command_h. 2003-09-11 David Carlton <carlton@kealia.com> * gdb.c++/namespace.exp: Add tests for namespace types. * gdb.c++/maint.exp (test_help): Test 'help maint cp namespace'. (test_namespace): New.
107 lines
3.1 KiB
C++
107 lines
3.1 KiB
C++
/* Helper routines for C++ support in GDB.
|
|
Copyright 2002, 2003 Free Software Foundation, Inc.
|
|
|
|
Contributed by MontaVista Software.
|
|
Namespace support contributed by David Carlton.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
#ifndef CP_SUPPORT_H
|
|
#define CP_SUPPORT_H
|
|
|
|
/* We need this for 'domain_enum', alas... */
|
|
|
|
#include "symtab.h"
|
|
|
|
/* Opaque declarations. */
|
|
|
|
struct symbol;
|
|
struct obstack;
|
|
struct block;
|
|
|
|
/* This struct is designed to store data from using directives. It
|
|
says that names from namespace INNER should be visible within
|
|
namespace OUTER. OUTER should always be a strict initial substring
|
|
of INNER. These form a linked list; NEXT is the next element of
|
|
the list. */
|
|
|
|
struct using_direct
|
|
{
|
|
char *inner;
|
|
char *outer;
|
|
struct using_direct *next;
|
|
};
|
|
|
|
|
|
/* Functions from cp-support.c. */
|
|
|
|
extern char *class_name_from_physname (const char *physname);
|
|
|
|
extern char *method_name_from_physname (const char *physname);
|
|
|
|
extern unsigned int cp_find_first_component (const char *name);
|
|
|
|
extern unsigned int cp_entire_prefix_len (const char *name);
|
|
|
|
extern struct symbol **make_symbol_overload_list (struct symbol *);
|
|
|
|
/* Functions/variables from cp-namespace.c. */
|
|
|
|
extern unsigned char processing_has_namespace_info;
|
|
|
|
extern const char *processing_current_namespace;
|
|
|
|
extern int cp_is_anonymous (const char *namespace);
|
|
|
|
extern void cp_add_using_directive (const char *name,
|
|
unsigned int outer_length,
|
|
unsigned int inner_length);
|
|
|
|
extern void cp_initialize_namespace (void);
|
|
|
|
extern void cp_finalize_namespace (struct block *static_block,
|
|
struct obstack *obstack);
|
|
|
|
extern void cp_set_block_scope (const struct symbol *symbol,
|
|
struct block *block,
|
|
struct obstack *obstack);
|
|
|
|
extern void cp_scan_for_anonymous_namespaces (const struct symbol *symbol);
|
|
|
|
extern struct symbol *cp_lookup_symbol_nonlocal (const char *name,
|
|
const char *linkage_name,
|
|
const struct block *block,
|
|
const domain_enum domain,
|
|
struct symtab **symtab);
|
|
|
|
extern struct symbol *cp_lookup_symbol_namespace (const char *namespace,
|
|
const char *name,
|
|
const char *linkage_name,
|
|
const struct block *block,
|
|
const domain_enum domain,
|
|
struct symtab **symtab);
|
|
|
|
extern void cp_check_possible_namespace_symbols (const char *name,
|
|
struct objfile *objfile);
|
|
|
|
/* The list of "maint cplus" commands. */
|
|
|
|
extern struct cmd_list_element *maint_cplus_cmd_list;
|
|
|
|
#endif /* CP_SUPPORT_H */
|