From 0a33d9d2fcf3fcd05dbb47e26e314a51ce814a87 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Thu, 28 Jan 2021 14:42:02 +0700 Subject: [PATCH] Add a test-case for KT-43502 --- .../backend.native/tests/build.gradle | 24 +++++++++++++++++++ .../tests/interop/kt43502/kt43502.c | 1 + .../tests/interop/kt43502/kt43502.def | 2 ++ .../tests/interop/kt43502/kt43502.h | 1 + .../tests/interop/kt43502/main.c | 5 ++++ .../tests/interop/kt43502/main.kt | 5 ++++ 6 files changed, 38 insertions(+) create mode 100644 kotlin-native/backend.native/tests/interop/kt43502/kt43502.c create mode 100644 kotlin-native/backend.native/tests/interop/kt43502/kt43502.def create mode 100644 kotlin-native/backend.native/tests/interop/kt43502/kt43502.h create mode 100644 kotlin-native/backend.native/tests/interop/kt43502/main.c create mode 100644 kotlin-native/backend.native/tests/interop/kt43502/main.kt diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index f3367aea24c..fe822e540c2 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -3759,6 +3759,22 @@ createInterop("kt43265") { it.defFile 'interop/kt43265/kt43265.def' } +createInterop("kt43502") { + it.defFile 'interop/kt43502/kt43502.def' + it.headers "$projectDir/interop/kt43502/kt43502.h" + // Note: also hardcoded in def file. + final String libDir = "$buildDir/kt43502/" + // Construct library that contains actual symbol definition. + it.getByTarget(target.name).doFirst { + UtilsKt.buildStaticLibrary( + project, + [file("$projectDir/interop/kt43502/kt43502.c")], + file("$libDir/kt43502.a"), + file("$libDir/kt43502.objs"), + ) + } +} + createInterop("leakMemoryWithRunningThread") { it.defFile 'interop/leakMemoryWithRunningThread/leakMemory.def' it.headers "$projectDir/interop/leakMemoryWithRunningThread/leakMemory.h" @@ -4080,6 +4096,14 @@ interopTest("interop_kt43265") { source = "interop/kt43265/usage.kt" } +dynamicTest("interop_kt43502") { + disabled = (project.testTarget == 'wasm32') // No interop for wasm yet. + interop = "kt43502" + source = "interop/kt43502/main.kt" + cSource = "$projectDir/interop/kt43502/main.c" + goldValue = "null\n" +} + interopTest("interop_leakMemoryWithRunningThreadUnchecked") { disabled = (project.testTarget == 'wasm32') // No interop for wasm yet. interop = 'leakMemoryWithRunningThread' diff --git a/kotlin-native/backend.native/tests/interop/kt43502/kt43502.c b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.c new file mode 100644 index 00000000000..526961997ac --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.c @@ -0,0 +1 @@ +char **externPtr = 0; \ No newline at end of file diff --git a/kotlin-native/backend.native/tests/interop/kt43502/kt43502.def b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.def new file mode 100644 index 00000000000..21bf04117c8 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.def @@ -0,0 +1,2 @@ +libraryPaths = backend.native/tests/build/kt43502 +staticLibraries = kt43502.a \ No newline at end of file diff --git a/kotlin-native/backend.native/tests/interop/kt43502/kt43502.h b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.h new file mode 100644 index 00000000000..703b5570bc2 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/kt43502/kt43502.h @@ -0,0 +1 @@ +extern char **externPtr; \ No newline at end of file diff --git a/kotlin-native/backend.native/tests/interop/kt43502/main.c b/kotlin-native/backend.native/tests/interop/kt43502/main.c new file mode 100644 index 00000000000..e25e1244199 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/kt43502/main.c @@ -0,0 +1,5 @@ +#include "libinterop_kt43502_api.h" + +int main() { + libinterop_kt43502_symbols()->kotlin.root.printExternPtr(); +} \ No newline at end of file diff --git a/kotlin-native/backend.native/tests/interop/kt43502/main.kt b/kotlin-native/backend.native/tests/interop/kt43502/main.kt new file mode 100644 index 00000000000..45dbd9b03a9 --- /dev/null +++ b/kotlin-native/backend.native/tests/interop/kt43502/main.kt @@ -0,0 +1,5 @@ +import kt43502.* + +fun printExternPtr() { + println(externPtr) +} \ No newline at end of file