diff --git a/kotlin-native/konan/konan.properties b/kotlin-native/konan/konan.properties index c86daed3449..82ce3b85643 100644 --- a/kotlin-native/konan/konan.properties +++ b/kotlin-native/konan/konan.properties @@ -57,6 +57,8 @@ llvm.macos_x64.user = clang-llvm-apple-8.0.0-darwin-macos llvmInlineThreshold = 100 clangDebugFlags = -O0 +linkerGccFlags = -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed + llvmVersion.linux_x64 = 8.0.0 llvmVersion.mingw_x64 = 8.0.1 llvmVersion.macos_x64 = 8.0.0 diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt index bea69aac0ce..1aea7b129bb 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Configurables.kt @@ -81,6 +81,7 @@ interface GccConfigurables : TargetableConfigurables, ClangFlags { val libGcc get() = targetString("libGcc")!! val dynamicLinker get() = targetString("dynamicLinker")!! val abiSpecificLibraries get() = targetList("abiSpecificLibraries") + val linkerGccFlags get() = targetList("linkerGccFlags") } interface AndroidConfigurables : TargetableConfigurables, ClangFlags diff --git a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt index ebf18a94095..b95dc2db6cc 100644 --- a/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt +++ b/kotlin-native/shared/src/main/kotlin/org/jetbrains/kotlin/konan/target/Linker.kt @@ -369,8 +369,7 @@ class GccBasedLinker(targetProperties: GccConfigurables) // https://github.com/llvm/llvm-project/blob/21e270a479a24738d641e641115bce6af6ed360a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp#L930 if (needsProfileLibrary) +listOf("-u__llvm_profile_runtime", profileLibrary!!) +linkerKonanFlags - +listOf("-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed", - "-lc", "-lgcc", "--as-needed", "-lgcc_s", "--no-as-needed") + +linkerGccFlags +if (dynamic) "$libGcc/crtendS.o" else "$libGcc/crtend.o" +"$absoluteTargetSysRoot/$crtPrefix/crtn.o" +libraries