From f6f050ff6863cae382aa1fc1a8ae974960d8c037 Mon Sep 17 00:00:00 2001 From: Sergey Bogolepov Date: Wed, 10 Feb 2021 13:42:51 +0700 Subject: [PATCH] Fix KT-44295 builtins "header" is included in both builtin and posix platform libraries, but only posix has declarations for builtin structs (e.g. __va_list_tag). Library resolver by default has no guarantee on order of resolved libraries which causes KT-44295. To make results of `KotlinLibraryResolver` stable we pass TopologicalLibraryOrder to `getFullList` and specify a dependency of builtin on posix --- .../kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt | 3 ++- kotlin-native/platformLibs/src/platform/android/builtin.def | 1 + kotlin-native/platformLibs/src/platform/linux/builtin.def | 1 + kotlin-native/platformLibs/src/platform/mingw/builtin.def | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt index e7d58b300f1..8f4987ee357 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/jvm/main.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.util.KonanHomeProvider import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.packageFqName +import org.jetbrains.kotlin.library.resolver.TopologicalLibraryOrder import org.jetbrains.kotlin.library.resolver.impl.KotlinLibraryResolverImpl import org.jetbrains.kotlin.library.resolver.impl.libraryResolver import org.jetbrains.kotlin.library.toUnresolvedLibraries @@ -430,7 +431,7 @@ private fun resolveDependencies( noStdLib = false, noDefaultLibs = noDefaultLibs, noEndorsedLibs = noEndorsedLibs - ).getFullList() + ).getFullList(TopologicalLibraryOrder) } internal fun prepareTool(target: String?, flavor: KotlinPlatform): ToolConfig { diff --git a/kotlin-native/platformLibs/src/platform/android/builtin.def b/kotlin-native/platformLibs/src/platform/android/builtin.def index d7d93621827..b106a84964e 100644 --- a/kotlin-native/platformLibs/src/platform/android/builtin.def +++ b/kotlin-native/platformLibs/src/platform/android/builtin.def @@ -1,3 +1,4 @@ +depends = posix package = platform.builtin headerFilter = language = C diff --git a/kotlin-native/platformLibs/src/platform/linux/builtin.def b/kotlin-native/platformLibs/src/platform/linux/builtin.def index d7d93621827..b106a84964e 100644 --- a/kotlin-native/platformLibs/src/platform/linux/builtin.def +++ b/kotlin-native/platformLibs/src/platform/linux/builtin.def @@ -1,3 +1,4 @@ +depends = posix package = platform.builtin headerFilter = language = C diff --git a/kotlin-native/platformLibs/src/platform/mingw/builtin.def b/kotlin-native/platformLibs/src/platform/mingw/builtin.def index d7d93621827..b106a84964e 100644 --- a/kotlin-native/platformLibs/src/platform/mingw/builtin.def +++ b/kotlin-native/platformLibs/src/platform/mingw/builtin.def @@ -1,3 +1,4 @@ +depends = posix package = platform.builtin headerFilter = language = C