1 //===- FuzzerUtil.cpp - Misc utils ----------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 //===----------------------------------------------------------------------===//
12 #include "FuzzerInternal.h"
21 void Print(const Unit &v, const char *PrintAfter) {
22 std::cerr << v.size() << ": ";
24 std::cerr << (unsigned) x << " ";
25 std::cerr << PrintAfter;
28 void PrintASCII(const Unit &U, const char *PrintAfter) {
30 std::cerr << (char)((isascii(X) && X >= ' ') ? X : '?');
31 std::cerr << PrintAfter;
34 std::string Hash(const Unit &in) {
35 size_t h1 = 0, h2 = 0;
42 return std::to_string(h1) + std::to_string(h2);
45 static void AlarmHandler(int, siginfo_t *, void *) {
46 Fuzzer::AlarmCallback();
49 void SetTimer(int Seconds) {
50 struct itimerval T {{Seconds, 0}, {Seconds, 0}};
51 std::cerr << "SetTimer " << Seconds << "\n";
52 int Res = setitimer(ITIMER_REAL, &T, nullptr);
54 struct sigaction sigact;
55 memset(&sigact, 0, sizeof(sigact));
56 sigact.sa_sigaction = AlarmHandler;
57 Res = sigaction(SIGALRM, &sigact, 0);