[libFuzzer] change trace-pc to use 8-byte guards

llvm-svn: 281810
diff --git a/llvm/lib/Fuzzer/test/DSO1.cpp b/llvm/lib/Fuzzer/test/DSO1.cpp
new file mode 100644
index 0000000..c362593
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSO1.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSO1(int a) {
+  if (a < 123456)
+    return 0;
+  return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSO2.cpp b/llvm/lib/Fuzzer/test/DSO2.cpp
new file mode 100644
index 0000000..46c80e4
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSO2.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSO2(int a) {
+  if (a < 3598235)
+    return 0;
+  return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSOTestExtra.cpp b/llvm/lib/Fuzzer/test/DSOTestExtra.cpp
new file mode 100644
index 0000000..a2274d0
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSOTestExtra.cpp
@@ -0,0 +1,11 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+int DSOTestExtra(int a) {
+  if (a < 452345)
+    return 0;
+  return 1;
+}
+
diff --git a/llvm/lib/Fuzzer/test/DSOTestMain.cpp b/llvm/lib/Fuzzer/test/DSOTestMain.cpp
new file mode 100644
index 0000000..49cd185
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/DSOTestMain.cpp
@@ -0,0 +1,27 @@
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+// Source code for a simple DSO.
+
+#include <cstdint>
+#include <cstdlib>
+#include <cstring>
+#include <cstdio>
+extern int DSO1(int a);
+extern int DSO2(int a);
+extern int DSOTestExtra(int a);
+
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+  if (Size < sizeof(int) * 3) return 0;
+  int x, y, z;
+  memcpy(&x, Data + 0 * sizeof(int), sizeof(int));
+  memcpy(&y, Data + 1 * sizeof(int), sizeof(int));
+  memcpy(&z, Data + 2 * sizeof(int), sizeof(int));
+  int sum = DSO1(x) + DSO2(y) + DSOTestExtra(z);
+  if (sum == 3) {
+    fprintf(stderr, "BINGO %d %d %d\n", x, y, z);
+    exit(1);
+  }
+  return 0;
+}
diff --git a/llvm/lib/Fuzzer/test/fuzzer-jobs.test b/llvm/lib/Fuzzer/test/fuzzer-jobs.test
index cd71bc0..5bf8cfa 100644
--- a/llvm/lib/Fuzzer/test/fuzzer-jobs.test
+++ b/llvm/lib/Fuzzer/test/fuzzer-jobs.test
@@ -9,7 +9,7 @@
 RUN: LLVMFuzzer-EmptyTest -max_total_time=4 -jobs=2 -workers=2 FuzzerJobsTestCORPUS > %t-fuzzer-jobs-test.log 2>&1 & export FUZZER_PID=$!
 # Wait a short while to give time for the child processes
 # to start fuzzing
-RUN: sleep 1
+RUN: sleep 2
 # If the instances are running in parallel they should have created their log
 # files by now.
 RUN: ls fuzz-0.log
diff --git a/llvm/lib/Fuzzer/test/fuzzer.test b/llvm/lib/Fuzzer/test/fuzzer.test
index 0e7b26e..ce20785 100644
--- a/llvm/lib/Fuzzer/test/fuzzer.test
+++ b/llvm/lib/Fuzzer/test/fuzzer.test
@@ -49,3 +49,7 @@
 
 RUN: not LLVMFuzzer-InitializeTest 2>&1 | FileCheck %s
 
+RUN: not LLVMFuzzer-DSOTest 2>&1 | FileCheck %s --check-prefix=DSO
+DSO: INFO: Loaded 3 modules
+DSO: BINGO
+
diff --git a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
index 4ecf801..c4e4e9c 100644
--- a/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
+++ b/llvm/lib/Fuzzer/test/trace-pc/CMakeLists.txt
@@ -15,3 +15,25 @@
 
 # Propagate value into parent directory
 set(TestBinaries ${TestBinaries} PARENT_SCOPE)
+
+add_library(LLVMFuzzer-DSO1 SHARED ../DSO1.cpp)
+add_library(LLVMFuzzer-DSO2 SHARED ../DSO2.cpp)
+
+add_executable(LLVMFuzzer-DSOTest
+  ../DSOTestMain.cpp
+  ../DSOTestExtra.cpp)
+
+target_link_libraries(LLVMFuzzer-DSOTest
+  LLVMFuzzer-DSO1
+  LLVMFuzzer-DSO2
+  LLVMFuzzer
+  )
+
+set_target_properties(LLVMFuzzer-DSOTest PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+  "${CMAKE_BINARY_DIR}/lib/Fuzzer/test")
+set_target_properties(LLVMFuzzer-DSO1 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+  "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+set_target_properties(LLVMFuzzer-DSO2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY
+  "${CMAKE_BINARY_DIR}/lib/Fuzzer/lib")
+
+set(TestBinaries ${TestBinaries} LLVMFuzzer-DSOTest)