debug.h (set_name): Declare.
2009-04-15 Catherine Moore <clm@codesourcery.com> * debug.h (set_name): Declare. * dwarf2out.c (dwarf2out_set_name): Declare. (dwarf2_debug_hooks): Add set_name. (find_AT_string): New. (add_AT_string): Call find_AT_string. (dwarf2out_set_name): New. * cp/decl.c (grokdeclarator): Call set_name. * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing. * debug.c (do_nothing_debug_hooks): Likewise. * dbxout.c (dbx_debug_hooks): Likewise. * sdbout.c (sdb_debug_hooks): Likewise. From-SVN: r146137
This commit is contained in:
parent
4268e5a550
commit
a417cdd963
@ -1,3 +1,17 @@
|
||||
2009-04-15 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* debug.h (set_name): Declare.
|
||||
* dwarf2out.c (dwarf2out_set_name): Declare.
|
||||
(dwarf2_debug_hooks): Add set_name.
|
||||
(find_AT_string): New.
|
||||
(add_AT_string): Call find_AT_string.
|
||||
(dwarf2out_set_name): New.
|
||||
* cp/decl.c (grokdeclarator): Call set_name.
|
||||
* vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
|
||||
* debug.c (do_nothing_debug_hooks): Likewise.
|
||||
* dbxout.c (dbx_debug_hooks): Likewise.
|
||||
* sdbout.c (sdb_debug_hooks): Likewise.
|
||||
|
||||
2009-04-15 Michael Eager <eager@eagercon.com>
|
||||
|
||||
* config/rs6000/rs6000.c: rs6000_function_value: set function return
|
||||
|
@ -8828,8 +8828,13 @@ grokdeclarator (const cp_declarator *declarator,
|
||||
|
||||
/* Replace the anonymous name with the real name everywhere. */
|
||||
for (t = TYPE_MAIN_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t))
|
||||
if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
|
||||
TYPE_NAME (t) = decl;
|
||||
{
|
||||
if (ANON_AGGRNAME_P (TYPE_IDENTIFIER (t)))
|
||||
{
|
||||
debug_hooks->set_name (t, decl);
|
||||
TYPE_NAME (t) = decl;
|
||||
}
|
||||
}
|
||||
|
||||
if (TYPE_LANG_SPECIFIC (type))
|
||||
TYPE_WAS_ANONYMOUS (type) = 1;
|
||||
|
@ -376,6 +376,7 @@ const struct gcc_debug_hooks dbx_debug_hooks =
|
||||
dbxout_handle_pch, /* handle_pch */
|
||||
debug_nothing_rtx, /* var_location */
|
||||
debug_nothing_void, /* switch_text_section */
|
||||
debug_nothing_tree_tree, /* set_name */
|
||||
0 /* start_end_main_source_file */
|
||||
};
|
||||
#endif /* DBX_DEBUGGING_INFO */
|
||||
|
@ -50,6 +50,7 @@ const struct gcc_debug_hooks do_nothing_debug_hooks =
|
||||
debug_nothing_int, /* handle_pch */
|
||||
debug_nothing_rtx, /* var_location */
|
||||
debug_nothing_void, /* switch_text_section */
|
||||
debug_nothing_tree_tree, /* set_name */
|
||||
0 /* start_end_main_source_file */
|
||||
};
|
||||
|
||||
@ -66,6 +67,12 @@ debug_nothing_tree (tree decl ATTRIBUTE_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
debug_nothing_tree_tree (tree t1 ATTRIBUTE_UNUSED,
|
||||
tree t2 ATTRIBUTE_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
debug_nothing_tree_tree_tree_bool (tree t1 ATTRIBUTE_UNUSED,
|
||||
tree t2 ATTRIBUTE_UNUSED,
|
||||
|
@ -126,6 +126,8 @@ struct gcc_debug_hooks
|
||||
text sections. */
|
||||
void (* switch_text_section) (void);
|
||||
|
||||
void (* set_name) (tree, tree);
|
||||
|
||||
/* This is 1 if the debug writer wants to see start and end commands for the
|
||||
main source files, and 0 otherwise. */
|
||||
int start_end_main_source_file;
|
||||
@ -140,6 +142,7 @@ extern void debug_nothing_int_charstar (unsigned int, const char *);
|
||||
extern void debug_nothing_int (unsigned int);
|
||||
extern void debug_nothing_int_int (unsigned int, unsigned int);
|
||||
extern void debug_nothing_tree (tree);
|
||||
extern void debug_nothing_tree_tree (tree, tree);
|
||||
extern void debug_nothing_tree_int (tree, int);
|
||||
extern void debug_nothing_tree_tree_tree_bool (tree, tree, tree, bool);
|
||||
extern bool debug_true_const_tree (const_tree);
|
||||
|
@ -4549,6 +4549,7 @@ static void dwarf2out_imported_module_or_decl_1 (tree, tree, tree,
|
||||
static void dwarf2out_abstract_function (tree);
|
||||
static void dwarf2out_var_location (rtx);
|
||||
static void dwarf2out_begin_function (tree);
|
||||
static void dwarf2out_set_name (tree, tree);
|
||||
|
||||
/* The debug hooks structure. */
|
||||
|
||||
@ -4582,6 +4583,7 @@ const struct gcc_debug_hooks dwarf2_debug_hooks =
|
||||
debug_nothing_int, /* handle_pch */
|
||||
dwarf2out_var_location,
|
||||
dwarf2out_switch_text_section,
|
||||
dwarf2out_set_name,
|
||||
1 /* start_end_main_source_file */
|
||||
};
|
||||
#endif
|
||||
@ -5929,12 +5931,9 @@ debug_str_eq (const void *x1, const void *x2)
|
||||
(const char *)x2) == 0;
|
||||
}
|
||||
|
||||
/* Add a string attribute value to a DIE. */
|
||||
|
||||
static inline void
|
||||
add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
|
||||
static struct indirect_string_node *
|
||||
find_AT_string (const char *str)
|
||||
{
|
||||
dw_attr_node attr;
|
||||
struct indirect_string_node *node;
|
||||
void **slot;
|
||||
|
||||
@ -5955,6 +5954,18 @@ add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
|
||||
node = (struct indirect_string_node *) *slot;
|
||||
|
||||
node->refcount++;
|
||||
return node;
|
||||
}
|
||||
|
||||
/* Add a string attribute value to a DIE. */
|
||||
|
||||
static inline void
|
||||
add_AT_string (dw_die_ref die, enum dwarf_attribute attr_kind, const char *str)
|
||||
{
|
||||
dw_attr_node attr;
|
||||
struct indirect_string_node *node;
|
||||
|
||||
node = find_AT_string (str);
|
||||
|
||||
attr.dw_attr = attr_kind;
|
||||
attr.dw_attr_val.val_class = dw_val_class_str;
|
||||
@ -15763,6 +15774,31 @@ maybe_emit_file (struct dwarf_file_data * fd)
|
||||
return fd->emitted_number;
|
||||
}
|
||||
|
||||
/* Replace DW_AT_name for the decl with name. */
|
||||
|
||||
static void
|
||||
dwarf2out_set_name (tree decl, tree name)
|
||||
{
|
||||
dw_die_ref die;
|
||||
dw_attr_ref attr;
|
||||
|
||||
die = TYPE_SYMTAB_DIE (decl);
|
||||
if (!die)
|
||||
return;
|
||||
|
||||
attr = get_AT (die, DW_AT_name);
|
||||
if (attr)
|
||||
{
|
||||
struct indirect_string_node *node;
|
||||
|
||||
node = find_AT_string (dwarf2_name (name, 0));
|
||||
/* replace the string. */
|
||||
attr->dw_attr_val.v.val_str = node;
|
||||
}
|
||||
|
||||
else
|
||||
add_name_attribute (die, dwarf2_name (name, 0));
|
||||
}
|
||||
/* Called by the final INSN scan whenever we see a var location. We
|
||||
use it to drop labels in the right places, and throw the location in
|
||||
our lookup table. */
|
||||
|
@ -337,6 +337,7 @@ const struct gcc_debug_hooks sdb_debug_hooks =
|
||||
debug_nothing_int, /* handle_pch */
|
||||
debug_nothing_rtx, /* var_location */
|
||||
debug_nothing_void, /* switch_text_section */
|
||||
debug_nothing_tree_tree, /* set_name */
|
||||
0 /* start_end_main_source_file */
|
||||
};
|
||||
|
||||
|
@ -211,6 +211,7 @@ const struct gcc_debug_hooks vmsdbg_debug_hooks
|
||||
debug_nothing_int, /* handle_pch */
|
||||
debug_nothing_rtx, /* var_location */
|
||||
debug_nothing_void, /* switch_text_section */
|
||||
debug_nothing_tree_tree, /* set_name */
|
||||
0 /* start_end_main_source_file */
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user