Skip to content

stdlib: mark shims with the visibility attribute #5349

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 18, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions stdlib/public/stubs/LibcShims.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ using namespace swift;
static_assert(std::is_same<ssize_t, swift::__swift_ssize_t>::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);
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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);
Expand All @@ -85,21 +93,25 @@ int swift::_swift_stdlib_close(int fd) {

#if defined(__APPLE__)
#include <malloc/malloc.h>
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 <malloc.h>
SWIFT_RUNTIME_STDLIB_INTERFACE
size_t swift::_swift_stdlib_malloc_size(const void *ptr) {
return malloc_usable_size(const_cast<void *>(ptr));
}
#elif defined(_MSC_VER)
#include <malloc.h>
SWIFT_RUNTIME_STDLIB_INTERFACE
size_t swift::_swift_stdlib_malloc_size(const void *ptr) {
return _msize(const_cast<void *>(ptr));
}
#elif defined(__FreeBSD__)
#include <malloc_np.h>
SWIFT_RUNTIME_STDLIB_INTERFACE
size_t swift::_swift_stdlib_malloc_size(const void *ptr) {
return malloc_usable_size(const_cast<void *>(ptr));
}
Expand All @@ -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)
Expand All @@ -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);
}
Expand Down