]>
git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/nlohmann-json/test/thirdparty/Fuzzer/FuzzerUtil.h
1 //===- FuzzerUtil.h - Internal header for the Fuzzer Utils ------*- C++ -* ===//
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 #ifndef LLVM_FUZZER_UTIL_H
13 #define LLVM_FUZZER_UTIL_H
15 #include "FuzzerDefs.h"
19 void PrintHexArray(const Unit
&U
, const char *PrintAfter
= "");
21 void PrintHexArray(const uint8_t *Data
, size_t Size
,
22 const char *PrintAfter
= "");
24 void PrintASCII(const uint8_t *Data
, size_t Size
, const char *PrintAfter
= "");
26 void PrintASCII(const Unit
&U
, const char *PrintAfter
= "");
28 // Changes U to contain only ASCII (isprint+isspace) characters.
29 // Returns true iff U has been changed.
30 bool ToASCII(uint8_t *Data
, size_t Size
);
32 bool IsASCII(const Unit
&U
);
34 bool IsASCII(const uint8_t *Data
, size_t Size
);
36 std::string
Base64(const Unit
&U
);
38 void PrintPC(const char *SymbolizedFMT
, const char *FallbackFMT
, uintptr_t PC
);
40 std::string
DescribePC(const char *SymbolizedFMT
, uintptr_t PC
);
42 unsigned NumberOfCpuCores();
44 bool ExecuteCommandAndReadOutput(const std::string
&Command
, std::string
*Out
);
46 // Platform specific functions.
47 void SetSignalHandler(const FuzzingOptions
& Options
);
49 void SleepSeconds(int Seconds
);
51 unsigned long GetPid();
53 size_t GetPeakRSSMb();
55 int ExecuteCommand(const std::string
&Command
);
57 FILE *OpenProcessPipe(const char *Command
, const char *Mode
);
59 const void *SearchMemory(const void *haystack
, size_t haystacklen
,
60 const void *needle
, size_t needlelen
);
62 std::string
CloneArgsWithoutX(const std::vector
<std::string
> &Args
,
63 const char *X1
, const char *X2
);
65 inline std::string
CloneArgsWithoutX(const std::vector
<std::string
> &Args
,
67 return CloneArgsWithoutX(Args
, X
, X
);
72 #endif // LLVM_FUZZER_UTIL_H