<div dir="ltr"><div dir="ltr">IMO, a limit of at most 20 nested response files would make a lot more sense than 20 total response files. I don't think the total should really have a limit at all.</div><div dir="ltr"><br></div><div dir="ltr">Since we expand the files in place while iterating over the arglist, we'd need to keep a separate array listing the end-offset of each file we're currently nested within, and update the offsets with every expansion of arguments. That's a bit more complex than just an integer count of number of files seen so far, but it should be implementable completely within the ExpandResponseFiles function, and I don't think it'd be _that_ tricky.</div><div dir="ltr"><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 29, 2019 at 3:26 AM Hans Wennborg via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It seems reasonable to have an expansion limit, but maybe 20 is too low.<br>
<br>
Chris: You say you're relying heavily on nested response files. Do you<br>
have a feel for what would be a reasonable limit that wouldn't<br>
interfere with your use case?<br>
<br>
Thanks,<br>
Hans<br>
<br>
On Fri, Apr 26, 2019 at 5:37 PM Shoaib Meenai <<a href="mailto:smeenai@fb.com" target="_blank">smeenai@fb.com</a>> wrote:<br>
><br>
> Actually, sorry, my fix was for the case where you had other arguments beginning with @ that weren't response files, whereas yours has actual response files, so my patch won't help there. CCing Reid and Hans, who did a bunch of the implementation in this area.<br>
><br>
><br>
><br>
> From: llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> on behalf of Shoaib Meenai via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
> Reply-To: Shoaib Meenai <<a href="mailto:smeenai@fb.com" target="_blank">smeenai@fb.com</a>><br>
> Date: Friday, April 26, 2019 at 8:34 AM<br>
> To: Chris Glover <<a href="mailto:chrisglover@google.com" target="_blank">chrisglover@google.com</a>>, "<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>" <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
> Subject: Re: [llvm-dev] Total response file count limited to 21<br>
><br>
><br>
><br>
> Hi Chris,<br>
><br>
><br>
><br>
> I fixed this in <a href="https://reviews.llvm.org/D60631" rel="noreferrer" target="_blank">https://reviews.llvm.org/D60631</a>. If you're using a released version of clang you'll have to wait for 9.0 though.<br>
><br>
><br>
><br>
> Thanks,<br>
><br>
> Shoaib<br>
><br>
><br>
><br>
> From: llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> on behalf of Chris Glover via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
> Reply-To: Chris Glover <<a href="mailto:chrisglover@google.com" target="_blank">chrisglover@google.com</a>><br>
> Date: Friday, April 26, 2019 at 8:13 AM<br>
> To: "<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>" <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
> Subject: [llvm-dev] Total response file count limited to 21<br>
><br>
><br>
><br>
> Hi,<br>
><br>
><br>
><br>
> I recently hit this on a project using a build system that relies heavily on nested response files. We found we could only have 21 response files total before getting errors related to the unexpanded response files. I tracked it down to this code in llvm/lib/Support/CommandLine.cpp<br>
><br>
><br>
><br>
>     // If we have too many response files, leave some unexpanded.  This avoids<br>
>     // crashing on self-referential response files.<br>
>     if (RspFiles++ > 20)<br>
>       return false;<br>
><br>
><br>
><br>
> This seems rather arbitrary and in tests I was able to increase it to 200 reliably, which we could do locally for now, but I feel there must be a better way to handle this by tracking processed response files instead of just bailing like this. Or am I missing something?<br>
><br>
><br>
><br>
> Thanks!<br>
><br>
><br>
><br>
> -- chris<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>