<br><br>On Thursday, March 12, 2015, Robinson, Paul <<a href="mailto:Paul_Robinson@playstation.sony.com">Paul_Robinson@playstation.sony.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> -----Original Message-----<br>
> From: Justin Bogner [mailto:<a href="javascript:;" onclick="_e(event, 'cvml', 'justin@justinbogner.com')">justin@justinbogner.com</a>] On Behalf Of Justin<br>
> Bogner<br>
> Sent: Wednesday, March 11, 2015 10:44 PM<br>
> To: Robinson, Paul<br>
> Cc: <a href="javascript:;" onclick="_e(event, 'cvml', 'cfe-commits@cs.uiuc.edu')">cfe-commits@cs.uiuc.edu</a><br>
> Subject: Re: r231989 - Driver: Print the clang version and original<br>
> command in crash scripts<br>
><br>
> "Robinson, Paul" <<a href="javascript:;" onclick="_e(event, 'cvml', 'Paul_Robinson@playstation.sony.com')">Paul_Robinson@playstation.sony.com</a>> writes:<br>
> >> -----Original Message-----<br>
> >> From: <a href="javascript:;" onclick="_e(event, 'cvml', 'cfe-commits-bounces@cs.uiuc.edu')">cfe-commits-bounces@cs.uiuc.edu</a> [mailto:<a href="javascript:;" onclick="_e(event, 'cvml', 'cfe-commits-')">cfe-commits-</a><br>
> >> <a href="javascript:;" onclick="_e(event, 'cvml', 'bounces@cs.uiuc.edu')">bounces@cs.uiuc.edu</a>] On Behalf Of Justin Bogner<br>
> >> Sent: Wednesday, March 11, 2015 5:15 PM<br>
> >> To: <a href="javascript:;" onclick="_e(event, 'cvml', 'cfe-commits@cs.uiuc.edu')">cfe-commits@cs.uiuc.edu</a><br>
> >> Subject: r231989 - Driver: Print the clang version and original command<br>
> in<br>
> >> crash scripts<br>
> >><br>
> >> Author: bogner<br>
> >> Date: Wed Mar 11 19:14:35 2015<br>
> >> New Revision: 231989<br>
> >><br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=231989&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=231989&view=rev</a><br>
> >> Log:<br>
> >> Driver: Print the clang version and original command in crash scripts<br>
> >><br>
> >> When a crash report script doesn't work for a reproduction on your<br>
> >> machine for one reason or another, it can be really tricky to figure<br>
> >> out why not. The compiler version that crashed and the original<br>
> >> command line before stripping flags are very helpful when this comes<br>
> >> up.<br>
> >><br>
> >> Modified:<br>
> >>     cfe/trunk/lib/Driver/Driver.cpp<br>
> >>     cfe/trunk/test/Driver/crash-report-modules.m<br>
> >>     cfe/trunk/test/Driver/crash-report.c<br>
> >><br>
> >> Modified: cfe/trunk/lib/Driver/Driver.cpp<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> >><br>
> project/cfe/trunk/lib/Driver/Driver.cpp?rev=231989&r1=231988&r2=231989&vie<br>
> >> w=diff<br>
> >><br>
> ==========================================================================<br>
> >> ====<br>
> >> --- cfe/trunk/lib/Driver/Driver.cpp (original)<br>
> >> +++ cfe/trunk/lib/Driver/Driver.cpp Wed Mar 11 19:14:35 2015<br>
> >> @@ -551,6 +551,9 @@ void Driver::generateCompilationDiagnost<br>
> >>      Diag(clang::diag::note_drv_command_failed_diag_msg)<br>
> >>          << "Error generating run script: " + Script + " " +<br>
> EC.message();<br>
> >>    } else {<br>
> >> +    ScriptOS << "# Crash reproducer for " << getClangFullVersion() <<<br>
> >> "\n"<br>
> >> +             << "# Original command: ";<br>
> >> +    Cmd.Print(ScriptOS, "\n", /*Quote=*/true);<br>
> >>      Cmd.Print(ScriptOS, "\n", /*Quote=*/true, &CrashInfo);<br>
> >>      Diag(clang::diag::note_drv_command_failed_diag_msg) << Script;<br>
> >>    }<br>
> >><br>
> >> Modified: cfe/trunk/test/Driver/crash-report-modules.m<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-</a><br>
> >> report-modules.m?rev=231989&r1=231988&r2=231989&view=diff<br>
> >><br>
> ==========================================================================<br>
> >> ====<br>
> >> --- cfe/trunk/test/Driver/crash-report-modules.m (original)<br>
> >> +++ cfe/trunk/test/Driver/crash-report-modules.m Wed Mar 11 19:14:35<br>
> 2015<br>
> >> @@ -25,7 +25,9 @@ const int x = MODULE_MACRO;<br>
> >>  // CHECKSRC: @import simple;<br>
> >>  // CHECKSRC: const int x = 10;<br>
> >><br>
> >> -// CHECKSH: "-cc1"<br>
> >> +// CHECKSH: # Crash reproducer<br>
> >> +// CHECKSH-NEXT: # Original command: {{.*$}}<br>
> >> +// CHECKSH-NEXT: "-cc1"<br>
> ><br>
> > I thought -NEXT did the equivalent of {{.*$}} for you?<br>
> > Explicitly adding the regex seems harmless but makes me wonder if I'm<br>
> > misunderstanding something.<br>
><br>
> Without the regex FileCheck complained that it found the -NEXT match on<br>
> the same line. I guess this makes sense to check for in some other<br>
> cases. I added the regex to make sure we read past the whole line.<br>
<br>
Okay, that's a subtle aspect of -NEXT but makes sense. Thanks for<br>
the explanation.<br>
<br>
So the "Original command" would actually be the compiler command line,<br>
not the driver command line.  If that was your intent, then okay.<br>
--paulr</blockquote><div><br></div><div>Yes, the compiler command line before we do any of the munging of paths and flags to make it work on the reproduction machine.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
> >>  // CHECKSH: "-D" "FOO=BAR"<br>
> >>  // CHECKSH-NOT: "-fmodules-cache-path=/tmp/"<br>
> >>  // CHECKSH: "crash-report-modules-{{[^ ]*}}.m"<br>
> >><br>
> >> Modified: cfe/trunk/test/Driver/crash-report.c<br>
> >> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/crash-</a><br>
> >> report.c?rev=231989&r1=231988&r2=231989&view=diff<br>
> >><br>
> ==========================================================================<br>
> >> ====<br>
> >> --- cfe/trunk/test/Driver/crash-report.c (original)<br>
> >> +++ cfe/trunk/test/Driver/crash-report.c Wed Mar 11 19:14:35 2015<br>
> >> @@ -18,7 +18,9 @@<br>
> >>  // CHECK-NEXT: note: diagnostic msg: {{.*}}crash-report-{{.*}}.c<br>
> >>  FOO<br>
> >>  // CHECKSRC: FOO<br>
> >> -// CHECKSH: "-cc1"<br>
> >> +// CHECKSH: # Crash reproducer<br>
> >> +// CHECKSH-NEXT: # Original command: {{.*$}}<br>
> ><br>
> > Ditto here.<br>
> > Thanks,<br>
> > --paulr<br>
> ><br>
> >> +// CHECKSH-NEXT: "-cc1"<br>
> >>  // CHECKSH: "-main-file-name" "crash-report.c"<br>
> >>  // CHECKSH: "-D" "FOO=BAR"<br>
> >>  // CHECKSH-NOT: "-F/tmp/"<br>
> >><br>
> >><br>
> >> _______________________________________________<br>
> >> cfe-commits mailing list<br>
> >> <a href="javascript:;" onclick="_e(event, 'cvml', 'cfe-commits@cs.uiuc.edu')">cfe-commits@cs.uiuc.edu</a><br>
> >> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote>