diff options
author | hqueue <hqueue@users.noreply.github.com> | 2016-08-12 01:21:41 +0900 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-08-11 09:21:41 -0700 |
commit | c52e05abd98c299e7f65979f65e541e9d76cd4d2 (patch) | |
tree | 5ba97663509b619f00bb2be742ce2dd48717b3d9 /src/coreclr | |
parent | 7a84ab0f876d25464d1493c2d02de45da6f9da7e (diff) | |
download | coreclr-c52e05abd98c299e7f65979f65e541e9d76cd4d2.tar.gz coreclr-c52e05abd98c299e7f65979f65e541e9d76cd4d2.tar.bz2 coreclr-c52e05abd98c299e7f65979f65e541e9d76cd4d2.zip |
ARM: disable stack unwinding using DWARF (#6700)
libunwind for ARM does not interpret ARM vfpv3/NEON
registers in DWARF format correctly.
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Diffstat (limited to 'src/coreclr')
-rw-r--r-- | src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp b/src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp index b4c54ca6e3..e3f7809124 100644 --- a/src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp +++ b/src/coreclr/hosts/unixcoreruncommon/coreruncommon.cpp @@ -285,6 +285,20 @@ int ExecuteManagedAssembly( // Indicates failure int exitCode = -1; +#ifdef _TARGET_ARM_ + // libunwind library is used to unwind stack frame, but libunwind for ARM + // does not support ARM vfpv3/NEON registers in DWARF format correctly. + // Therefore let's disable stack unwinding using DWARF information + // See https://github.com/dotnet/coreclr/issues/6698 + // + // libunwind use following methods to unwind stack frame. + // UNW_ARM_METHOD_ALL 0xFF + // UNW_ARM_METHOD_DWARF 0x01 + // UNW_ARM_METHOD_FRAME 0x02 + // UNW_ARM_METHOD_EXIDX 0x04 + putenv(const_cast<char *>("UNW_ARM_UNWIND_METHOD=6")); +#endif // _TARGET_ARM_ + std::string coreClrDllPath(clrFilesAbsolutePath); coreClrDllPath.append("/"); coreClrDllPath.append(coreClrDll); |