Add Kotlin object inspection to simplify debugging (#763)
This commit is contained in:
+9
-5
@@ -211,6 +211,10 @@ internal class LinkStage(val context: Context) {
|
||||
private val emitted = context.bitcodeFileName
|
||||
private val libraries = context.config.libraries
|
||||
|
||||
private fun MutableList<String>.addNonEmpty(elements: List<String>) {
|
||||
addAll(elements.filter { !it.isEmpty() })
|
||||
}
|
||||
|
||||
private fun llvmLto(files: List<BitcodeFile>): ObjectFile {
|
||||
val tmpCombined = createTempFile("combined", ".o")
|
||||
tmpCombined.deleteOnExit()
|
||||
@@ -218,13 +222,13 @@ internal class LinkStage(val context: Context) {
|
||||
|
||||
val tool = distribution.llvmLto
|
||||
val command = mutableListOf(tool, "-o", combined)
|
||||
command.addAll(platform.llvmLtoFlags)
|
||||
command.addNonEmpty(platform.llvmLtoFlags)
|
||||
when {
|
||||
optimize -> command.addAll(platform.llvmLtoOptFlags)
|
||||
debug -> command.addAll(platform.llvmDebugOptFlags)
|
||||
else -> command.addAll(platform.llvmLtoNooptFlags)
|
||||
optimize -> command.addNonEmpty(platform.llvmLtoOptFlags)
|
||||
debug -> command.addNonEmpty(platform.llvmDebugOptFlags)
|
||||
else -> command.addNonEmpty(platform.llvmLtoNooptFlags)
|
||||
}
|
||||
command.addAll(files)
|
||||
command.addNonEmpty(files)
|
||||
runTool(*command.toTypedArray())
|
||||
|
||||
return combined
|
||||
|
||||
@@ -30,7 +30,7 @@ targetToolchain.osx = clang-llvm-3.9.0-darwin-macos
|
||||
arch.osx = x86_64
|
||||
targetSysRoot.osx = target-sysroot-1-darwin-macos
|
||||
libffiDir.osx = libffi-3.2.1-2-darwin-macos
|
||||
llvmLtoFlags.osx = -exported-symbol=_Konan_main
|
||||
llvmLtoFlags.osx =
|
||||
llvmLtoOptFlags.osx = -O3 -function-sections
|
||||
llvmLtoNooptFlags.osx = -O1
|
||||
linkerKonanFlags.osx = -lc++
|
||||
@@ -55,7 +55,7 @@ arch.ios = arm64
|
||||
entrySelector.ios = -alias _Konan_main _main
|
||||
targetSysRoot.ios = target-sysroot-2-darwin-ios
|
||||
libffiDir.ios = libffi-3.2.1-2-darwin-ios
|
||||
llvmLtoFlags.ios = -exported-symbol=_Konan_main
|
||||
llvmLtoFlags.ios =
|
||||
llvmLtoOptFlags.ios = -O3 -function-sections
|
||||
linkerDebugFlags.ios = -S
|
||||
llvmLtoNooptFlags.ios = -O1
|
||||
@@ -76,7 +76,7 @@ arch.ios_sim = x86_64
|
||||
entrySelector.ios_sim = -alias _Konan_main _main
|
||||
targetSysRoot.ios_sim = target-sysroot-1-darwin-ios-sim
|
||||
libffiDir.ios_sim = libffi-3.2.1-2-darwin-ios-sim
|
||||
llvmLtoFlags.ios_sim = -exported-symbol=_Konan_main
|
||||
llvmLtoFlags.ios_sim =
|
||||
llvmLtoOptFlags.ios_sim = -O3 -function-sections
|
||||
llvmLtoNooptFlags.ios_sim = -O1
|
||||
linkerKonanFlags.ios_sim = -lc++
|
||||
@@ -97,7 +97,7 @@ targetSysRoot.linux = target-gcc-toolchain-3-linux-x86-64/x86_64-unknown-linux-g
|
||||
libffiDir.linux = libffi-3.2.1-2-linux-x86-64
|
||||
# targetSysroot-relative.
|
||||
libGcc.linux = ../../lib/gcc/x86_64-unknown-linux-gnu/4.8.5
|
||||
llvmLtoFlags.linux = -exported-symbol=Konan_main
|
||||
llvmLtoFlags.linux =
|
||||
llvmLtoOptFlags.linux = -O3 -function-sections
|
||||
llvmLtoNooptFlags.linux = -O1
|
||||
llvmLlcFlags.linux = -march=x86-64
|
||||
@@ -132,7 +132,7 @@ libffiDir.raspberrypi = libffi-3.2.1-2-raspberrypi
|
||||
linkerKonanFlags.raspberrypi = -Bstatic -lstdc++ -Bdynamic -ldl -lm -lpthread
|
||||
# targetSysroot-relative.
|
||||
libGcc.raspberrypi = lib/gcc/arm-linux-gnueabihf/4.8.3
|
||||
llvmLtoFlags.raspberrypi = -exported-symbol=Konan_main
|
||||
llvmLtoFlags.raspberrypi =
|
||||
llvmLtoOptFlags.raspberrypi = -O3 -function-sections
|
||||
llvmLtoNooptFlags.raspberrypi = -O1
|
||||
dynamicLinker.raspberrypi = /lib/ld-linux-armhf.so.3
|
||||
@@ -159,7 +159,7 @@ dependencies.linux-android_arm32 = \
|
||||
|
||||
quadruple.android_arm32 = arm-linux-androideabi
|
||||
entrySelector.android_arm32 = -Wl,--defsym -Wl,main=Konan_main
|
||||
llvmLtoFlags.android_arm32 = -exported-symbol=Konan_main -emulated-tls -relocation-model=pic
|
||||
llvmLtoFlags.android_arm32 = -emulated-tls -relocation-model=pic
|
||||
llvmLtoOptFlags.android_arm32 = -O3 -function-sections
|
||||
linkerDebugFlags.android_arm32 = -Wl,-S
|
||||
llvmLtoNooptFlags.android_arm32 = -O1
|
||||
@@ -184,7 +184,7 @@ dependencies.linux-android_arm64 = \
|
||||
|
||||
quadruple.android_arm64 = aarch64-linux-android
|
||||
entrySelector.android_arm64 = -Wl,--defsym -Wl,main=Konan_main
|
||||
llvmLtoFlags.android_arm64 = -exported-symbol=Konan_main -emulated-tls -relocation-model=pic
|
||||
llvmLtoFlags.android_arm64 = -emulated-tls -relocation-model=pic
|
||||
targetSysRoot.android_arm64 = target-sysroot-21-android_arm64
|
||||
libffiDir.android_arm64 = libffi-3.2.1-2-android_arm64
|
||||
linkerKonanFlags.android_arm64 = -lm -latomic -lstdc++ -landroid
|
||||
@@ -198,7 +198,7 @@ targetToolchain.mingw = msys2-mingw-w64-x86_64-gcc-6.3.0-clang-llvm-3.9.1-window
|
||||
quadruple.mingw = x86_64-w64-mingw32
|
||||
targetSysRoot.mingw = msys2-mingw-w64-x86_64-gcc-6.3.0-clang-llvm-3.9.1-windows-x86-64
|
||||
libffiDir.mingw = libffi-3.2.1-mingw-w64-x86-64
|
||||
llvmLtoFlags.mingw = -exported-symbol=Konan_main
|
||||
llvmLtoFlags.mingw =
|
||||
llvmLtoOptFlags.mingw = -O3 -function-sections
|
||||
llvmLtoNooptFlags.mingw = -O1
|
||||
linkerDebugFlags.mingw = -Wl,-S
|
||||
@@ -219,10 +219,11 @@ dependencies.osx-wasm32 = \
|
||||
|
||||
quadruple.wasm32 = wasm32
|
||||
entrySelector.wasm32 = -Wl,--defsym -Wl,main=Konan_main
|
||||
llvmLtoFlags.wasm32 = -exported-symbol=Konan_main
|
||||
llvmLtoFlags.wasm32 =
|
||||
targetSysRoot.wasm32 = target-sysroot-1-wasm
|
||||
clangFlags.wasm32 = -O1 -fno-rtti -fno-exceptions \
|
||||
-D_LIBCPP_ABI_VERSION=2 -DKONAN_NO_FFI=1 -DKONAN_NO_THREADS=1 -DKONAN_NO_EXCEPTIONS=1 \
|
||||
-DKONAN_NO_DEBUG_API=1 \
|
||||
-nostdinc -Xclang -nobuiltininc -Xclang -nostdsysteminc \
|
||||
-Xclang -isystem<sysrootDir>/include/libcxx -Xclang -isystem<sysrootDir>/lib/libcxxabi/include \
|
||||
-Xclang -isystem<sysrootDir>/include/compat -Xclang -isystem<sysrootDir>/include/libc
|
||||
|
||||
Reference in New Issue
Block a user