--- origsrc/libc/src/__support/OSUtil/windows/io.cpp 2025-04-02 08:44:12.000000000 +0900 +++ src/libc/src/__support/OSUtil/windows/io.cpp 2025-04-21 02:00:29.237914500 +0900 @@ -19,7 +19,7 @@ namespace LIBC_NAMESPACE_DECL { void write_to_stderr(cpp::string_view msg) { ::HANDLE stream = ::GetStdHandle(STD_ERROR_HANDLE); - ::WriteFile(stream, msg.data(), msg.size(), nullptr, nullptr); + ::WriteFile(stream, msg.data(), (DWORD)msg.size(), nullptr, nullptr); } } // namespace LIBC_NAMESPACE_DECL --- origsrc/libc/src/__support/time/windows/clock_gettime.cpp 2025-04-02 08:44:12.000000000 +0900 +++ src/libc/src/__support/time/windows/clock_gettime.cpp 2025-04-21 02:11:23.878395300 +0900 @@ -18,6 +18,9 @@ #define WIN32_LEAN_AND_MEAN #define NOMINMAX +#ifdef __CYGWIN__ +#include +#endif #include namespace LIBC_NAMESPACE_DECL { --- origsrc/libc/src/__support/time/windows/performance_counter.h 2025-04-02 08:44:12.000000000 +0900 +++ src/libc/src/__support/time/windows/performance_counter.h 2025-04-21 02:11:08.829971800 +0900 @@ -11,6 +11,9 @@ #define WIN32_LEAN_AND_MEAN #define NOMINMAX +#ifdef __CYGWIN__ +#undef fract +#endif #include namespace LIBC_NAMESPACE_DECL { --- origsrc/libc/src/time/windows/clock_getres.cpp 2025-04-02 08:44:12.000000000 +0900 +++ src/libc/src/time/windows/clock_getres.cpp 2025-04-21 02:16:00.167851700 +0900 @@ -23,8 +23,17 @@ #define NOMINMAX #include +#ifdef __CYGWIN__ +extern "C" +BOOL GetSystemTimeAdjustmentPrecise( + PDWORD64 lpTimeAdjustment, + PDWORD64 lpTimeIncrement, + PBOOL lpTimeAdjustmentDisabled +); +#else // add in dependencies for GetSystemTimeAdjustmentPrecise #pragma comment(lib, "mincore.lib") +#endif namespace LIBC_NAMESPACE_DECL { LLVM_LIBC_FUNCTION(int, clock_getres, (clockid_t id, struct timespec *res)) { --- origsrc/libc/src/unistd/windows/getentropy.cpp 2025-04-02 08:44:12.000000000 +0900 +++ src/libc/src/unistd/windows/getentropy.cpp 2025-04-21 02:25:49.933088500 +0900 @@ -15,15 +15,25 @@ #include #include #include +#ifndef __CYGWIN__ #pragma comment(lib, "bcrypt.lib") +#endif namespace LIBC_NAMESPACE_DECL { LLVM_LIBC_FUNCTION(int, getentropy, (void *buffer, size_t length)) { +#ifdef __CYGWIN__ + do { +#else __try { +#endif // check the length limit if (length > 256) +#ifdef __CYGWIN__ + break; +#else __leave; +#endif NTSTATUS result = ::BCryptGenRandom(nullptr, static_cast(buffer), static_cast(length), @@ -32,9 +42,13 @@ LLVM_LIBC_FUNCTION(int, getentropy, (voi if (result == STATUS_SUCCESS) return 0; +#ifdef __CYGWIN__ + } while (false); +#else } __except (EXCEPTION_EXECUTE_HANDLER) { // no need to handle exceptions specially } +#endif libc_errno = EIO; return -1;