<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>