[x86/Linux][SOS] Fix clrstack command of lldb sosplugin on x86 (#13973)
authorKonstantin Baladurin <k.baladurin@partner.samsung.com>
Thu, 5 Oct 2017 08:31:44 +0000 (11:31 +0300)
committerJan Vorlicek <janvorli@microsoft.com>
Thu, 5 Oct 2017 08:31:44 +0000 (10:31 +0200)
commitde4daccc1ea52ddc1ae8ac9e48cde603c507b868
treec8bf3f40f838811fd4410123fc3e869dc4475cde
parentd0baa73f54eb0f7eba1364e207c02afa984760cb
[x86/Linux][SOS] Fix clrstack command of lldb sosplugin on x86 (#13973)

* [x86/Linux][SOS] Add support for x86 in GetContextFromFrame

It's need for 'clrstack -f' command of SOS plugin on x86.

* [x86/Linux] Fix RtlpGetFunctionEndAddress function

We should use PTR_UNWIND_INFO instead of PUNWIND_INFO for pointer to
UNWIND_INFO structure because it's pointer from other process and
we need to use DAC to read data using it.

* [x86/Linux][SOS] Define DEBUG_STACK_CONTEXT for x86

It's needed for 'clrstack -f' command in libsosplugin.

* [x86/Linux] Fix undefined references in libmscordbi.so on x86

Asm block like following:
__asm fnsave currentFPUState

where currentFPUState is structure works with MSVC but leads to
undefined reference currentFPUState in the binary with other
compilers. So rewrite such asm blocks for them.

This patch fixes error "Unable to load 'libmscordbi.so'" during
execution of 'clrstack -f' command of SOS plugin on x86.

* [x86/Linux] Fix calling convention inconsistency

WINAPI and STDAPI are defined as __cdecl but in some cases functions
with these attributes are called using stdcall calling convention.

It leads to crashes during execution of 'clrstack -i' command of
SOS plugin on x86.
src/ToolBox/SOS/Strike/strike.cpp
src/ToolBox/SOS/lldbplugin/services.cpp
src/debug/di/rsthread.cpp
src/debug/di/valuehome.cpp
src/debug/shim/debugshim.cpp
src/dlls/mscordbi/mscordbi.cpp
src/inc/clrnt.h