mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-10 22:46:20 +00:00
1a3900e81e
In an effort to get libfuzzer working on Windows, we need to make a distinction between what functions require platform specific code (e.g. different code on Windows vs Linux) and what code doesn't. IO functions, for example, tend to be platform specific. This patch separates out some of the functions which will need to have platform specific implementations into different headers, so that we can then provide different implementations for each platform. Aside from that, this patch contains no functional change. It is purely a re-organization. Patch by Marcos Pividori Differential Revision: https://reviews.llvm.org/D27230 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288264 91177308-0d34-0410-b5e6-96231b3b80d8
66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
//===- FuzzerUtil.h - Internal header for the Fuzzer Utils ------*- C++ -* ===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// Util functions.
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef LLVM_FUZZER_UTIL_H
|
|
#define LLVM_FUZZER_UTIL_H
|
|
|
|
#include "FuzzerDefs.h"
|
|
|
|
namespace fuzzer {
|
|
|
|
void PrintHexArray(const Unit &U, const char *PrintAfter = "");
|
|
|
|
void PrintHexArray(const uint8_t *Data, size_t Size,
|
|
const char *PrintAfter = "");
|
|
|
|
void PrintASCII(const uint8_t *Data, size_t Size, const char *PrintAfter = "");
|
|
|
|
void PrintASCII(const Unit &U, const char *PrintAfter = "");
|
|
|
|
// Changes U to contain only ASCII (isprint+isspace) characters.
|
|
// Returns true iff U has been changed.
|
|
bool ToASCII(uint8_t *Data, size_t Size);
|
|
|
|
bool IsASCII(const Unit &U);
|
|
|
|
bool IsASCII(const uint8_t *Data, size_t Size);
|
|
|
|
std::string Base64(const Unit &U);
|
|
|
|
void PrintPC(const char *SymbolizedFMT, const char *FallbackFMT, uintptr_t PC);
|
|
|
|
std::string DescribePC(const char *SymbolizedFMT, uintptr_t PC);
|
|
|
|
int NumberOfCpuCores();
|
|
|
|
// Platform specific functions.
|
|
void SetTimer(int Seconds);
|
|
|
|
void SetSigSegvHandler();
|
|
void SetSigBusHandler();
|
|
void SetSigAbrtHandler();
|
|
void SetSigIllHandler();
|
|
void SetSigFpeHandler();
|
|
void SetSigIntHandler();
|
|
void SetSigTermHandler();
|
|
|
|
void SleepSeconds(int Seconds);
|
|
|
|
int GetPid();
|
|
|
|
size_t GetPeakRSSMb();
|
|
|
|
bool ExecuteCommandAndReadOutput(const std::string &Command, std::string *Out);
|
|
|
|
int ExecuteCommand(const std::string &Command);
|
|
|
|
} // namespace fuzzer
|
|
#endif // LLVM_FUZZER_UTIL_H
|