diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-09-17 20:52:41 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-09-17 20:52:41 +0000 |
commit | 47aa0df47504bd7a24c0e5e3110e927233e4a96d (patch) | |
tree | b548787b45299cc7b303a1196b1877191302b679 | |
parent | 43892f8cea65404797f538f37a500ca62bf672c0 (diff) | |
download | gcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.zip gcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.tar.gz gcc-47aa0df47504bd7a24c0e5e3110e927233e4a96d.tar.bz2 |
re PR debug/12066 (g++ generates stabs for "char *" that gdb cannot read)
PR debug/12066
* dbxout.c (dbxout_init): Use a langhook to find builtin types.
* langhooks-def.h (lhd_return_null_tree_v): New function.
(LANG_HOOKS_BUILTIN_TYPE_DECLS): New macro.
(LANG_HOOKS_DECLS): Add it to the intializer.
* langhooks.c (lhd_return_null_tree_v): New function.
* langhooks.h (lang_hooks_for_decls): Add builtin_type_decls.
PR debug/12066
* cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define.
* cp-tree.h (cxx_builtin_type_decls): Declare.
* decl.c (builtin_type_decls): New variables.
(cxx_builtin_type_decls): New function.
(record_builtin_type): Add to builtin_type_decls.
From-SVN: r71478
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/cp-lang.c | 2 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 2 | ||||
-rw-r--r-- | gcc/cp/decl.c | 19 | ||||
-rw-r--r-- | gcc/dbxout.c | 7 | ||||
-rw-r--r-- | gcc/langhooks-def.h | 3 | ||||
-rw-r--r-- | gcc/langhooks.c | 8 | ||||
-rw-r--r-- | gcc/langhooks.h | 3 |
9 files changed, 60 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f1d478..fe68b0a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2003-09-17 Mark Mitchell <mark@codesourcery.com> + + PR debug/12066 + * dbxout.c (dbxout_init): Use a langhook to find builtin types. + * langhooks-def.h (lhd_return_null_tree_v): New function. + (LANG_HOOKS_BUILTIN_TYPE_DECLS): New macro. + (LANG_HOOKS_DECLS): Add it to the intializer. + * langhooks.c (lhd_return_null_tree_v): New function. + * langhooks.h (lang_hooks_for_decls): Add builtin_type_decls. + 2003-09-17 Daniel Jacobowitz <drow@mvista.com> * configure.in: Quote gcc_config_arguments for configargs.h. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f650e3c..24f82d7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2003-09-17 Mark Mitchell <mark@codesourcery.com> + + PR debug/12066 + * cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define. + * cp-tree.h (cxx_builtin_type_decls): Declare. + * decl.c (builtin_type_decls): New variables. + (cxx_builtin_type_decls): New function. + (record_builtin_type): Add to builtin_type_decls. + 2003-09-17 Richard Henderson <rth@redhat.com> * semantics.c (expand_or_defer_fn): Inc/dec function_depth. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 3e229a0..92e6b91 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -102,6 +102,8 @@ static void cxx_initialize_diagnostics (diagnostic_context *); #define LANG_HOOKS_DECL_PRINTABLE_NAME cxx_printable_name #undef LANG_HOOKS_PRINT_ERROR_FUNCTION #define LANG_HOOKS_PRINT_ERROR_FUNCTION cxx_print_error_function +#undef LANG_HOOKS_BUILTIN_TYPE_DECLS +#define LANG_HOOKS_BUILTIN_TYPE_DECLS cxx_builtin_type_decls #undef LANG_HOOKS_PUSHLEVEL #define LANG_HOOKS_PUSHLEVEL lhd_do_nothing_i #undef LANG_HOOKS_POPLEVEL diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 1d126e8..dfa298f 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -3752,6 +3752,8 @@ extern void register_dtor_fn (tree); extern tmpl_spec_kind current_tmpl_spec_kind (int); extern tree cp_fname_init (const char *); extern tree check_elaborated_type_specifier (enum tag_types, tree, bool); +extern tree cxx_builtin_type_decls (void); + extern bool have_extern_spec; /* in decl2.c */ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 92e8597..8676698 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5911,6 +5911,19 @@ lookup_type_current_level (tree name) } + +/* A chain of TYPE_DECLs for the builtin types. */ + +static GTY(()) tree builtin_type_decls; + +/* Return a chain of TYPE_DECLs for the builtin types. */ + +tree +cxx_builtin_type_decls () +{ + return builtin_type_decls; +} + /* Push the declarations of builtin types into the namespace. RID_INDEX is the index of the builtin type in the array RID_POINTERS. NAME is the name used when looking up the builtin @@ -5952,6 +5965,12 @@ record_builtin_type (enum rid rid_index, if (!TYPE_NAME (type)) TYPE_NAME (type) = tdecl; + + if (tdecl) + { + TREE_CHAIN (tdecl) = builtin_type_decls; + builtin_type_decls = tdecl; + } } /* Record one of the standard Java types. diff --git a/gcc/dbxout.c b/gcc/dbxout.c index d257729..e4c7978 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -535,9 +535,10 @@ dbxout_init (const char *input_file_name) DBX_OUTPUT_STANDARD_TYPES (syms); #endif - /* Get all permanent types that have typedef names, - and output them all, except for those already output. */ - + /* Get all permanent types that have typedef names, and output them + all, except for those already output. Some language front ends + put these declarations in the top-level scope; some do not. */ + dbxout_typedefs ((*lang_hooks.decls.builtin_type_decls) ()); dbxout_typedefs (syms); } diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h index 2f34664..f8ecc8b 100644 --- a/gcc/langhooks-def.h +++ b/gcc/langhooks-def.h @@ -46,6 +46,7 @@ extern void lhd_do_nothing_f (struct function *); extern bool lhd_post_options (const char **); extern HOST_WIDE_INT lhd_get_alias_set (tree); extern tree lhd_return_tree (tree); +extern tree lhd_return_null_tree_v (void); extern tree lhd_return_null_tree (tree); extern tree lhd_do_nothing_iii_return_null_tree (int, int, int); extern int lhd_safe_from_p (rtx, tree); @@ -239,6 +240,7 @@ extern int lhd_tree_dump_type_quals (tree); #define LANG_HOOKS_SET_BLOCK set_block #define LANG_HOOKS_PUSHDECL pushdecl #define LANG_HOOKS_GETDECLS getdecls +#define LANG_HOOKS_BUILTIN_TYPE_DECLS lhd_return_null_tree_v #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl #define LANG_HOOKS_WRITE_GLOBALS write_global_declarations #define LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE NULL @@ -252,6 +254,7 @@ extern int lhd_tree_dump_type_quals (tree); LANG_HOOKS_SET_BLOCK, \ LANG_HOOKS_PUSHDECL, \ LANG_HOOKS_GETDECLS, \ + LANG_HOOKS_BUILTIN_TYPE_DECLS, \ LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \ LANG_HOOKS_WRITE_GLOBALS, \ LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE, \ diff --git a/gcc/langhooks.c b/gcc/langhooks.c index 6c74ed2..a1d60f9 100644 --- a/gcc/langhooks.c +++ b/gcc/langhooks.c @@ -84,6 +84,14 @@ lhd_return_tree (tree t) /* Do nothing (return NULL_TREE). */ tree +lhd_return_null_tree_v (void) +{ + return NULL_TREE; +} + +/* Do nothing (return NULL_TREE). */ + +tree lhd_return_null_tree (tree t ATTRIBUTE_UNUSED) { return NULL_TREE; diff --git a/gcc/langhooks.h b/gcc/langhooks.h index 195446c..4887f6d 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -189,6 +189,9 @@ struct lang_hooks_for_decls /* Returns the chain of decls so far in the current scope level. */ tree (*getdecls) (void); + /* Returns a chain of TYPE_DECLs for built-in types. */ + tree (*builtin_type_decls) (void); + /* Returns true when we should warn for an unused global DECL. We will already have checked that it has static binding. */ bool (*warn_unused_global) (tree); |