Skip to content
Snippets Groups Projects
  • Lewis Hyatt's avatar
    3ac6b5cf
    diagnostics: Support for -finput-charset [PR93067] · 3ac6b5cf
    Lewis Hyatt authored
    Adds the logic to handle -finput-charset in layout_get_source_line(), so that
    source lines are converted from their input encodings prior to being output by
    diagnostics machinery. Also adds the ability to strip a UTF-8 BOM similarly.
    
    gcc/c-family/ChangeLog:
    
    	PR other/93067
    	* c-opts.c (c_common_input_charset_cb): New function.
    	(c_common_post_options): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/d/ChangeLog:
    
    	PR other/93067
    	* d-lang.cc (d_input_charset_callback): New function.
    	(d_init): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/fortran/ChangeLog:
    
    	PR other/93067
    	* cpp.c (gfc_cpp_post_options): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/ChangeLog:
    
    	PR other/93067
    	* coretypes.h (typedef diagnostic_input_charset_callback): Declare.
    	* diagnostic.c (diagnostic_initialize_input_context): New function.
    	* diagnostic.h (diagnostic_initialize_input_context): Declare.
    	* input.c (default_charset_callback): New function.
    	(file_cache::initialize_input_context): New function.
    	(file_cache_slot::create): Added ability to convert the input
    	according to the input context.
    	(file_cache::file_cache): Initialize the new input context.
    	(class file_cache_slot): Added new m_alloc_offset member.
    	(file_cache_slot::file_cache_slot): Initialize the new member.
    	(file_cache_slot::~file_cache_slot): Handle potentially offset buffer.
    	(file_cache_slot::maybe_grow): Likewise.
    	(file_cache_slot::needs_read_p): Handle NULL fp, which is now possible.
    	(file_cache_slot::get_next_line): Likewise.
    	* input.h (class file_cache): Added input context member.
    
    libcpp/ChangeLog:
    
    	PR other/93067
    	* charset.c (init_iconv_desc): Adapt to permit PFILE argument to
    	be NULL.
    	(_cpp_convert_input): Likewise. Also move UTF-8 BOM logic to...
    	(cpp_check_utf8_bom): ...here.  New function.
    	(cpp_input_conversion_is_trivial): New function.
    	* files.c (read_file_guts): Allow PFILE argument to be NULL.  Add
    	INPUT_CHARSET argument as an alternate source of this information.
    	(read_file): Pass the new argument to read_file_guts.
    	(cpp_get_converted_source): New function.
    	* include/cpplib.h (struct cpp_converted_source): Declare.
    	(cpp_get_converted_source): Declare.
    	(cpp_input_conversion_is_trivial): Declare.
    	(cpp_check_utf8_bom): Declare.
    
    gcc/testsuite/ChangeLog:
    
    	PR other/93067
    	* gcc.dg/diagnostic-input-charset-1.c: New test.
    	* gcc.dg/diagnostic-input-utf8-bom.c: New test.
    3ac6b5cf
    History
    diagnostics: Support for -finput-charset [PR93067]
    Lewis Hyatt authored
    Adds the logic to handle -finput-charset in layout_get_source_line(), so that
    source lines are converted from their input encodings prior to being output by
    diagnostics machinery. Also adds the ability to strip a UTF-8 BOM similarly.
    
    gcc/c-family/ChangeLog:
    
    	PR other/93067
    	* c-opts.c (c_common_input_charset_cb): New function.
    	(c_common_post_options): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/d/ChangeLog:
    
    	PR other/93067
    	* d-lang.cc (d_input_charset_callback): New function.
    	(d_init): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/fortran/ChangeLog:
    
    	PR other/93067
    	* cpp.c (gfc_cpp_post_options): Call new function
    	diagnostic_initialize_input_context().
    
    gcc/ChangeLog:
    
    	PR other/93067
    	* coretypes.h (typedef diagnostic_input_charset_callback): Declare.
    	* diagnostic.c (diagnostic_initialize_input_context): New function.
    	* diagnostic.h (diagnostic_initialize_input_context): Declare.
    	* input.c (default_charset_callback): New function.
    	(file_cache::initialize_input_context): New function.
    	(file_cache_slot::create): Added ability to convert the input
    	according to the input context.
    	(file_cache::file_cache): Initialize the new input context.
    	(class file_cache_slot): Added new m_alloc_offset member.
    	(file_cache_slot::file_cache_slot): Initialize the new member.
    	(file_cache_slot::~file_cache_slot): Handle potentially offset buffer.
    	(file_cache_slot::maybe_grow): Likewise.
    	(file_cache_slot::needs_read_p): Handle NULL fp, which is now possible.
    	(file_cache_slot::get_next_line): Likewise.
    	* input.h (class file_cache): Added input context member.
    
    libcpp/ChangeLog:
    
    	PR other/93067
    	* charset.c (init_iconv_desc): Adapt to permit PFILE argument to
    	be NULL.
    	(_cpp_convert_input): Likewise. Also move UTF-8 BOM logic to...
    	(cpp_check_utf8_bom): ...here.  New function.
    	(cpp_input_conversion_is_trivial): New function.
    	* files.c (read_file_guts): Allow PFILE argument to be NULL.  Add
    	INPUT_CHARSET argument as an alternate source of this information.
    	(read_file): Pass the new argument to read_file_guts.
    	(cpp_get_converted_source): New function.
    	* include/cpplib.h (struct cpp_converted_source): Declare.
    	(cpp_get_converted_source): Declare.
    	(cpp_input_conversion_is_trivial): Declare.
    	(cpp_check_utf8_bom): Declare.
    
    gcc/testsuite/ChangeLog:
    
    	PR other/93067
    	* gcc.dg/diagnostic-input-charset-1.c: New test.
    	* gcc.dg/diagnostic-input-utf8-bom.c: New test.