diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-19 06:22:04 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-07-19 06:22:04 +0000 |
commit | c37d72e9931dff0b6d6e649996c1bdaaeb654870 (patch) | |
tree | b1d514bcbcb3022999013a3add1442cb71310221 /gcc/sdbout.c | |
parent | f26876eec29e7a7ca6c69b854d4822f9cacd519e (diff) | |
download | gcc-c37d72e9931dff0b6d6e649996c1bdaaeb654870.tar.gz |
* Makefile.in (toplev.o, dwarfout.o, final.o): Don't depend on
dwarfout.h.
* dbxout.c (dbxout_function): Rename dbxout_funciton_decl, move
to conditionally compiled block.
(dbx_debug_hooks, xcoff_debug_hooks): Update.
* dbxout.h (dbxout_function): Remove.
* debug.c (do_nothing_debug_hooks): Update.
* debug.h (struct gcc_debug_hooks): New hooks function_decl,
global_decl, deferred_inline_function.
* dwarf2out.c (dwarf2_debug_hooks): Update.
(dwarf2out_global_decl): New.
* dwarfout.c: Don't include dwarfout.h.
(dwarfout_global_decl, dwarfout_function_decl,
dwarfout_deferred_inline_function): New.
(dwarf_debug_hooks): Update.
* dwarfout.h: Remove.
* final.c: Don't include dwarfout.h.
* sdbout.c (sdbout_global_decl): New.
(sdbout_debug_hooks): Update.
* toplev.c: Don't include dwarfout.h.
(check_global_declarations, rest_of_compilation): Use new debug hooks.
(note_deferral_of_defined_inline_function): Remove.
* toplev.h (note_deferral_of_defined_inline_function): Remove.
* ch/Makefile.in (lex.o): No dependence on dwarfout.h.
* ch/lex.c: Don't include dwarfout.h.
* cp/Make-lang.in (decl2.o): No dependence on dwarfout.h, dwarf2out.h.
(semantics.o, optimize.o): Depend on debug.h not dwarfout.h.
* cp/decl2.c: Don't include dwarfout.h and dwarf2out.h.
* cp/optimize.c: Include debug.h.
(maybe_clone_body): Use debug hook.
* cp/semantics.c: Include debug.h.
(expand_body): Use debug hook.
* po/POTFILES.in: Remove dwarfout.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44145 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sdbout.c')
-rw-r--r-- | gcc/sdbout.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/gcc/sdbout.c b/gcc/sdbout.c index d6bccabdce1..4dc4a65c08d 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -99,6 +99,7 @@ static void sdbout_begin_block PARAMS ((unsigned, unsigned)); static void sdbout_end_block PARAMS ((unsigned, unsigned)); static void sdbout_source_line PARAMS ((unsigned int, const char *)); static void sdbout_end_epilogue PARAMS ((void)); +static void sdbout_global_decl PARAMS ((tree)); #ifndef MIPS_DEBUGGING_INFO static void sdbout_begin_prologue PARAMS ((unsigned int, const char *)); #endif @@ -315,7 +316,10 @@ struct gcc_debug_hooks sdb_debug_hooks = #endif sdbout_end_epilogue, sdbout_begin_function, - sdbout_end_function + sdbout_end_function, + debug_nothing_tree, /* function_decl */ + sdbout_global_decl, + debug_nothing_tree /* deferred_inline_function */ }; #if 0 @@ -1472,6 +1476,32 @@ sdbout_reg_parms (parms) } } +/* Output debug information for a global DECL. Called from toplev.c + after compilation proper has finished. */ + +static void +sdbout_global_decl (decl) + tree decl; +{ + if (TREE_CODE (decl) == VAR_DECL + && DECL_INITIAL (decl) + && ! DECL_EXTERNAL (decl) + && DECL_RTL (decl) != 0) + { + /* The COFF linker can move initialized global vars to the end. + And that can screw up the symbol ordering. By putting the + symbols in that order to begin with, we avoid a problem. + mcsun!unido!fauern!tumuc!pes@uunet.uu.net. */ + if (TREE_PUBLIC (decl)) + sdbout_symbol (decl, 0); + + /* Output COFF information for non-global file-scope initialized + variables. */ + if (GET_CODE (DECL_RTL (decl)) == MEM) + sdbout_toplevel_data (decl); + } +} + /* Describe the beginning of an internal block within a function. Also output descriptions of variables defined in this block. |