Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[LibFuzzer] Split up some functions among different headers.
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 llvm-svn: 288264
- Loading branch information
Zachary Turner
committed
Nov 30, 2016
1 parent
28ee2d1
commit 24a148b
Showing
18 changed files
with
191 additions
and
87 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
//===- FuzzerIO.h - Internal header for IO utils ----------------*- C++ -* ===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// IO interface. | ||
//===----------------------------------------------------------------------===// | ||
#ifndef LLVM_FUZZER_IO_H | ||
#define LLVM_FUZZER_IO_H | ||
|
||
#include "FuzzerDefs.h" | ||
|
||
namespace fuzzer { | ||
|
||
bool IsFile(const std::string &Path); | ||
|
||
long GetEpoch(const std::string &Path); | ||
|
||
Unit FileToVector(const std::string &Path, size_t MaxSize = 0, | ||
bool ExitOnError = true); | ||
|
||
void DeleteFile(const std::string &Path); | ||
|
||
std::string FileToString(const std::string &Path); | ||
|
||
void CopyFileToErr(const std::string &Path); | ||
|
||
void WriteToFile(const Unit &U, const std::string &Path); | ||
|
||
void ReadDirToVectorOfUnits(const char *Path, std::vector<Unit> *V, | ||
long *Epoch, size_t MaxSize, bool ExitOnError); | ||
|
||
// Returns "Dir/FileName" or equivalent for the current OS. | ||
std::string DirPlusFile(const std::string &DirPath, | ||
const std::string &FileName); | ||
|
||
void DupAndCloseStderr(); | ||
|
||
void CloseStdout(); | ||
|
||
void Printf(const char *Fmt, ...); | ||
|
||
} // namespace fuzzer | ||
#endif // LLVM_FUZZER_IO_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
//===- FuzzerSHA1.h - Internal header for the SHA1 utils --------*- C++ -* ===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
// SHA1 utils. | ||
//===----------------------------------------------------------------------===// | ||
#ifndef LLVM_FUZZER_SHA1_H | ||
#define LLVM_FUZZER_SHA1_H | ||
|
||
#include "FuzzerDefs.h" | ||
#include <cstddef> | ||
#include <stdint.h> | ||
|
||
namespace fuzzer { | ||
|
||
// Private copy of SHA1 implementation. | ||
static const int kSHA1NumBytes = 20; | ||
|
||
// Computes SHA1 hash of 'Len' bytes in 'Data', writes kSHA1NumBytes to 'Out'. | ||
void ComputeSHA1(const uint8_t *Data, size_t Len, uint8_t *Out); | ||
|
||
std::string Sha1ToString(const uint8_t Sha1[kSHA1NumBytes]); | ||
|
||
std::string Hash(const Unit &U); | ||
|
||
} // namespace fuzzer | ||
#endif // LLVM_FUZZER_SHA1_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.