<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Nov 11, 2016 at 4:34 PM Kostya Serebryany via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kcc<br class="gmail_msg">
Date: Fri Nov 11 18:24:35 2016<br class="gmail_msg">
New Revision: 286689<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=286689&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=286689&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
[libFuzzer] use less stack<br class="gmail_msg">
<br class="gmail_msg">
Added:<br class="gmail_msg">
llvm/trunk/lib/Fuzzer/test/ulimit.test<br class="gmail_msg">
Modified:<br class="gmail_msg">
llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp?rev=286689&r1=286688&r2=286689&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp?rev=286689&r1=286688&r2=286689&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/Fuzzer/FuzzerDriver.cpp Fri Nov 11 18:24:35 2016<br class="gmail_msg">
@@ -446,15 +446,15 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
Printf("INFO: Seed: %u\n", Seed);<br class="gmail_msg">
<br class="gmail_msg">
Random Rand(Seed);<br class="gmail_msg">
- MutationDispatcher MD(Rand, Options);<br class="gmail_msg">
- InputCorpus Corpus(Options.OutputCorpus);<br class="gmail_msg">
- Fuzzer F(Callback, Corpus, MD, Options);<br class="gmail_msg">
+ auto MD = new MutationDispatcher(Rand, Options);<br class="gmail_msg">
+ auto Corpus = new InputCorpus(Options.OutputCorpus);<br class="gmail_msg">
+ auto F = new Fuzzer(Callback, *Corpus, *MD, Options);<br class="gmail_msg"></blockquote><div><br></div><div>Generally it's preferable to use 'auto *' when something's a pointer ( <a href="http://llvm.org/docs/CodingStandards.html#beware-unnecessary-copies-with-auto">http://llvm.org/docs/CodingStandards.html#beware-unnecessary-copies-with-auto</a> ).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
for (auto &U: Dictionary)<br class="gmail_msg">
if (U.size() <= Word::GetMaxSize())<br class="gmail_msg">
- MD.AddWordToManualDictionary(Word(U.data(), U.size()));<br class="gmail_msg">
+ MD->AddWordToManualDictionary(Word(U.data(), U.size()));<br class="gmail_msg">
<br class="gmail_msg">
- StartRssThread(&F, Flags.rss_limit_mb);<br class="gmail_msg">
+ StartRssThread(F, Flags.rss_limit_mb);<br class="gmail_msg">
<br class="gmail_msg">
// Timer<br class="gmail_msg">
if (Flags.timeout > 0)<br class="gmail_msg">
@@ -468,7 +468,7 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
if (Flags.handle_term) SetSigTermHandler();<br class="gmail_msg">
<br class="gmail_msg">
if (Flags.minimize_crash_internal_step)<br class="gmail_msg">
- return MinimizeCrashInputInternalStep(&F, &Corpus);<br class="gmail_msg">
+ return MinimizeCrashInputInternalStep(F, Corpus);<br class="gmail_msg">
<br class="gmail_msg">
if (DoPlainRun) {<br class="gmail_msg">
Options.SaveArtifacts = false;<br class="gmail_msg">
@@ -479,7 +479,7 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
auto StartTime = system_clock::now();<br class="gmail_msg">
Printf("Running: %s\n", Path.c_str());<br class="gmail_msg">
for (int Iter = 0; Iter < Runs; Iter++)<br class="gmail_msg">
- RunOneTest(&F, Path.c_str(), Options.MaxLen);<br class="gmail_msg">
+ RunOneTest(F, Path.c_str(), Options.MaxLen);<br class="gmail_msg">
auto StopTime = system_clock::now();<br class="gmail_msg">
auto MS = duration_cast<milliseconds>(StopTime - StartTime).count();<br class="gmail_msg">
Printf("Executed %s in %zd ms\n", Path.c_str(), (long)MS);<br class="gmail_msg">
@@ -488,14 +488,14 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
"*** NOTE: fuzzing was not performed, you have only\n"<br class="gmail_msg">
"*** executed the target code on a fixed set of inputs.\n"<br class="gmail_msg">
"***\n");<br class="gmail_msg">
- F.PrintFinalStats();<br class="gmail_msg">
+ F->PrintFinalStats();<br class="gmail_msg">
exit(0);<br class="gmail_msg">
}<br class="gmail_msg">
<br class="gmail_msg">
if (Flags.merge) {<br class="gmail_msg">
if (Options.MaxLen == 0)<br class="gmail_msg">
- F.SetMaxInputLen(kMaxSaneLen);<br class="gmail_msg">
- F.Merge(*Inputs);<br class="gmail_msg">
+ F->SetMaxInputLen(kMaxSaneLen);<br class="gmail_msg">
+ F->Merge(*Inputs);<br class="gmail_msg">
exit(0);<br class="gmail_msg">
}<br class="gmail_msg">
<br class="gmail_msg">
@@ -512,7 +512,7 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
size_t MaxLen = 0;<br class="gmail_msg">
for (auto &U : InitialCorpus)<br class="gmail_msg">
MaxLen = std::max(U.size(), MaxLen);<br class="gmail_msg">
- F.SetMaxInputLen(std::min(std::max(kMinDefaultLen, MaxLen), kMaxSaneLen));<br class="gmail_msg">
+ F->SetMaxInputLen(std::min(std::max(kMinDefaultLen, MaxLen), kMaxSaneLen));<br class="gmail_msg">
}<br class="gmail_msg">
<br class="gmail_msg">
if (InitialCorpus.empty()) {<br class="gmail_msg">
@@ -520,14 +520,14 @@ int FuzzerDriver(int *argc, char ***argv<br class="gmail_msg">
if (Options.Verbosity)<br class="gmail_msg">
Printf("INFO: A corpus is not provided, starting from an empty corpus\n");<br class="gmail_msg">
}<br class="gmail_msg">
- F.ShuffleAndMinimize(&InitialCorpus);<br class="gmail_msg">
+ F->ShuffleAndMinimize(&InitialCorpus);<br class="gmail_msg">
InitialCorpus.clear(); // Don't need this memory any more.<br class="gmail_msg">
- F.Loop();<br class="gmail_msg">
+ F->Loop();<br class="gmail_msg">
<br class="gmail_msg">
if (Flags.verbosity)<br class="gmail_msg">
- Printf("Done %d runs in %zd second(s)\n", F.getTotalNumberOfRuns(),<br class="gmail_msg">
- F.secondsSinceProcessStartUp());<br class="gmail_msg">
- F.PrintFinalStats();<br class="gmail_msg">
+ Printf("Done %d runs in %zd second(s)\n", F->getTotalNumberOfRuns(),<br class="gmail_msg">
+ F->secondsSinceProcessStartUp());<br class="gmail_msg">
+ F->PrintFinalStats();<br class="gmail_msg">
<br class="gmail_msg">
exit(0); // Don't let F destroy itself.<br class="gmail_msg">
}<br class="gmail_msg">
<br class="gmail_msg">
Added: llvm/trunk/lib/Fuzzer/test/ulimit.test<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/ulimit.test?rev=286689&view=auto" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/test/ulimit.test?rev=286689&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Fuzzer/test/ulimit.test (added)<br class="gmail_msg">
+++ llvm/trunk/lib/Fuzzer/test/ulimit.test Fri Nov 11 18:24:35 2016<br class="gmail_msg">
@@ -0,0 +1,2 @@<br class="gmail_msg">
+RUN: ulimit -s 1000<br class="gmail_msg">
+RUN: LLVMFuzzer-SimpleTest<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div></div>