dotnet / corert

This repo contains CoreRT, an experimental .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying compiler toolchain.
http://dot.net
MIT License
2.91k stars 510 forks source link

ARM64: Add more cfi data #8336

Closed RalfKornmannEnvision closed 3 years ago

RalfKornmannEnvision commented 3 years ago

While the assembler helpers follow the ARM64 ABI and build a correct chain of frame information the debugger still have trouble to show a correct call stack when it include one of these assembler functions. The callstack either stops with with the last of these functions or shows it like it was called recursive It although makes stepping really slow. 

This fix adds additional cfi data based on the same prolog/epilog macros from CoreCLR. With this additional information the debugger can now show a correct callstack.

The modified macros caused some adjustments.

RalfKornmannEnvision commented 3 years ago

The prolog/epilog macros are now all equal between CoreRT and CoreCLR. This should help merging both projects closer together if needed.

jkotas commented 3 years ago

Thanks!