blob: c9de11f063f6be8e36d7cba95992341107c3f854 [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
Zachary Turner6fa57ad2016-12-02 23:02:01 +000043bool ExecuteCommandAndReadOutput(const std::string &Command, std::string *Out);
44
Zachary Turner24a148b2016-11-30 19:06:14 +000045// Platform specific functions.
46void SetTimer(int Seconds);
47
48void SetSigSegvHandler();
49void SetSigBusHandler();
50void SetSigAbrtHandler();
51void SetSigIllHandler();
52void SetSigFpeHandler();
53void SetSigIntHandler();
54void SetSigTermHandler();
55
56void SleepSeconds(int Seconds);
57
58int GetPid();
59
60size_t GetPeakRSSMb();
61
Zachary Turner24a148b2016-11-30 19:06:14 +000062int ExecuteCommand(const std::string &Command);
63
Zachary Turner6fa57ad2016-12-02 23:02:01 +000064FILE *OpenProcessPipe(const char *Command, const char *Mode);
65
66const void *SearchMemory(const void *haystack, size_t haystacklen,
67 const void *needle, size_t needlelen);
68
Zachary Turner24a148b2016-11-30 19:06:14 +000069} // namespace fuzzer
70#endif // LLVM_FUZZER_UTIL_H