diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index 830077a1e6d..01d5588da11 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -96,7 +96,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration } val sourceInfoType: SourceInfoType get() = configuration.get(BinaryOptions.sourceInfoType) - ?: SourceInfoType.CORESYMBOLICATION.takeIf { debug && target.family.isAppleFamily } + ?: SourceInfoType.CORESYMBOLICATION.takeIf { debug && target.supportsCoreSymbolication() } ?: SourceInfoType.NOOP @@ -227,7 +227,9 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration } } if (shouldCoverLibraries || shouldCoverSources) add("profileRuntime.bc") - add("source_info_core_symbolication.bc") + if (target.supportsCoreSymbolication()) { + add("source_info_core_symbolication.bc") + } if (target.supportsLibBacktrace()) { add("source_info_libbacktrace.bc") add("libbacktrace.bc") diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index bcc8b895ffe..867b5c80abc 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -2669,19 +2669,19 @@ task extend_exception(type: KonanLocalTest) { } standaloneTest("check_stacktrace_format") { - disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') + disabled = !supportsCoreSymbolication(project) || project.globalTestArgs.contains('-opt') flags = ['-g'] source = "runtime/exceptions/check_stacktrace_format.kt" } standaloneTest("check_stacktrace_format_coresymbolication") { - disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') + disabled = !supportsCoreSymbolication(project) || project.globalTestArgs.contains('-opt') flags = ['-g', '-Xbinary=sourceInfoType=coresymbolication'] source = "runtime/exceptions/check_stacktrace_format.kt" } standaloneTest("stack_trace_inline") { - disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') + disabled = !supportsCoreSymbolication(project) || project.globalTestArgs.contains('-opt') flags = ['-g', '-Xg-generate-debug-trampoline=enable', '-Xbinary=sourceInfoType=coresymbolication'] source = "runtime/exceptions/stack_trace_inline.kt" // test on simulator is writing Invalid connection: com.apple.coresymbolicationd by unknown reason @@ -2690,14 +2690,13 @@ standaloneTest("stack_trace_inline") { } standaloneTest("stack_trace_out_of_bounds") { - disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') || (project.testTarget == 'ios_arm64') + disabled = !supportsCoreSymbolication(project) || project.globalTestArgs.contains('-opt') || (project.testTarget == 'ios_arm64') flags = ['-g', '-Xg-generate-debug-trampoline=enable', '-Xbinary=stripDebugInfoFromNativeLibs=false'] source = "runtime/exceptions/stack_trace_out_of_bounds.kt" } - standaloneTest("kt-37572") { - disabled = !isAppleTarget(project) || project.globalTestArgs.contains('-opt') + disabled = !supportsCoreSymbolication(project) || project.globalTestArgs.contains('-opt') flags = ['-g', '-Xbinary=sourceInfoType=coresymbolication'] source = "runtime/exceptions/kt-37572.kt" // test on simulator is writing Invalid connection: com.apple.coresymbolicationd by unknown reason diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/PlatformInfo.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/PlatformInfo.kt index 7db3615d342..7d8a43decba 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/PlatformInfo.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/PlatformInfo.kt @@ -42,6 +42,11 @@ object PlatformInfo { return getTarget(project).supportsLibBacktrace() } + @JvmStatic + fun supportsCoreSymbolication(project: Project): Boolean { + return getTarget(project).supportsCoreSymbolication() + } + @JvmStatic fun checkXcodeVersion(project: Project) { val properties = PropertiesProvider(project) diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt index 80e2d264ea5..73cbe5b9d15 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/Utils.kt @@ -328,6 +328,9 @@ fun targetSupportsMimallocAllocator(targetName: String) = fun targetSupportsLibBacktrace(targetName: String) = HostManager().targetByName(targetName).supportsLibBacktrace() +fun targetSupportsCoreSymbolication(targetName: String) = + HostManager().targetByName(targetName).supportsCoreSymbolication() + fun Project.mergeManifestsByTargets(source: File, destination: File) { logger.info("Merging manifests: $source -> $destination") diff --git a/kotlin-native/runtime/build.gradle.kts b/kotlin-native/runtime/build.gradle.kts index af2f1c2a394..3fe6816be30 100644 --- a/kotlin-native/runtime/build.gradle.kts +++ b/kotlin-native/runtime/build.gradle.kts @@ -122,6 +122,7 @@ bitcode { create("source_info_core_symbolication", file("src/source_info/core_symbolication")) { includeRuntime() + onlyIf { targetSupportsCoreSymbolication(target) } } create("source_info_libbacktrace", file("src/source_info/libbacktrace")) { includeRuntime() diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTargetExtenstions.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTargetExtenstions.kt index e42986f0d2c..3dc2ae853a7 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTargetExtenstions.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/KonanTargetExtenstions.kt @@ -31,6 +31,10 @@ fun KonanTarget.supportsMimallocAllocator(): Boolean = fun KonanTarget.supportsLibBacktrace(): Boolean = this.family.isAppleFamily || this.family == Family.LINUX || this.family == Family.ANDROID +fun KonanTarget.supportsCoreSymbolication(): Boolean = + this.family.isAppleFamily + + fun KonanTarget.supportsThreads(): Boolean = when(this) { is KonanTarget.WASM32 -> false