blob: 97271b993073d67d1f087ba6866d9535d7f6ada4 [file] [log] [blame]
Zachary Turner24a148b2016-11-30 19:06:14 +00001//===- FuzzerUtil.h - Internal header for the Fuzzer Utils ------*- C++ -* ===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9// Util functions.
10//===----------------------------------------------------------------------===//
11#ifndef LLVM_FUZZER_UTIL_H
12#define LLVM_FUZZER_UTIL_H
13
14#include "FuzzerDefs.h"
15
16namespace fuzzer {
17
18void PrintHexArray(const Unit &U, const char *PrintAfter = "");
19
20void PrintHexArray(const uint8_t *Data, size_t Size,
21 const char *PrintAfter = "");
22
23void PrintASCII(const uint8_t *Data, size_t Size, const char *PrintAfter = "");
24
25void PrintASCII(const Unit &U, const char *PrintAfter = "");
26
27// Changes U to contain only ASCII (isprint+isspace) characters.
28// Returns true iff U has been changed.
29bool ToASCII(uint8_t *Data, size_t Size);
30
31bool IsASCII(const Unit &U);
32
33bool IsASCII(const uint8_t *Data, size_t Size);
34
35std::string Base64(const Unit &U);
36
37void PrintPC(const char *SymbolizedFMT, const char *FallbackFMT, uintptr_t PC);
38
39std::string DescribePC(const char *SymbolizedFMT, uintptr_t PC);
40
41int NumberOfCpuCores();
42
43// Platform specific functions.
44void SetTimer(int Seconds);
45
46void SetSigSegvHandler();
47void SetSigBusHandler();
48void SetSigAbrtHandler();
49void SetSigIllHandler();
50void SetSigFpeHandler();
51void SetSigIntHandler();
52void SetSigTermHandler();
53
54void SleepSeconds(int Seconds);
55
56int GetPid();
57
58size_t GetPeakRSSMb();
59
60bool ExecuteCommandAndReadOutput(const std::string &Command, std::string *Out);
61
62int ExecuteCommand(const std::string &Command);
63
64} // namespace fuzzer
65#endif // LLVM_FUZZER_UTIL_H