From 26d09040a4cd135332f460cb9e03e42fccb1ead2 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Thu, 23 Jun 2022 12:02:07 +0300 Subject: [PATCH] [K/N] Add own gettid implementation Call-checker can't handle syscalls yet, so instead we wrap it inside function. --- kotlin-native/runtime/src/main/cpp/Porting.cpp | 9 ++++++++- kotlin-native/runtime/src/mm/cpp/CallsChecker.cpp | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/kotlin-native/runtime/src/main/cpp/Porting.cpp b/kotlin-native/runtime/src/main/cpp/Porting.cpp index ca786849c4e..fbc6e06f7b4 100644 --- a/kotlin-native/runtime/src/main/cpp/Porting.cpp +++ b/kotlin-native/runtime/src/main/cpp/Porting.cpp @@ -258,6 +258,13 @@ void onThreadExit(void (*destructor)(void*), void* destructorParameter) { #include #include #include + +/** + * We can't use gettid from glibc 2.30 because it is too new for us. + */ +NO_EXTERNAL_CALLS_CHECK NO_INLINE int gettid() { + return static_cast(syscall(__NR_gettid)); +} #endif NO_EXTERNAL_CALLS_CHECK int currentThreadId() { @@ -278,7 +285,7 @@ NO_EXTERNAL_CALLS_CHECK int currentThreadId() { #elif KONAN_ANDROID return gettid(); #elif KONAN_LINUX - return syscall(__NR_gettid); + return gettid(); #elif KONAN_WINDOWS return GetCurrentThreadId(); #else diff --git a/kotlin-native/runtime/src/mm/cpp/CallsChecker.cpp b/kotlin-native/runtime/src/mm/cpp/CallsChecker.cpp index 625dd539961..18336bd47b5 100644 --- a/kotlin-native/runtime/src/mm/cpp/CallsChecker.cpp +++ b/kotlin-native/runtime/src/mm/cpp/CallsChecker.cpp @@ -146,6 +146,8 @@ extern "C" const char* Kotlin_callsCheckerGoodFunctionNames[] = { "vsnprintf", "bcmp", + "gettid", + "getenv", "setenv", "unsetenv",