diff options
author | Stella Stamenova <stilis@microsoft.com> | 2018-05-17 21:42:37 +0000 |
---|---|---|
committer | Stella Stamenova <stilis@microsoft.com> | 2018-05-17 21:42:37 +0000 |
commit | 5b5350ddee0957db31812f544655f06570fa436d (patch) | |
tree | b007bc2b29c04c4a18099c7aa5459c55fefea585 /clang/lib/CodeGen/CoverageMappingGen.cpp | |
parent | 0fd67b537bdf5afe09dff10ff3fe325c1a949efe (diff) | |
download | llvm-5b5350ddee0957db31812f544655f06570fa436d.zip llvm-5b5350ddee0957db31812f544655f06570fa436d.tar.gz llvm-5b5350ddee0957db31812f544655f06570fa436d.tar.bz2 |
[Windows, Process] LLDB reads wrong registers on 64bit Windows
Summary: LLDB reads wrong registers on 64bit Windows because RegisterContextWindows_x64::GetRegisterInfoAtIndex returns wrong reference.
I encountered broken backtrace when the program stopped at function which does not have prologue code, such as compiled with '-fomit-frame-pointer'.
In this situation, CFA is equal to rsp but LLDB reads r9.
RegisterContextWindows_x64::GetRegisterInfoAtIndex depends the order of lldb_XXX_x86_64 values, but RegisterIndex/g_register_infos/g_gpr_reg_indices does not follow order.
In source/Plugins/Process/Utility/lldb-x86-register-enums.h
The order of GPRs is rax, rbx, rcx, rdx, rdi, rsi, rbp, rsp, r8, ...
In source/Plugins/Process/Windows/Common/x64/RegisterContextWindows_x64.cpp
The order of GPRs is rax, rbx, rcx, rdx, rdi, rsi, r8, r9, r10, ...
Patch by Kenji Koyanagi
llvm-svn: 332671
Diffstat (limited to 'clang/lib/CodeGen/CoverageMappingGen.cpp')
0 files changed, 0 insertions, 0 deletions