Commit 7f905405 by Neil Booth Committed by Neil Booth

Makefile.in (c-lex.o): Wrap long lines.

	* Makefile.in (c-lex.o): Wrap long lines.  Depend on debug.h.
	* c-lex.c (cb_file_change, cb_define, cb_undef): Use debug
	hooks directly.
	* dbxout.c (dbx_debug_hooks): Add new hooks.
	(dbxout_start_new_source_file): Rename dbxout_start_source_file,
	make static.
	(dbxout_resume_previous_source_file): Rename dbxout_end_source_file,
	make static.
	* dbxout.h (dbxout_start_new_source_file,
	dbxout_resume_previous_source_file): Delete.
	* debug.c (do_nothing_debug_hooks): Add new hooks.
	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
	(debug_nothing_int_charstar, debug_nothing_int): New.
	* debug.h (gcc_debug_hooks): New hooks define, undef,
	start_source_file and end_source_file.
	(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
	(debug_nothing_int_charstar, debug_nothing_int): New.
	* dwarf2out.c (dwarf2_debug_hooks): Add new hooks.
	(dwarf2out_start_source_file, dwarf2out_end_source_file,
	dwarf2out_define, dwarf2out_undef): Make static.
	* dwarf2out.h (dwarf2out_start_source_file, dwarf2out_end_source_file,
	dwarf2out_define, dwarf2out_undef): Remove.
	* dwarfout.c (dwarf_debug_hooks): Add new hooks.
	(dwarfout_start_source_file, dwarfout_end_source_file,
	dwarfout_define, dwarfout_undef): Make static.
	(dwarfout_start_source_file_check,
	dwarfout_end_source_file_check): New.
	(dwarfout_define, dwarfout_finish): Update.
	* dwarfout.h (dwarfout_start_new_source_file,
	dwarfout_resume_previous_source_file, dwarfout_define,
	dwarfout_undef): Remove.
	* sdbout.c (sdb_debug_hooks): Add new hooks.
	(sdbout_start_new_source_file): Rename sdbout_start_source_file,
	make static.
	(sdbout_resume_previous_source_file): Rename sdbout_end_source_file,
	make static, take an arg.
	* sdbout.h (sdbout_start_new_source_file,
	sdbout_resume_previous_source_file): Delete.
	* toplev.c (debug_start_source_file, debug_end_source_file,
	debug_define, debug_undef): Delete.
	* toplev.h (debug_start_source_file, debug_end_source_file,
	debug_define, debug_undef): Delete.

	* java/jcf-parse.c: Include debug.h.
	(parse_class_file): Update to use debug hooks directly.
	* java/Make-lang.in (jcf-parse.o): Depend on debug.h.

From-SVN: r43952
parent ba4828e0
2001-07-11 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in (c-lex.o): Wrap long lines. Depend on debug.h.
* c-lex.c (cb_file_change, cb_define, cb_undef): Use debug
hooks directly.
* dbxout.c (dbx_debug_hooks): Add new hooks.
(dbxout_start_new_source_file): Rename dbxout_start_source_file,
make static.
(dbxout_resume_previous_source_file): Rename dbxout_end_source_file,
make static.
* dbxout.h (dbxout_start_new_source_file,
dbxout_resume_previous_source_file): Delete.
* debug.c (do_nothing_debug_hooks): Add new hooks.
(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
(debug_nothing_int_charstar, debug_nothing_int): New.
* debug.h (gcc_debug_hooks): New hooks define, undef,
start_source_file and end_source_file.
(debug_nothing_init_finish): Rename debug_nothing_file_charstar.
(debug_nothing_int_charstar, debug_nothing_int): New.
* dwarf2out.c (dwarf2_debug_hooks): Add new hooks. Move into
the conditionally compiled section.
(dwarf2out_start_source_file, dwarf2out_end_source_file,
dwarf2out_define, dwarf2out_undef): Make static.
* dwarf2out.h (dwarf2out_start_source_file, dwarf2out_end_source_file,
dwarf2out_define, dwarf2out_undef): Remove.
* dwarfout.c (dwarf_debug_hooks): Add new hooks.
(dwarfout_start_source_file, dwarfout_end_source_file,
dwarfout_define, dwarfout_undef): Make static.
(dwarfout_start_source_file_check,
dwarfout_end_source_file_check): New.
(dwarfout_define, dwarfout_finish): Update.
* dwarfout.h (dwarfout_start_new_source_file,
dwarfout_resume_previous_source_file, dwarfout_define,
dwarfout_undef): Remove.
* sdbout.c (sdb_debug_hooks): Add new hooks.
(sdbout_start_new_source_file): Rename sdbout_start_source_file,
make static.
(sdbout_resume_previous_source_file): Rename sdbout_end_source_file,
make static, take an arg.
* sdbout.h (sdbout_start_new_source_file,
sdbout_resume_previous_source_file): Delete.
* toplev.c (debug_start_source_file, debug_end_source_file,
debug_define, debug_undef): Delete.
* toplev.h (debug_start_source_file, debug_end_source_file,
debug_define, debug_undef): Delete.
* java/jcf-parse.c: Include debug.h.
(parse_class_file): Update to use debug hooks directly.
* java/Make-lang.in (jcf-parse.o): Depend on debug.h.
Wed Jul 11 10:07:18 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Wed Jul 11 10:07:18 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* alias.c (set_mem_alias_set): New function. * alias.c (set_mem_alias_set): New function.
......
...@@ -1162,7 +1162,8 @@ c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ ...@@ -1162,7 +1162,8 @@ c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
$(GGC_H) c-lex.h toplev.h diagnostic.h output.h function.h \ $(GGC_H) c-lex.h toplev.h diagnostic.h output.h function.h \
$(RTL_H) $(EXPR_H) $(RTL_H) $(EXPR_H)
c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h $(C_TREE_H) \ c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \
debug.h $(C_TREE_H) \
c-pragma.h input.h intl.h flags.h toplev.h output.h \ c-pragma.h input.h intl.h flags.h toplev.h output.h \
mbchar.h cpplib.h $(EXPR_H) $(TM_P_H) mbchar.h cpplib.h $(EXPR_H) $(TM_P_H)
c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ c-aux-info.o : c-aux-info.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
......
...@@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -37,6 +37,7 @@ Boston, MA 02111-1307, USA. */
#include "intl.h" #include "intl.h"
#include "tm_p.h" #include "tm_p.h"
#include "splay-tree.h" #include "splay-tree.h"
#include "debug.h"
/* MULTIBYTE_CHARS support only works for native compilers. /* MULTIBYTE_CHARS support only works for native compilers.
??? Ideally what we want is to model widechar support after ??? Ideally what we want is to model widechar support after
...@@ -249,7 +250,7 @@ cb_file_change (pfile, fc) ...@@ -249,7 +250,7 @@ cb_file_change (pfile, fc)
lineno = fc->from.lineno; lineno = fc->from.lineno;
push_srcloc (fc->to.filename, 1); push_srcloc (fc->to.filename, 1);
input_file_stack->indent_level = indent_level; input_file_stack->indent_level = indent_level;
debug_start_source_file (fc->from.lineno, fc->to.filename); (*debug_hooks->start_source_file) (fc->from.lineno, fc->to.filename);
#ifndef NO_IMPLICIT_EXTERN_C #ifndef NO_IMPLICIT_EXTERN_C
if (c_header_level) if (c_header_level)
++c_header_level; ++c_header_level;
...@@ -287,7 +288,7 @@ cb_file_change (pfile, fc) ...@@ -287,7 +288,7 @@ cb_file_change (pfile, fc)
} }
#endif #endif
pop_srcloc (); pop_srcloc ();
debug_end_source_file (input_file_stack->line); (*debug_hooks->end_source_file) (input_file_stack->line);
} }
else else
error ("leaving more files than we entered"); error ("leaving more files than we entered");
...@@ -334,16 +335,18 @@ cb_define (pfile, node) ...@@ -334,16 +335,18 @@ cb_define (pfile, node)
cpp_reader *pfile; cpp_reader *pfile;
cpp_hashnode *node; cpp_hashnode *node;
{ {
debug_define (cpp_get_line (parse_in)->line, (const char *) cpp_macro_definition (pfile, node)); (*debug_hooks->define) (cpp_get_line (pfile)->line,
(const char *) cpp_macro_definition (pfile, node));
} }
/* #undef callback for DWARF and DWARF2 debug info. */ /* #undef callback for DWARF and DWARF2 debug info. */
static void static void
cb_undef (pfile, node) cb_undef (pfile, node)
cpp_reader *pfile ATTRIBUTE_UNUSED; cpp_reader *pfile;
cpp_hashnode *node; cpp_hashnode *node;
{ {
debug_undef (cpp_get_line (parse_in)->line, (const char *) NODE_NAME (node)); (*debug_hooks->undef) (cpp_get_line (pfile)->line,
(const char *) NODE_NAME (node));
} }
#if 0 /* not yet */ #if 0 /* not yet */
......
...@@ -286,6 +286,8 @@ static int current_sym_nchars; ...@@ -286,6 +286,8 @@ static int current_sym_nchars;
static void dbxout_init PARAMS ((FILE *, const char *)); static void dbxout_init PARAMS ((FILE *, const char *));
static void dbxout_finish PARAMS ((FILE *, const char *)); static void dbxout_finish PARAMS ((FILE *, const char *));
static void dbxout_start_source_file PARAMS ((unsigned, const char *));
static void dbxout_end_source_file PARAMS ((unsigned));
#if defined(ASM_OUTPUT_SECTION_NAME) #if defined(ASM_OUTPUT_SECTION_NAME)
static void dbxout_function_end PARAMS ((void)); static void dbxout_function_end PARAMS ((void));
#endif #endif
...@@ -309,11 +311,15 @@ static void dbxout_finish_symbol PARAMS ((tree)); ...@@ -309,11 +311,15 @@ static void dbxout_finish_symbol PARAMS ((tree));
static void dbxout_block PARAMS ((tree, int, tree)); static void dbxout_block PARAMS ((tree, int, tree));
static void dbxout_really_begin_function PARAMS ((tree)); static void dbxout_really_begin_function PARAMS ((tree));
/* The target debug structure. */ /* The debug hooks structure. */
struct gcc_debug_hooks dbx_debug_hooks = struct gcc_debug_hooks dbx_debug_hooks =
{ {
dbxout_init, dbxout_init,
dbxout_finish dbxout_finish,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
dbxout_start_source_file,
dbxout_end_source_file
}; };
#if defined(ASM_OUTPUT_SECTION_NAME) #if defined(ASM_OUTPUT_SECTION_NAME)
...@@ -460,8 +466,9 @@ dbxout_typedefs (syms) ...@@ -460,8 +466,9 @@ dbxout_typedefs (syms)
/* Change to reading from a new source file. Generate a N_BINCL stab. */ /* Change to reading from a new source file. Generate a N_BINCL stab. */
void static void
dbxout_start_new_source_file (filename) dbxout_start_source_file (line, filename)
unsigned int line ATTRIBUTE_UNUSED;
const char *filename ATTRIBUTE_UNUSED; const char *filename ATTRIBUTE_UNUSED;
{ {
#ifdef DBX_USE_BINCL #ifdef DBX_USE_BINCL
...@@ -479,8 +486,9 @@ dbxout_start_new_source_file (filename) ...@@ -479,8 +486,9 @@ dbxout_start_new_source_file (filename)
/* Revert to reading a previous source file. Generate a N_EINCL stab. */ /* Revert to reading a previous source file. Generate a N_EINCL stab. */
void static void
dbxout_resume_previous_source_file () dbxout_end_source_file (line)
unsigned int line ATTRIBUTE_UNUSED;
{ {
#ifdef DBX_USE_BINCL #ifdef DBX_USE_BINCL
struct dbx_file *next; struct dbx_file *next;
......
...@@ -18,9 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to ...@@ -18,9 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
extern void dbxout_start_new_source_file PARAMS ((const char *));
extern void dbxout_resume_previous_source_file PARAMS ((void));
extern void dbxout_source_file PARAMS ((FILE *, const char *)); extern void dbxout_source_file PARAMS ((FILE *, const char *));
extern void dbxout_types PARAMS ((tree)); extern void dbxout_types PARAMS ((tree));
extern void dbxout_args PARAMS ((tree)); extern void dbxout_args PARAMS ((tree));
......
...@@ -22,16 +22,33 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ...@@ -22,16 +22,33 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* The do-nothing debug hooks. */ /* The do-nothing debug hooks. */
struct gcc_debug_hooks do_nothing_debug_hooks = struct gcc_debug_hooks do_nothing_debug_hooks =
{ {
debug_nothing_init_finish, debug_nothing_file_charstar,
debug_nothing_init_finish debug_nothing_file_charstar,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
debug_nothing_int
}; };
/* This file contains implementations of each debug hook that do /* This file contains implementations of each debug hook that do
nothing. */ nothing. */
void void
debug_nothing_init_finish (file, main_filename) debug_nothing_file_charstar (file, main_filename)
FILE *file ATTRIBUTE_UNUSED; FILE *file ATTRIBUTE_UNUSED;
const char *main_filename ATTRIBUTE_UNUSED; const char *main_filename ATTRIBUTE_UNUSED;
{ {
} }
void
debug_nothing_int_charstar (line, text)
unsigned int line ATTRIBUTE_UNUSED;
const char *text ATTRIBUTE_UNUSED;
{
}
void
debug_nothing_int (line)
unsigned int line ATTRIBUTE_UNUSED;
{
}
...@@ -29,14 +29,33 @@ struct gcc_debug_hooks ...@@ -29,14 +29,33 @@ struct gcc_debug_hooks
/* Output debug symbols to FILE. */ /* Output debug symbols to FILE. */
void (* finish) PARAMS ((FILE * file, const char *main_filename)); void (* finish) PARAMS ((FILE * file, const char *main_filename));
/* Macro defined on line LINE with name and expansion TEXT. */
void (* define) PARAMS ((unsigned int line, const char *text));
/* MACRO undefined on line LINE. */
void (* undef) PARAMS ((unsigned int line, const char *macro));
/* Record the beginning of a new source file FILE from LINE number
in the previous one. */
void (* start_source_file) PARAMS ((unsigned int line, const char *file));
/* Record the resumption of a source file. LINE is the line number
in the source file we are returning to. */
void (* end_source_file) PARAMS ((unsigned int line));
}; };
extern struct gcc_debug_hooks *debug_hooks; extern struct gcc_debug_hooks *debug_hooks;
/* The do-nothing hooks. */ /* The do-nothing hooks. */
extern void debug_nothing_init_finish extern void debug_nothing_file_charstar
PARAMS ((FILE *, const char *)); PARAMS ((FILE *, const char *));
extern void debug_nothing_int_charstar
PARAMS ((unsigned int, const char *));
extern void debug_nothing_int
PARAMS ((unsigned int));
/* Hooks for various debug formats. */
extern struct gcc_debug_hooks do_nothing_debug_hooks; extern struct gcc_debug_hooks do_nothing_debug_hooks;
extern struct gcc_debug_hooks dbx_debug_hooks; extern struct gcc_debug_hooks dbx_debug_hooks;
extern struct gcc_debug_hooks sdb_debug_hooks; extern struct gcc_debug_hooks sdb_debug_hooks;
......
...@@ -232,8 +232,6 @@ static unsigned current_funcdef_fde; ...@@ -232,8 +232,6 @@ static unsigned current_funcdef_fde;
/* Forward declarations for functions defined in this file. */ /* Forward declarations for functions defined in this file. */
static void dwarf2out_init PARAMS ((FILE *, const char *));
static void dwarf2out_finish PARAMS ((FILE *, const char *));
static char *stripattributes PARAMS ((const char *)); static char *stripattributes PARAMS ((const char *));
static const char *dwarf_cfi_name PARAMS ((unsigned)); static const char *dwarf_cfi_name PARAMS ((unsigned));
static dw_cfi_ref new_cfi PARAMS ((void)); static dw_cfi_ref new_cfi PARAMS ((void));
...@@ -364,12 +362,6 @@ expand_builtin_dwarf_fp_regnum () ...@@ -364,12 +362,6 @@ expand_builtin_dwarf_fp_regnum ()
#define INCOMING_FRAME_SP_OFFSET 0 #define INCOMING_FRAME_SP_OFFSET 0
#endif #endif
/* The target debug structure. */
struct gcc_debug_hooks dwarf2_debug_hooks
= {dwarf2out_init, dwarf2out_finish
};
/* Return a pointer to a copy of the section string name S with all /* Return a pointer to a copy of the section string name S with all
attributes stripped off, and an asterisk prepended (for assemble_name). */ attributes stripped off, and an asterisk prepended (for assemble_name). */
...@@ -3009,6 +3001,25 @@ get_cfa_from_loc_descr (cfa, loc) ...@@ -3009,6 +3001,25 @@ get_cfa_from_loc_descr (cfa, loc)
/* And now, the support for symbolic debugging information. */ /* And now, the support for symbolic debugging information. */
#ifdef DWARF2_DEBUGGING_INFO #ifdef DWARF2_DEBUGGING_INFO
static void dwarf2out_init PARAMS ((FILE *, const char *));
static void dwarf2out_finish PARAMS ((FILE *, const char *));
static void dwarf2out_define PARAMS ((unsigned int, const char *));
static void dwarf2out_undef PARAMS ((unsigned int, const char *));
static void dwarf2out_start_source_file PARAMS ((unsigned, const char *));
static void dwarf2out_end_source_file PARAMS ((unsigned));
/* The debug hooks structure. */
struct gcc_debug_hooks dwarf2_debug_hooks =
{
dwarf2out_init,
dwarf2out_finish,
dwarf2out_define,
dwarf2out_undef,
dwarf2out_start_source_file,
dwarf2out_end_source_file
};
/* NOTE: In the comments in this file, many references are made to /* NOTE: In the comments in this file, many references are made to
"Debugging Information Entries". This term is abbreviated as `DIE' "Debugging Information Entries". This term is abbreviated as `DIE'
throughout the remainder of this file. */ throughout the remainder of this file. */
...@@ -11283,10 +11294,10 @@ dwarf2out_line (filename, line) ...@@ -11283,10 +11294,10 @@ dwarf2out_line (filename, line)
/* Record the beginning of a new source file. */ /* Record the beginning of a new source file. */
void static void
dwarf2out_start_source_file (lineno, filename) dwarf2out_start_source_file (lineno, filename)
register unsigned int lineno ATTRIBUTE_UNUSED; register unsigned int lineno;
register const char *filename ATTRIBUTE_UNUSED; register const char *filename;
{ {
if (flag_eliminate_dwarf2_dups) if (flag_eliminate_dwarf2_dups)
{ {
...@@ -11305,8 +11316,9 @@ dwarf2out_start_source_file (lineno, filename) ...@@ -11305,8 +11316,9 @@ dwarf2out_start_source_file (lineno, filename)
/* Record the end of a source file. */ /* Record the end of a source file. */
void static void
dwarf2out_end_source_file () dwarf2out_end_source_file (lineno)
unsigned int lineno ATTRIBUTE_UNUSED;
{ {
if (flag_eliminate_dwarf2_dups) if (flag_eliminate_dwarf2_dups)
{ {
...@@ -11324,7 +11336,7 @@ dwarf2out_end_source_file () ...@@ -11324,7 +11336,7 @@ dwarf2out_end_source_file ()
the tail part of the directive line, i.e. the part which is past the the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */ initial whitespace, #, whitespace, directive-name, whitespace part. */
void static void
dwarf2out_define (lineno, buffer) dwarf2out_define (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED; register unsigned lineno ATTRIBUTE_UNUSED;
register const char *buffer ATTRIBUTE_UNUSED; register const char *buffer ATTRIBUTE_UNUSED;
...@@ -11348,7 +11360,7 @@ dwarf2out_define (lineno, buffer) ...@@ -11348,7 +11360,7 @@ dwarf2out_define (lineno, buffer)
the tail part of the directive line, i.e. the part which is past the the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */ initial whitespace, #, whitespace, directive-name, whitespace part. */
void static void
dwarf2out_undef (lineno, buffer) dwarf2out_undef (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED; register unsigned lineno ATTRIBUTE_UNUSED;
register const char *buffer ATTRIBUTE_UNUSED; register const char *buffer ATTRIBUTE_UNUSED;
...@@ -11587,22 +11599,4 @@ dwarf2out_finish (asm_out_file, input_filename) ...@@ -11587,22 +11599,4 @@ dwarf2out_finish (asm_out_file, input_filename)
} }
} }
#else /* DWARF2_DEBUGGING_INFO
/* Use dummy versions of init and finish routines. */
static void
dwarf2out_init (asm_out_file, main_input_filename)
register FILE *asm_out_file ATTRIBUTE_UNUSED;
register const char *main_input_filename ATTRIBUTE_UNUSED;
{
}
static void
dwarf2out_finish (asm_out_file, input_filename)
register FILE *asm_out_file ATTRIBUTE_UNUSED;
register const char *input_filename ATTRIBUTE_UNUSED;
{
}
#endif /* DWARF2_DEBUGGING_INFO */ #endif /* DWARF2_DEBUGGING_INFO */
...@@ -18,11 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to ...@@ -18,11 +18,6 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
extern void dwarf2out_define PARAMS ((unsigned, const char *));
extern void dwarf2out_undef PARAMS ((unsigned, const char *));
extern void dwarf2out_start_source_file PARAMS ((unsigned, const char *));
extern void dwarf2out_end_source_file PARAMS ((void));
extern void dwarf2out_begin_block PARAMS ((unsigned)); extern void dwarf2out_begin_block PARAMS ((unsigned));
extern void dwarf2out_end_block PARAMS ((unsigned)); extern void dwarf2out_end_block PARAMS ((unsigned));
extern int dwarf2out_ignore_block PARAMS ((tree)); extern int dwarf2out_ignore_block PARAMS ((tree));
......
...@@ -789,6 +789,12 @@ static int in_class; ...@@ -789,6 +789,12 @@ static int in_class;
static void dwarfout_init PARAMS ((FILE *, const char *)); static void dwarfout_init PARAMS ((FILE *, const char *));
static void dwarfout_finish PARAMS ((FILE *, const char *)); static void dwarfout_finish PARAMS ((FILE *, const char *));
static void dwarfout_define PARAMS ((unsigned int, const char *));
static void dwarfout_undef PARAMS ((unsigned int, const char *));
static void dwarfout_start_source_file PARAMS ((unsigned, const char *));
static void dwarfout_start_source_file_check PARAMS ((unsigned, const char *));
static void dwarfout_end_source_file PARAMS ((unsigned));
static void dwarfout_end_source_file_check PARAMS ((unsigned));
static const char *dwarf_tag_name PARAMS ((unsigned)); static const char *dwarf_tag_name PARAMS ((unsigned));
static const char *dwarf_attr_name PARAMS ((unsigned)); static const char *dwarf_attr_name PARAMS ((unsigned));
static const char *dwarf_stack_op_name PARAMS ((unsigned)); static const char *dwarf_stack_op_name PARAMS ((unsigned));
...@@ -1361,11 +1367,15 @@ static void retry_incomplete_types PARAMS ((void)); ...@@ -1361,11 +1367,15 @@ static void retry_incomplete_types PARAMS ((void));
#endif #endif
/* The target debug structure. */ /* The debug hooks structure. */
struct gcc_debug_hooks dwarf_debug_hooks = struct gcc_debug_hooks dwarf_debug_hooks =
{ {
dwarfout_init, dwarfout_init,
dwarfout_finish dwarfout_finish,
dwarfout_define,
dwarfout_undef,
dwarfout_start_source_file_check,
dwarfout_end_source_file_check
}; };
/************************ general utility functions **************************/ /************************ general utility functions **************************/
...@@ -6107,8 +6117,19 @@ generate_macinfo_entry (type_and_offset, string) ...@@ -6107,8 +6117,19 @@ generate_macinfo_entry (type_and_offset, string)
ASM_OUTPUT_POP_SECTION (asm_out_file); ASM_OUTPUT_POP_SECTION (asm_out_file);
} }
void /* Wrapper for toplev.c callback to check debug info level. */
dwarfout_start_new_source_file (filename) static void
dwarfout_start_source_file_check (line, filename)
unsigned int line;
register const char *filename;
{
if (debug_info_level == DINFO_LEVEL_VERBOSE)
dwarfout_start_source_file (line, filename);
}
static void
dwarfout_start_source_file (line, filename)
unsigned int line ATTRIBUTE_UNUSED;
register const char *filename; register const char *filename;
{ {
char label[MAX_ARTIFICIAL_LABEL_BYTES]; char label[MAX_ARTIFICIAL_LABEL_BYTES];
...@@ -6123,8 +6144,17 @@ dwarfout_start_new_source_file (filename) ...@@ -6123,8 +6144,17 @@ dwarfout_start_new_source_file (filename)
generate_macinfo_entry (type_and_offset, ""); generate_macinfo_entry (type_and_offset, "");
} }
void /* Wrapper for toplev.c callback to check debug info level. */
dwarfout_resume_previous_source_file (lineno) static void
dwarfout_end_source_file_check (lineno)
register unsigned lineno;
{
if (debug_info_level == DINFO_LEVEL_VERBOSE)
dwarfout_end_source_file (lineno);
}
static void
dwarfout_end_source_file (lineno)
register unsigned lineno; register unsigned lineno;
{ {
char type_and_offset[MAX_ARTIFICIAL_LABEL_BYTES*2]; char type_and_offset[MAX_ARTIFICIAL_LABEL_BYTES*2];
...@@ -6139,7 +6169,7 @@ dwarfout_resume_previous_source_file (lineno) ...@@ -6139,7 +6169,7 @@ dwarfout_resume_previous_source_file (lineno)
is past the initial whitespace, #, whitespace, directive-name, is past the initial whitespace, #, whitespace, directive-name,
whitespace part. */ whitespace part. */
void static void
dwarfout_define (lineno, buffer) dwarfout_define (lineno, buffer)
register unsigned lineno; register unsigned lineno;
register const char *buffer; register const char *buffer;
...@@ -6149,7 +6179,7 @@ dwarfout_define (lineno, buffer) ...@@ -6149,7 +6179,7 @@ dwarfout_define (lineno, buffer)
if (!initialized) if (!initialized)
{ {
dwarfout_start_new_source_file (primary_filename); dwarfout_start_source_file (0, primary_filename);
initialized = 1; initialized = 1;
} }
sprintf (type_and_offset, "0x%08x+%u", sprintf (type_and_offset, "0x%08x+%u",
...@@ -6162,7 +6192,7 @@ dwarfout_define (lineno, buffer) ...@@ -6162,7 +6192,7 @@ dwarfout_define (lineno, buffer)
is past the initial whitespace, #, whitespace, directive-name, is past the initial whitespace, #, whitespace, directive-name,
whitespace part. */ whitespace part. */
void static void
dwarfout_undef (lineno, buffer) dwarfout_undef (lineno, buffer)
register unsigned lineno; register unsigned lineno;
register const char *buffer; register const char *buffer;
...@@ -6487,7 +6517,7 @@ dwarfout_finish (asm_out_file, main_input_filename) ...@@ -6487,7 +6517,7 @@ dwarfout_finish (asm_out_file, main_input_filename)
{ {
/* Output terminating entries for the .debug_macinfo section. */ /* Output terminating entries for the .debug_macinfo section. */
dwarfout_resume_previous_source_file (0); dwarfout_end_source_file (0);
fputc ('\n', asm_out_file); fputc ('\n', asm_out_file);
ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_MACINFO_SECTION); ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_MACINFO_SECTION);
......
...@@ -18,11 +18,7 @@ along with GNU CC; see the file COPYING. If not, write to ...@@ -18,11 +18,7 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
extern void dwarfout_define PARAMS ((unsigned, const char *));
extern void dwarfout_undef PARAMS ((unsigned, const char *));
extern void dwarfout_file_scope_decl PARAMS ((tree , int)); extern void dwarfout_file_scope_decl PARAMS ((tree , int));
extern void dwarfout_start_new_source_file PARAMS ((const char *));
extern void dwarfout_resume_previous_source_file PARAMS ((unsigned));
extern void dwarfout_begin_function PARAMS ((void)); extern void dwarfout_begin_function PARAMS ((void));
extern void dwarfout_end_function PARAMS ((void)); extern void dwarfout_end_function PARAMS ((void));
......
...@@ -467,7 +467,7 @@ f/lex.o: f/lex.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/top.h f/malloc.h f/where.h \ ...@@ -467,7 +467,7 @@ f/lex.o: f/lex.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/top.h f/malloc.h f/where.h \
f/bld-op.def f/bit.h f/info.h f/info-b.def f/info-k.def f/info-w.def \ f/bld-op.def f/bit.h f/info.h f/info-b.def f/info-k.def f/info-w.def \
f/target.h f/lex.h f/type.h f/intrin.h f/intrin.def f/lab.h f/symbol.h \ f/target.h f/lex.h f/type.h f/intrin.h f/intrin.def f/lab.h f/symbol.h \
f/symbol.def f/equiv.h f/storag.h f/global.h f/name.h f/src.h flags.h \ f/symbol.def f/equiv.h f/storag.h f/global.h f/name.h f/src.h flags.h \
input.h toplev.h output.h $(GGC_H) debug.h input.h toplev.h output.h $(GGC_H)
f/malloc.o: f/malloc.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/malloc.h f/malloc.o: f/malloc.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/malloc.h
f/name.o: f/name.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/bad.h f/bad.def f/where.h \ f/name.o: f/name.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/bad.h f/bad.def f/where.h \
glimits.h f/top.h f/malloc.h f/name.h f/global.h f/info.h f/info-b.def \ glimits.h f/top.h f/malloc.h f/name.h f/global.h f/info.h f/info-b.def \
......
...@@ -26,6 +26,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -26,6 +26,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "lex.h" #include "lex.h"
#include "malloc.h" #include "malloc.h"
#include "src.h" #include "src.h"
#include "debug.h"
#if FFECOM_targetCURRENT == FFECOM_targetGCC #if FFECOM_targetCURRENT == FFECOM_targetGCC
#include "flags.h" #include "flags.h"
#include "input.h" #include "input.h"
...@@ -34,10 +35,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -34,10 +35,6 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ggc.h" #include "ggc.h"
#endif #endif
#ifdef DWARF_DEBUGGING_INFO
#include "dwarfout.h"
#endif
static void ffelex_append_to_token_ (char c); static void ffelex_append_to_token_ (char c);
static int ffelex_backslash_ (int c, ffewhereColumnNumber col); static int ffelex_backslash_ (int c, ffewhereColumnNumber col);
static void ffelex_bad_1_ (ffebad errnum, ffewhereLineNumber ln0, static void ffelex_bad_1_ (ffebad errnum, ffewhereLineNumber ln0,
...@@ -860,11 +857,8 @@ ffelex_file_pop_ (const char *input_filename) ...@@ -860,11 +857,8 @@ ffelex_file_pop_ (const char *input_filename)
input_file_stack = p->next; input_file_stack = p->next;
free (p); free (p);
input_file_stack_tick++; input_file_stack_tick++;
#ifdef DWARF_DEBUGGING_INFO if (write_symbols == DWARF_DEBUG)
if (debug_info_level == DINFO_LEVEL_VERBOSE (*debug_hooks->end_source_file) (input_file_stack->line);
&& write_symbols == DWARF_DEBUG)
dwarfout_resume_previous_source_file (input_file_stack->line);
#endif /* DWARF_DEBUGGING_INFO */
} }
else else
error ("#-lines for entering and leaving files don't match"); error ("#-lines for entering and leaving files don't match");
...@@ -888,11 +882,9 @@ ffelex_file_push_ (int old_lineno, const char *input_filename) ...@@ -888,11 +882,9 @@ ffelex_file_push_ (int old_lineno, const char *input_filename)
p->name = input_filename; p->name = input_filename;
input_file_stack = p; input_file_stack = p;
input_file_stack_tick++; input_file_stack_tick++;
#ifdef DWARF_DEBUGGING_INFO
if (debug_info_level == DINFO_LEVEL_VERBOSE if (write_symbols == DWARF_DEBUG)
&& write_symbols == DWARF_DEBUG) (*debug_hooks->start_source_file) (0, input_filename);
dwarfout_start_new_source_file (input_filename);
#endif /* DWARF_DEBUGGING_INFO */
/* Now that we've pushed or popped the input stack, /* Now that we've pushed or popped the input stack,
update the name in the top element. */ update the name in the top element. */
...@@ -1173,11 +1165,9 @@ ffelex_hash_ (FILE *finput) ...@@ -1173,11 +1165,9 @@ ffelex_hash_ (FILE *finput)
c = ffelex_get_directive_line_ (&text, finput); c = ffelex_get_directive_line_ (&text, finput);
#ifdef DWARF_DEBUGGING_INFO
if ((debug_info_level == DINFO_LEVEL_VERBOSE) if ((debug_info_level == DINFO_LEVEL_VERBOSE)
&& (write_symbols == DWARF_DEBUG)) && (write_symbols == DWARF_DEBUG))
dwarfout_define (lineno, text); (*debug_hooks->define) (lineno, text);
#endif /* DWARF_DEBUGGING_INFO */
goto skipline; goto skipline;
} }
...@@ -1195,11 +1185,9 @@ ffelex_hash_ (FILE *finput) ...@@ -1195,11 +1185,9 @@ ffelex_hash_ (FILE *finput)
c = ffelex_get_directive_line_ (&text, finput); c = ffelex_get_directive_line_ (&text, finput);
#ifdef DWARF_DEBUGGING_INFO
if ((debug_info_level == DINFO_LEVEL_VERBOSE) if ((debug_info_level == DINFO_LEVEL_VERBOSE)
&& (write_symbols == DWARF_DEBUG)) && (write_symbols == DWARF_DEBUG))
dwarfout_undef (lineno, text); (*debug_hooks->undef) (lineno, text);
#endif /* DWARF_DEBUGGING_INFO */
goto skipline; goto skipline;
} }
......
...@@ -259,7 +259,8 @@ java/expr.o: java/expr.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h real.h \ ...@@ -259,7 +259,8 @@ java/expr.o: java/expr.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h real.h \
$(SYSTEM_H) $(GGC_H) $(SYSTEM_H) $(GGC_H)
java/jcf-depend.o: java/jcf-depend.c $(CONFIG_H) $(SYSTEM_H) java/jcf.h java/jcf-depend.o: java/jcf-depend.c $(CONFIG_H) $(SYSTEM_H) java/jcf.h
java/jcf-parse.o: java/jcf-parse.c $(CONFIG_H) $(JAVA_TREE_H) flags.h \ java/jcf-parse.o: java/jcf-parse.c $(CONFIG_H) $(JAVA_TREE_H) flags.h \
input.h java/java-except.h $(SYSTEM_H) toplev.h java/parse.h $(GGC_H) input.h java/java-except.h $(SYSTEM_H) toplev.h java/parse.h $(GGC_H) \
debug.h
java/jcf-write.o: java/jcf-write.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \ java/jcf-write.o: java/jcf-write.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \
$(RTL_H) java/java-opcodes.h java/parse.h java/buffer.h $(SYSTEM_H) \ $(RTL_H) java/java-opcodes.h java/parse.h java/buffer.h $(SYSTEM_H) \
toplev.h $(GGC_H) toplev.h $(GGC_H)
......
...@@ -35,6 +35,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ ...@@ -35,6 +35,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "toplev.h" #include "toplev.h"
#include "parse.h" #include "parse.h"
#include "ggc.h" #include "ggc.h"
#include "debug.h"
#ifdef HAVE_LOCALE_H #ifdef HAVE_LOCALE_H
#include <locale.h> #include <locale.h>
...@@ -774,7 +775,7 @@ parse_class_file () ...@@ -774,7 +775,7 @@ parse_class_file ()
input_filename = DECL_SOURCE_FILE (TYPE_NAME (current_class)); input_filename = DECL_SOURCE_FILE (TYPE_NAME (current_class));
lineno = 0; lineno = 0;
debug_start_source_file (lineno, input_filename); (*debug_hooks->start_source_file) (lineno, input_filename);
init_outgoing_cpool (); init_outgoing_cpool ();
/* Currently we always have to emit calls to _Jv_InitClass when /* Currently we always have to emit calls to _Jv_InitClass when
...@@ -860,7 +861,7 @@ parse_class_file () ...@@ -860,7 +861,7 @@ parse_class_file ()
finish_class (); finish_class ();
debug_end_source_file (save_lineno); (*debug_hooks->end_source_file) (save_lineno);
input_filename = save_input_filename; input_filename = save_input_filename;
lineno = save_lineno; lineno = save_lineno;
} }
......
...@@ -93,6 +93,8 @@ extern tree current_function_decl; ...@@ -93,6 +93,8 @@ extern tree current_function_decl;
#include "sdbout.h" #include "sdbout.h"
static void sdbout_init PARAMS ((FILE *, const char *)); static void sdbout_init PARAMS ((FILE *, const char *));
static void sdbout_start_source_file PARAMS ((unsigned, const char *));
static void sdbout_end_source_file PARAMS ((unsigned));
static char *gen_fake_label PARAMS ((void)); static char *gen_fake_label PARAMS ((void));
static int plain_type PARAMS ((tree)); static int plain_type PARAMS ((tree));
static int template_name_p PARAMS ((tree)); static int template_name_p PARAMS ((tree));
...@@ -289,11 +291,15 @@ static struct sdb_file *current_file; ...@@ -289,11 +291,15 @@ static struct sdb_file *current_file;
#endif /* MIPS_DEBUGGING_INFO */ #endif /* MIPS_DEBUGGING_INFO */
/* The target debug structure. */ /* The debug hooks structure. */
struct gcc_debug_hooks sdb_debug_hooks = struct gcc_debug_hooks sdb_debug_hooks =
{ {
sdbout_init, sdbout_init,
debug_nothing_init_finish debug_nothing_file_charstar,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
sdbout_start_source_file,
sdbout_end_source_file
}; };
#if 0 #if 0
...@@ -1584,8 +1590,9 @@ sdbout_label (insn) ...@@ -1584,8 +1590,9 @@ sdbout_label (insn)
/* Change to reading from a new source file. */ /* Change to reading from a new source file. */
void static void
sdbout_start_new_source_file (filename) sdbout_start_source_file (line, filename)
unsigned int line ATTRIBUTE_UNUSED;
const char *filename ATTRIBUTE_UNUSED; const char *filename ATTRIBUTE_UNUSED;
{ {
#ifdef MIPS_DEBUGGING_INFO #ifdef MIPS_DEBUGGING_INFO
...@@ -1600,8 +1607,9 @@ sdbout_start_new_source_file (filename) ...@@ -1600,8 +1607,9 @@ sdbout_start_new_source_file (filename)
/* Revert to reading a previous source file. */ /* Revert to reading a previous source file. */
void static void
sdbout_resume_previous_source_file () sdbout_end_source_file (line)
unsigned int line ATTRIBUTE_UNUSED;
{ {
#ifdef MIPS_DEBUGGING_INFO #ifdef MIPS_DEBUGGING_INFO
struct sdb_file *next; struct sdb_file *next;
......
...@@ -31,7 +31,5 @@ extern void sdbout_types PARAMS ((tree)); ...@@ -31,7 +31,5 @@ extern void sdbout_types PARAMS ((tree));
extern void sdbout_end_epilogue PARAMS ((void)); extern void sdbout_end_epilogue PARAMS ((void));
extern void sdbout_start_new_source_file PARAMS ((const char *));
extern void sdbout_resume_previous_source_file PARAMS ((void));
extern void sdbout_mark_begin_function PARAMS ((void)); extern void sdbout_mark_begin_function PARAMS ((void));
...@@ -2412,6 +2412,7 @@ compile_file (name) ...@@ -2412,6 +2412,7 @@ compile_file (name)
/* Do dbx symbols. */ /* Do dbx symbols. */
timevar_push (TV_SYMOUT); timevar_push (TV_SYMOUT);
#ifdef DWARF2_UNWIND_INFO #ifdef DWARF2_UNWIND_INFO
if (dwarf2out_do_frame ()) if (dwarf2out_do_frame ())
dwarf2out_frame_finish (); dwarf2out_frame_finish ();
...@@ -5195,96 +5196,6 @@ print_switch_values (file, pos, max, indent, sep, term) ...@@ -5195,96 +5196,6 @@ print_switch_values (file, pos, max, indent, sep, term)
fprintf (file, "%s", term); fprintf (file, "%s", term);
} }
/* Record the beginning of a new source file, named FILENAME. */
void
debug_start_source_file (lineno, filename)
register unsigned int lineno ATTRIBUTE_UNUSED;
register const char *filename ATTRIBUTE_UNUSED;
{
#ifdef DBX_DEBUGGING_INFO
if (write_symbols == DBX_DEBUG)
dbxout_start_new_source_file (filename);
#endif
#ifdef DWARF_DEBUGGING_INFO
if (debug_info_level == DINFO_LEVEL_VERBOSE
&& write_symbols == DWARF_DEBUG)
dwarfout_start_new_source_file (filename);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
if (write_symbols == DWARF2_DEBUG)
dwarf2out_start_source_file (lineno, filename);
#endif /* DWARF2_DEBUGGING_INFO */
#ifdef SDB_DEBUGGING_INFO
if (write_symbols == SDB_DEBUG)
sdbout_start_new_source_file (filename);
#endif
}
/* Record the resumption of a source file. LINENO is the line number in
the source file we are returning to. */
void
debug_end_source_file (lineno)
register unsigned lineno ATTRIBUTE_UNUSED;
{
#ifdef DBX_DEBUGGING_INFO
if (write_symbols == DBX_DEBUG)
dbxout_resume_previous_source_file ();
#endif
#ifdef DWARF_DEBUGGING_INFO
if (debug_info_level == DINFO_LEVEL_VERBOSE
&& write_symbols == DWARF_DEBUG)
dwarfout_resume_previous_source_file (lineno);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
if (write_symbols == DWARF2_DEBUG)
dwarf2out_end_source_file ();
#endif /* DWARF2_DEBUGGING_INFO */
#ifdef SDB_DEBUGGING_INFO
if (write_symbols == SDB_DEBUG)
sdbout_resume_previous_source_file ();
#endif
}
/* Called from cb_define in c-lex.c. The `buffer' parameter contains
the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */
void
debug_define (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED;
register const char *buffer ATTRIBUTE_UNUSED;
{
#ifdef DWARF_DEBUGGING_INFO
if (write_symbols == DWARF_DEBUG)
dwarfout_define (lineno, buffer);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
if (write_symbols == DWARF2_DEBUG)
dwarf2out_define (lineno, buffer);
#endif /* DWARF2_DEBUGGING_INFO */
}
/* Called from cb_undef in c-lex.c. The `buffer' parameter contains
the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */
void
debug_undef (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED;
register const char *buffer ATTRIBUTE_UNUSED;
{
#ifdef DWARF_DEBUGGING_INFO
if (write_symbols == DWARF_DEBUG)
dwarfout_undef (lineno, buffer);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
if (write_symbols == DWARF2_DEBUG)
dwarf2out_undef (lineno, buffer);
#endif /* DWARF2_DEBUGGING_INFO */
}
/* Returns nonzero if it is appropriate not to emit any debugging /* Returns nonzero if it is appropriate not to emit any debugging
information for BLOCK, because it doesn't contain any instructions. information for BLOCK, because it doesn't contain any instructions.
This may not be the case for blocks containing nested functions, since This may not be the case for blocks containing nested functions, since
......
...@@ -37,10 +37,6 @@ extern int read_integral_parameter PARAMS ((const char *, const char *, ...@@ -37,10 +37,6 @@ extern int read_integral_parameter PARAMS ((const char *, const char *,
extern int count_error PARAMS ((int)); extern int count_error PARAMS ((int));
extern void strip_off_ending PARAMS ((char *, int)); extern void strip_off_ending PARAMS ((char *, int));
extern void print_time PARAMS ((const char *, long)); extern void print_time PARAMS ((const char *, long));
extern void debug_start_source_file PARAMS ((unsigned, const char *));
extern void debug_end_source_file PARAMS ((unsigned));
extern void debug_define PARAMS ((unsigned, const char *));
extern void debug_undef PARAMS ((unsigned, const char *));
extern int debug_ignore_block PARAMS ((union tree_node *)); extern int debug_ignore_block PARAMS ((union tree_node *));
extern const char *trim_filename PARAMS ((const char *)); extern const char *trim_filename PARAMS ((const char *));
extern void internal_error PARAMS ((const char *, ...)) extern void internal_error PARAMS ((const char *, ...))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment