FuzzerCleanup.patch 1.1 KB

123456789101112131415161718192021222324252627282930
  1. --- a/lib/fuzzer/FuzzerDefs.h
  2. +++ b/lib/fuzzer/FuzzerDefs.h
  3. @@ -64,2 +64,4 @@ typedef int (*UserCallback)(const uint8_t *Data, size_t Size);
  4. +#define exit(status) FuzzerExit(status)
  5. +void FuzzerExit(int status);
  6. int FuzzerDriver(int *argc, char ***argv, UserCallback Callback);
  7. --- a/lib/fuzzer/FuzzerDriver.cpp
  8. +++ b/lib/fuzzer/FuzzerDriver.cpp
  9. @@ -607,2 +607,8 @@ static Vector<SizedFile> ReadCorpora(const Vector<std::string> &CorpusDirs,
  10. +void FuzzerExit(int status) {
  11. + if (EF->LLVMFuzzerCleanup)
  12. + EF->LLVMFuzzerCleanup();
  13. + (exit)(status);
  14. +}
  15. +
  16. int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) {
  17. --- a/lib/fuzzer/FuzzerExtFunctions.def
  18. +++ b/lib/fuzzer/FuzzerExtFunctions.def
  19. @@ -17,2 +17,3 @@
  20. EXT_FUNC(LLVMFuzzerInitialize, int, (int *argc, char ***argv), false);
  21. +EXT_FUNC(LLVMFuzzerCleanup, void, (), false);
  22. EXT_FUNC(LLVMFuzzerCustomMutator, size_t,
  23. --- a/lib/fuzzer/FuzzerInterface.h
  24. +++ b/lib/fuzzer/FuzzerInterface.h
  25. @@ -47,2 +47,3 @@ LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
  26. FUZZER_INTERFACE_VISIBILITY int LLVMFuzzerInitialize(int *argc, char ***argv);
  27. +FUZZER_INTERFACE_VISIBILITY void LLVMFuzzerCleanup();