diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt index 337435f3057..e5aec0011ac 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/LinkStage.kt @@ -69,6 +69,7 @@ internal open class MacOSBasedPlatform(distribution: Distribution) : PlatformFlags(distribution) { override val linker = "${distribution.sysRoot}/usr/bin/ld" + private val dsymutil = "${distribution.llvmBin}/llvm-dsymutil" open val osVersionMin = listOf( propertyTargetString("osVersionMinFlagLd"), @@ -90,6 +91,14 @@ internal open class MacOSBasedPlatform(distribution: Distribution) linkerKonanFlags + listOf("-lSystem") } + + open fun dsymutilCommand(executable: ExecutableFile): List { + return listOf(dsymutil, executable) + } + + open fun dsymutilDryRunVerboseCommand(executable: ExecutableFile): List { + return listOf(dsymutil, "-dump-debug-map" ,executable) + } } internal open class LinuxBasedPlatform(distribution: Distribution) @@ -222,6 +231,11 @@ internal class LinkStage(val context: Context) { entryPointSelector runTool(*linkCommand.toTypedArray()) + if (platform is MacOSBasedPlatform && context.shouldContainDebugInfo()) { + if (context.phase?.verbose ?: false) + runTool(*platform.dsymutilDryRunVerboseCommand(executable).toTypedArray()) + runTool(*platform.dsymutilCommand(executable).toTypedArray()) + } return executable }