Index: llvm/trunk/lib/Fuzzer/FuzzerIO.h =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerIO.h +++ llvm/trunk/lib/Fuzzer/FuzzerIO.h @@ -69,6 +69,8 @@ void DiscardOutput(int Fd); +intptr_t GetHandleFromFd(int fd); + } // namespace fuzzer #endif // LLVM_FUZZER_IO_H Index: llvm/trunk/lib/Fuzzer/FuzzerIO.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerIO.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerIO.cpp @@ -96,7 +96,8 @@ if (NewOutputFile) { OutputFile = NewOutputFile; if (EF->__sanitizer_set_report_fd) - EF->__sanitizer_set_report_fd(reinterpret_cast(OutputFd)); + EF->__sanitizer_set_report_fd( + reinterpret_cast(GetHandleFromFd(OutputFd))); DiscardOutput(2); } } Index: llvm/trunk/lib/Fuzzer/FuzzerIOPosix.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerIOPosix.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerIOPosix.cpp @@ -83,6 +83,10 @@ fclose(Temp); } +intptr_t GetHandleFromFd(int fd) { + return static_cast(fd); +} + std::string DirName(const std::string &FileName) { char *Tmp = new char[FileName.size() + 1]; memcpy(Tmp, FileName.c_str(), FileName.size() + 1); Index: llvm/trunk/lib/Fuzzer/FuzzerIOWindows.cpp =================================================================== --- llvm/trunk/lib/Fuzzer/FuzzerIOWindows.cpp +++ llvm/trunk/lib/Fuzzer/FuzzerIOWindows.cpp @@ -149,6 +149,10 @@ fclose(Temp); } +intptr_t GetHandleFromFd(int fd) { + return _get_osfhandle(fd); +} + static bool IsSeparator(char C) { return C == '\\' || C == '/'; }