diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-04 22:44:12 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-02-04 22:44:12 +0000 |
commit | f060a02760f73f379d15babfe5aa33cf0229fbc7 (patch) | |
tree | 8141b8180c25362fac62609d1e35c61c9cc898f6 /gcc/diagnostic.c | |
parent | 9e43fb6df1d16cdb3978075c4f4cd1f6c86d0715 (diff) | |
download | gcc-f060a02760f73f379d15babfe5aa33cf0229fbc7.tar.gz |
* diagnostic.h (set_internal_error_function): Renamed.
* toplev.h (internal_error): Renamed from fatal.
(pfatal_with_name): Deleted.
(fatal_io_error): Now has printf-style arguments.
* diagnostic.c (pfatal_with_name): Deleted.
(fatal_io_error): Rework to have args in printf-style.
(set_internal_error_function): Renamed from set_fatal_function.
(internal_error): Renamed from fatal.
(error_recursion, fancy_abort): Call internal_error instead of fatal.
* dwarf2out.c (get_cfa_from_loc_descr): Likewise.
* emit-rtl.c (gen_realpart, gen_imagpart): Likewise.
* expr.c (check_max_integer_computation_mode, expand_expr): Likewise.
* flow.c (verify_flow_info): Likewise.
* config/arm/arm.c (thumb_unexpanded_epilogue): Likewise.
* config/mips/mips.c (save_restore_insns): Likewise.
* cp/init.c (build_java_class_ref): Likewise.
(dsp16xx_reg_class_from_letter): Likewise.
(limit_reload_class, double_reg_to_memory): Likewise.
(print_operand_address, emit_1600_code_shift): Likewise.
(gen_tst_reg, gen_compare_reg): Likewise.
* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
* cp/decl.c (pushdecl): Likewise.
* java/check-init.c (check_init): Likewise.
* java/expr.c (java_lang_expand_expr): Likewise.
* java/jcf-parse.c (get_constant): Likewise.
* java/mangle.c (java_mangle_decl): Likewise.
* java/parse.y (make_nested_class_name, java_complete_lhs): Likewise.
(operator_string): Likewise.
* except.c (duplicate_eh_handlers): Call abort instead of fatal.
* flow.c (verify_flow_info): Likewise.
* ch/convert.c (convert): Likewise.
* ch/except.c (pop_handler, chill_check_no_handlers): Likewise.
* ch/expr.c (chill_expand_expr): Likewise.
* ch/parse.c (peek_token_, pushback_token, require): Likewise.
* config/arm/arm.c (thumb_load_double_from_address): Likewise.
* config/avr/avr.c (pttreg_to_str, unique_section): Likewise.
(avr_normalize_condition): Likewise.
* config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise.
* config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise.
(limit_reload_class, double_reg_to_memory): Likewise.
(print_operand_address, emit_1600_code_shift): Likewise.
(gen_tst_reg, gen_compare_reg): Likewise.
* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
* cp/decl.c (pushdecl): Likewise.
* java/check-init.c (check_init): Likewise.
* java/class.c (build_class_ref): Likewise.
* java/constants.c (write_constant_pool): Likewise.
* java/decl.c (start_java_method): Likewise.
* java/expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
(java_stack_dup, encode_newarray_type): Likewise.
(build_java_array_length_access): Likewise.
(build_java_check_indexed_type, expand_java_pushc): Likewise.
(build_java_soft_divmod, build_invokeinterface): Likewise.
* java/java-tree.h (INNER_CLASS_P): Likewise.
* java/jcf-parse.c (parse_signature, get_name_constant): Likewise.
(give_name_to_class, get_class_constant): Likewise.
* java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
(find_constant_index, generate_bytecode_conditional): Likewise.
(generate_bytecode_insns, perform_relocations): Likewise.
* java/lex.c (java_unget_unicode, java_lex): Likewise.
* java/mangle.c (mangle_type, mangle_record_type): Likewise.
(mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
(finish_mangling): Likewise.
* java/parse.h (MARK_FINAL_PARMS): Likewise.
* java/parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
(obtain_incomplete_type, java_complete_class): Likewise.
(java_check_regular_methods, java_complete_expand_method): Likewise.
(cut_identifier_in_qualified, check_deprecation): Likewise.
(patch_invoke, find_applicable_accessible_methods_list): Likewise.
(java_complete_lhs, lookup_name_in_blocks): Likewise.
(check_final_variable_indirect_assignment, build_unaryop): Likewise.
* java/typeck.c (set_local_type, parse_signature_type): Likewise.
(parse_signature_string, build_java_signature): Likewise;
(set_java_signature): Likewise.
* java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
* c-parse.in (methoddef): Call fatal_error instead of fatal.
* objc/objc-act.c (build_ivar_chain): Likewise.
* cp/except.c (decl_is_java_type): Likewise.
* cp/init.c (build_java_class_ref): Likewise.
* cp/init.c (build_new_1): Likewise.
* f/com.c (ffecom_init_0): Likewise.
* java/class.c (add_method, build_static_field_ref): Likewise.
* java/expr.c (build_known_method_ref, expand_invoke): Likewise.
* java/jcf-parse.c (get_constant, jcf_parse): Likewise.
* java/lex.c (java_new_new_lexer): Likewise.
* java/jv-scan.c (main): Likewise.
(fatal_error): Renamed from fatal.
* dwarfout.c (dwarfout_init): Call fatal_io_error instead of
pfatal_with_name.
* graph.c (clean_graph_dump_file): Likewise.
* profile.c (init_branch_prob): Likewise.
* ch/grant.c (write_grant_file): Likewise.
* ch/lex.c (init_parse, same_file, yywrap): Likewise.
* f/com.c (init_parse): Likewise.
* java/jcf-parse.c (yyparse): Likewise.
* objc/objc-act.c (objc_init): Likewise.
* java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
(yyparse): Likewise.
* java/jcf-write.c (make_class_file_name, write_classfile): Likewise.
* java/lex.c (java_get_line_col): Likewise.
* hash.c (hash_allocate): Don't check for failure returns from
obstack functions that can't fail.
(hash_table_init_n, hash_table_init): Likewise; also now return void.
* hash.h (hash_table_init_n, hash_table_init): Now return void.
* cp/decl.c (build_typename_type): hash_table_init now returns void.
* ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted.
* ch/lex.c (convert_bitstring): Delete check for alloca failure.
* config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare):
Deleted.
* config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it.
* f/com.c (ffecom_decode_include_option_): Make errors non-fatal.
* f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise.
(ffelex_hash_): Likewise.
* config/arm/arm.c (arm_override_options): Likewise.
* config/avr/avr.c (avr_override_options): Likewise.
* config/c4x/c4x.c (c4x_expand_prologue): Likewise.
* config/dsp16xx/dsp16xx.c (function_prologue): Likewise.
* config/h8300/h8300.c (h8300_init_once): Likewise.
* config/mips/mips.c (override_options): Likewise.
* config/i386/i386.c (override_options): Likewise, rework.
* config/m68k/m68k.c (override_options): Likewise.
* cp/decl.c (init_decl_processing): Likewise.
* java/jcf-parse.c (load_class): Likewise.
* config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage
instead of fatal.
* config/mips/mips.c (print_operand): Likewise.
* java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
* objc/objc_act.c (objc_check_decl): Remove unneeded fatal call.
(get_object_reference): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39443 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/diagnostic.c')
-rw-r--r-- | gcc/diagnostic.c | 90 |
1 files changed, 65 insertions, 25 deletions
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 9a9948029a2..2dccd4c8b0d 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -1,5 +1,5 @@ /* Language-independent diagnostic subroutines for the GNU C compiler - Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis <gdr@codesourcery.com> This file is part of GNU CC. @@ -1108,23 +1108,32 @@ fnotice VPARAMS ((FILE *file, const char *msgid, ...)) } -/* Print a fatal error message. NAME is the text. +/* Print a fatal I/O error message. Argument are like printf. Also include a system error message based on `errno'. */ void -pfatal_with_name (name) - const char *name; +fatal_io_error VPARAMS ((const char *msgid, ...)) { - fprintf (stderr, "%s: ", progname); - perror (name); - exit (FATAL_EXIT_CODE); -} +#ifndef ANSI_PROTOTYPES + const char *msgid; +#endif + va_list ap; + output_state os; -void -fatal_io_error (name) - const char *name; -{ - verbatim ("%s: %s: I/O error\n", progname, name); + os = output_buffer_state (diagnostic_buffer); + VA_START (ap, msgid); + +#ifndef ANSI_PROTOTYPES + msgid = va_arg (ap, const char *); +#endif + + output_printf (diagnostic_buffer, "%s: %s: ", progname, xstrerror (errno)); + output_buffer_ptr_to_format_args (diagnostic_buffer) = ≈ + output_buffer_text_cursor (diagnostic_buffer) = msgid; + output_format (diagnostic_buffer); + finish_diagnostic (); + output_buffer_state (diagnostic_buffer) = os; + va_end (ap); exit (FATAL_EXIT_CODE); } @@ -1368,6 +1377,8 @@ error_for_asm VPARAMS ((rtx insn, const char *msgid, ...)) va_end (ap); } +/* Report an error message. The arguments are like that of printf. */ + void error VPARAMS ((const char *msgid, ...)) { @@ -1389,22 +1400,49 @@ error VPARAMS ((const char *msgid, ...)) va_end (ap); } -/* Report a fatal error at the current line number. Allow a front end to +/* Likewise, except that the compilation is terminated after printing the + error message. */ + +void +fatal_error VPARAMS ((const char *msgid, ...)) +{ +#ifndef ANSI_PROTOTYPES + const char *msgid; +#endif + va_list ap; + diagnostic_context dc; + + VA_START (ap, msgid); + +#ifndef ANSI_PROTOTYPES + msgid = va_arg (ap, const char *); +#endif + + set_diagnostic_context + (&dc, msgid, &ap, input_filename, lineno, /* warn = */ 0); + report_diagnostic (&dc); + va_end (ap); + + fprintf (stderr, "compilation terminated.\n"); + exit (FATAL_EXIT_CODE); +} + +/* Report a compiler error at the current line number. Allow a front end to intercept the message. */ -static void (*fatal_function) PARAMS((const char *, va_list *)); +static void (*internal_error_function) PARAMS ((const char *, va_list *)); -/* Set the function to call when a fatal error occurs. */ +/* Set the function to call when a compiler error occurs. */ void -set_fatal_function (f) +set_internal_error_function (f) void (*f) PARAMS ((const char *, va_list *)); { - fatal_function = f; + internal_error_function = f; } void -fatal VPARAMS ((const char *msgid, ...)) +internal_error VPARAMS ((const char *msgid, ...)) { #ifndef ANSI_PROTOTYPES const char *msgid; @@ -1424,15 +1462,16 @@ fatal VPARAMS ((const char *msgid, ...)) exit (FATAL_EXIT_CODE); } - if (fatal_function != 0) - (*fatal_function) (_(msgid), &ap); + if (internal_error_function != 0) + (*internal_error_function) (_(msgid), &ap); set_diagnostic_context (&dc, msgid, &ap, input_filename, lineno, /* warn = */0); report_diagnostic (&dc); va_end (ap); - fprintf (stderr, "Please submit a full bug report, with preprocessed source if appropriate.\n"); + fprintf (stderr, "Please submit a full bug report, "); + fprintf (stderr, "with preprocessed source if appropriate.\n"); fprintf (stderr, "See %s for instructions.\n", GCCBUGURL); exit (FATAL_EXIT_CODE); } @@ -1661,7 +1700,8 @@ error_recursion () if (diagnostic_lock < 3) finish_diagnostic (); - fatal ("Internal compiler error: Error reporting routines re-entered."); + internal_error + ("Internal compiler error: Error reporting routines re-entered."); } /* Given a partial pathname as input, return another pathname that @@ -1718,8 +1758,8 @@ fancy_abort (file, line, function) int line; const char *function; { - fatal ("Internal compiler error in %s, at %s:%d", - function, trim_filename (file), line); + internal_error ("Internal compiler error in %s, at %s:%d", + function, trim_filename (file), line); } /* Setup DC for reporting a diagnostic MESSAGE (an error or a WARNING), |