Fix Unix ARM floating point registers unwinding (#58915) (#358) accepted/tizen/unified/20240112.154601
author이형주/MDE Lab(SR)/삼성전자 <leee.lee@samsung.com>
Thu, 11 Jan 2024 03:37:30 +0000 (12:37 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 11 Jan 2024 03:37:30 +0000 (12:37 +0900)
commit995f079cddebd9d31a3f9cf1a91b50edb976a5ba
tree5c9e3009135f2cd19490c93a8fe337d691f8822c
parentbf59e7d233d5157ad1954990096f7dcbfa0e5814
Fix Unix ARM floating point registers unwinding (#58915) (#358)

* Fix Unix ARM floating point registers unwinding

There are two problems unwinding ARM floating point registers. One is that the PAL_VirtualUnwind
is not supporting that and the second is that the libunwind we carry and use actually doesn't
have support for unwinding those.

This change updates the libunwind so that both exidx and dwarf ways of unwinding can unwind
these registers and also adds support to our PAL_VirtualUnwind to copy the callee saved
floating point registers D8..D15 between the native and windows style contexts.

I am planning to make a PR for the libunwind upstream, but given the very low amount of time
we have remaining for .NET 6 completion, I am making the change here first. Once I get them
upstream later, I'll update the whole libunwind from there.

* Enable the related test

Co-authored-by: Jan Vorlicek <jan.vorlicek@volny.cz>
src/coreclr/pal/src/exception/seh-unwind.cpp
src/coreclr/pal/src/libunwind/include/libunwind-arm.h
src/coreclr/pal/src/libunwind/src/arm/Gex_tables.c
src/coreclr/pal/src/libunwind/src/arm/Gget_save_loc.c
src/coreclr/pal/src/libunwind/src/arm/Ginit.c
src/coreclr/pal/src/libunwind/src/arm/Gregs.c
src/coreclr/pal/src/libunwind/src/arm/init.h
src/tests/JIT/IL_Conformance/Convert/TestConvertFromIntegral.csproj