X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fdbxout.c;h=a314e7b4430dca73c70faee7f9757422948124c1;hb=0b50e41b4fe9ea3c7b2d82114e3db36d3dc53f4b;hp=0bf5e3cec2e02b971e88efdcb77a1d45510d525a;hpb=e4eb345d1444aecd4974cd7200f45b2e3f700004;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 0bf5e3cec2e..a314e7b4430 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -216,8 +216,8 @@ struct dbx_file struct dbx_file *prev; /* Chain to traverse all pending bincls. */ }; -/* This is the top of the stack. - +/* This is the top of the stack. + This is not saved for PCH, because restoring a PCH should not change it. next_file_number does have to be saved, because the PCH may use some file numbers; however, just before restoring a PCH, next_file_number @@ -306,7 +306,7 @@ static void emit_pending_bincls (void); static inline void emit_pending_bincls_if_required (void); static void dbxout_init (const char *); - + static void dbxout_finish (const char *); static void dbxout_start_source_file (unsigned, const char *); static void dbxout_end_source_file (unsigned); @@ -376,6 +376,7 @@ const struct gcc_debug_hooks dbx_debug_hooks = debug_nothing_void, /* switch_text_section */ debug_nothing_tree, /* direct_call */ debug_nothing_tree_int, /* virtual_call_token */ + debug_nothing_rtx_rtx, /* copy_call_info */ debug_nothing_uid, /* virtual_call */ debug_nothing_tree_tree, /* set_name */ 0 /* start_end_main_source_file */ @@ -413,6 +414,7 @@ const struct gcc_debug_hooks xcoff_debug_hooks = debug_nothing_void, /* switch_text_section */ debug_nothing_tree, /* direct_call */ debug_nothing_tree_int, /* virtual_call_token */ + debug_nothing_rtx_rtx, /* copy_call_info */ debug_nothing_uid, /* virtual_call */ debug_nothing_tree_tree, /* set_name */ 0 /* start_end_main_source_file */ @@ -846,7 +848,7 @@ do { \ SYM is the DECL of the symbol under consideration; it is used only for its DECL_SOURCE_LINE. The other arguments are all passed directly to DBX_FINISH_STABS; see above for details. */ - + static void dbxout_finish_complex_stabs (tree sym, stab_code_type code, rtx addr, const char *label, int number) @@ -900,7 +902,7 @@ dbxout_finish_complex_stabs (tree sym, stab_code_type code, obstack_grow (&stabstr_ob, "\",", 2); len = obstack_object_size (&stabstr_ob); str = XOBFINISH (&stabstr_ob, char *); - + fwrite (str, 1, len, asm_out_file); DBX_FINISH_STABS (sym, code, line, addr, label, number); } @@ -917,7 +919,7 @@ dbxout_function_end (tree decl ATTRIBUTE_UNUSED) /* The Lscope label must be emitted even if we aren't doing anything else; dbxout_block needs it. */ switch_to_section (function_section (current_function_decl)); - + /* Convert Lscope into the appropriate format for local labels in case the system doesn't insert underscores in front of user generated labels. */ @@ -937,10 +939,10 @@ dbxout_function_end (tree decl ATTRIBUTE_UNUSED) if (flag_reorder_blocks_and_partition) { dbxout_begin_empty_stabs (N_FUN); - dbxout_stab_value_label_diff (crtl->subsections.hot_section_end_label, + dbxout_stab_value_label_diff (crtl->subsections.hot_section_end_label, crtl->subsections.hot_section_label); dbxout_begin_empty_stabs (N_FUN); - dbxout_stab_value_label_diff (crtl->subsections.cold_section_end_label, + dbxout_stab_value_label_diff (crtl->subsections.cold_section_end_label, crtl->subsections.cold_section_label); } else @@ -1176,7 +1178,7 @@ dbxout_start_source_file (unsigned int line ATTRIBUTE_UNUSED, n->next = current_file; n->next_type_number = 1; - /* Do not assign file number now. + /* Do not assign file number now. Delay it until we actually emit BINCL. */ n->file_number = 0; n->prev = NULL; @@ -1257,7 +1259,7 @@ dbxout_source_file (const char *filename) } } -/* Output N_BNSYM, line number symbol entry, and local symbol at +/* Output N_BNSYM, line number symbol entry, and local symbol at function scope */ static void @@ -1273,7 +1275,7 @@ dbxout_begin_prologue (unsigned int lineno, const char *filename) scope_labelno++; dbxout_source_line (lineno, filename, 0, true); - /* Output function begin block at function scope, referenced + /* Output function begin block at function scope, referenced by dbxout_block, dbxout_source_line and dbxout_function_end. */ emit_pending_bincls_if_required (); targetm.asm_out.internal_label (asm_out_file, "LFBB", scope_labelno); @@ -1297,7 +1299,7 @@ dbxout_source_line (unsigned int lineno, const char *filename, char begin_label[20]; dbxout_begin_stabn_sline (lineno); /* Reference current function start using LFBB. */ - ASM_GENERATE_INTERNAL_LABEL (begin_label, "LFBB", scope_labelno); + ASM_GENERATE_INTERNAL_LABEL (begin_label, "LFBB", scope_labelno); dbxout_stab_value_internal_label_diff ("LM", &dbxout_source_line_counter, begin_label); } @@ -2091,7 +2093,7 @@ dbxout_type (tree type, int full) int i; tree child; VEC(tree,gc) *accesses = BINFO_BASE_ACCESSES (binfo); - + if (use_gnu_debug_info_extensions) { if (BINFO_N_BASE_BINFOS (binfo)) @@ -2318,7 +2320,7 @@ static void dbxout_type_name (tree type) { tree t = TYPE_NAME (type); - + gcc_assert (t); switch (TREE_CODE (t)) { @@ -3136,7 +3138,7 @@ dbxout_symbol_name (tree decl, const char *suffix, int letter) { tree name; - if (DECL_CONTEXT (decl) + if (DECL_CONTEXT (decl) && (TYPE_P (DECL_CONTEXT (decl)) || TREE_CODE (DECL_CONTEXT (decl)) == NAMESPACE_DECL)) /* One slight hitch: if this is a VAR_DECL which is a class member @@ -3188,12 +3190,12 @@ dbxout_common_check (tree decl, int *value) rtx home; rtx sym_addr; const char *name = NULL; - + /* If the decl isn't a VAR_DECL, or if it isn't static, or if it does not have a value (the offset into the common area), or if it is thread local (as opposed to global) then it isn't common, and shouldn't be handled as such. - + ??? DECL_THREAD_LOCAL_P check prevents problems with improper .stabs for thread-local symbols. Can be handled via same mechanism as used in dwarf2out.c. */ @@ -3204,7 +3206,7 @@ dbxout_common_check (tree decl, int *value) || !is_fortran ()) return NULL; - home = DECL_RTL (decl); + home = DECL_RTL (decl); if (home == NULL_RTX || GET_CODE (home) != MEM) return NULL; @@ -3429,7 +3431,7 @@ dbxout_parms (tree parms) that it was actually passed by invisible reference. */ code = DBX_REGPARM_STABS_CODE; - + /* GDB likes this marked with a special letter. */ letter = (use_gnu_debug_info_extensions ? 'a' : DBX_REGPARM_STABS_LETTER); @@ -3500,7 +3502,7 @@ dbxout_parms (tree parms) continue; dbxout_begin_complex_stabs (); - + if (DECL_NAME (parms)) { stabstr_I (DECL_NAME (parms));