diff --git a/stdlib/public/stubs/LibcShims.cpp b/stdlib/public/stubs/LibcShims.cpp index 0140772ee147a..39c2d3643a61f 100644 --- a/stdlib/public/stubs/LibcShims.cpp +++ b/stdlib/public/stubs/LibcShims.cpp @@ -30,10 +30,12 @@ using namespace swift; static_assert(std::is_same::value, "__swift_ssize_t must be defined as equivalent to ssize_t"); +SWIFT_RUNTIME_STDLIB_INTERFACE void swift::_swift_stdlib_free(void *ptr) { free(ptr); } +SWIFT_RUNTIME_STDLIB_INTERFACE int swift::_swift_stdlib_putchar_unlocked(int c) { #if defined(_MSC_VER) return _putc_nolock(c, stdout); @@ -42,21 +44,25 @@ int swift::_swift_stdlib_putchar_unlocked(int c) { #endif } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_size_t swift::_swift_stdlib_fwrite_stdout(const void *ptr, __swift_size_t size, __swift_size_t nitems) { return fwrite(ptr, size, nitems, stdout); } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_size_t swift::_swift_stdlib_strlen(const char *s) { return strlen(s); } +SWIFT_RUNTIME_STDLIB_INTERFACE int swift::_swift_stdlib_memcmp(const void *s1, const void *s2, __swift_size_t n) { return memcmp(s1, s2, n); } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_ssize_t swift::_swift_stdlib_read(int fd, void *buf, __swift_size_t nbyte) { #if defined(_MSC_VER) @@ -66,6 +72,7 @@ swift::_swift_stdlib_read(int fd, void *buf, __swift_size_t nbyte) { #endif } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_ssize_t swift::_swift_stdlib_write(int fd, const void *buf, __swift_size_t nbyte) { #if defined(_MSC_VER) @@ -75,6 +82,7 @@ swift::_swift_stdlib_write(int fd, const void *buf, __swift_size_t nbyte) { #endif } +SWIFT_RUNTIME_STDLIB_INTERFACE int swift::_swift_stdlib_close(int fd) { #if defined(_MSC_VER) return _close(fd); @@ -85,21 +93,25 @@ int swift::_swift_stdlib_close(int fd) { #if defined(__APPLE__) #include +SWIFT_RUNTIME_STDLIB_INTERFACE size_t swift::_swift_stdlib_malloc_size(const void *ptr) { return malloc_size(ptr); } #elif defined(__GNU_LIBRARY__) || defined(__CYGWIN__) || defined(__ANDROID__) #include +SWIFT_RUNTIME_STDLIB_INTERFACE size_t swift::_swift_stdlib_malloc_size(const void *ptr) { return malloc_usable_size(const_cast(ptr)); } #elif defined(_MSC_VER) #include +SWIFT_RUNTIME_STDLIB_INTERFACE size_t swift::_swift_stdlib_malloc_size(const void *ptr) { return _msize(const_cast(ptr)); } #elif defined(__FreeBSD__) #include +SWIFT_RUNTIME_STDLIB_INTERFACE size_t swift::_swift_stdlib_malloc_size(const void *ptr) { return malloc_usable_size(const_cast(ptr)); } @@ -113,10 +125,12 @@ static std::mt19937 &getGlobalMT19937() { return theGlobalMT19937.get(); } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_uint32_t swift::_swift_stdlib_cxx11_mt19937() { return getGlobalMT19937()(); } +SWIFT_RUNTIME_STDLIB_INTERFACE __swift_uint32_t swift::_swift_stdlib_cxx11_mt19937_uniform(__swift_uint32_t upper_bound) { if (upper_bound > 0) @@ -125,24 +139,30 @@ swift::_swift_stdlib_cxx11_mt19937_uniform(__swift_uint32_t upper_bound) { return RandomUniform(getGlobalMT19937()); } +SWIFT_RUNTIME_STDLIB_INTERFACE float swift::_swift_stdlib_remainderf(float dividend, float divisor) { return std::remainder(dividend, divisor); } +SWIFT_RUNTIME_STDLIB_INTERFACE float swift::_swift_stdlib_squareRootf(float x) { return std::sqrt(x); } +SWIFT_RUNTIME_STDLIB_INTERFACE double swift::_swift_stdlib_remainder(double dividend, double divisor) { return std::remainder(dividend, divisor); } +SWIFT_RUNTIME_STDLIB_INTERFACE double swift::_swift_stdlib_squareRoot(double x) { return std::sqrt(x); } #if (defined __i386__ || defined __x86_64__) && !defined _MSC_VER +SWIFT_RUNTIME_STDLIB_INTERFACE void swift::_swift_stdlib_remainderl(void *_self, const void *_other) { *(long double *)_self = std::remainder(*(long double *)_self, *(const long double *)_other); } +SWIFT_RUNTIME_STDLIB_INTERFACE void swift::_swift_stdlib_squareRootl(void *_self) { *(long double *)_self = std::sqrt(*(long double *)_self); }