summaryrefslogtreecommitdiff
path: root/gcc/sdbout.c
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-19 06:22:04 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-19 06:22:04 +0000
commitc37d72e9931dff0b6d6e649996c1bdaaeb654870 (patch)
treeb1d514bcbcb3022999013a3add1442cb71310221 /gcc/sdbout.c
parentf26876eec29e7a7ca6c69b854d4822f9cacd519e (diff)
downloadgcc-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.c32
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.