[PATCH][Preprocessor]patch to fix PR 90581

David Malcolm dmalcolm@redhat.com
Thu May 30 20:49:00 GMT 2019


On Thu, 2019-05-30 at 11:23 -0500, Qing Zhao wrote:
> Hi,
> 
> PR 90581 (provide an option to adjust the maximum depth of nested
> #include)
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90581
> 
> is to add a new cpp option -fmax-inlcude-depth to set the maximum
> depth of nested #include.
> 
> '-fmax-include-depth=DEPTH'
>      Set the maximum depth of the nested include.  The default value
> is
>      200.
> 
> Please check the attached patch.
> I have done bootstrap and regression test on X86, no any issue.
> 
> thanks a lot.
> 
> Qing.
> 
Thanks for working on this.  It's looking promising, but I agree that a
param would be better than an option.

One idea that occurred to me looking at the patch...

> index 3ee8bc4..480c282 100644
> --- a/libcpp/directives.c
> +++ b/libcpp/directives.c
> @@ -831,7 +831,7 @@ do_include_common (cpp_reader *pfile, enum include_type type)
>      }
>  
>    /* Prevent #include recursion.  */
> -  if (pfile->line_table->depth >= CPP_STACK_MAX)
> +  if (pfile->line_table->depth >= CPP_OPTION (pfile, max_include_depth))
>      cpp_error (pfile, CPP_DL_ERROR, "#include nested too deeply");

...a nice usability tweak here would be to give a hint about the new
param, to give the user an idea on how to increase the limit.

Maybe something like:

cpp_error (pfile, CPP_DL_ERROR,
	  "%<#include%> nested too deeply (depth %i);"
	  " use %<--param max-include-depth=LIMIT%> to support deeper nesting",
	  pfile->line_table->depth);

(though probably that would be better as a followup "note")

Dave



More information about the Gcc-patches mailing list