Add Kotlin object inspection to simplify debugging (#763)

This commit is contained in:
Nikolay Igotti
2017-08-02 18:55:52 +03:00
committed by GitHub
parent eabe2435bf
commit beb10306dd
10 changed files with 283 additions and 77 deletions
@@ -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
+10 -9
View File
@@ -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