forked from OSchip/llvm-project
[RISC-V][HWASAN] Save sp address at the start of tag mismatch routine
Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D131574
This commit is contained in:
parent
38b04fd9c0
commit
fba042dabb
|
@ -218,8 +218,8 @@ void HandleTagMismatch(AccessInfo ai, uptr pc, uptr frame, void *uc,
|
|||
registers_frame);
|
||||
}
|
||||
|
||||
void HwasanTagMismatch(uptr addr, uptr access_info, uptr *registers_frame,
|
||||
size_t outsize) {
|
||||
void HwasanTagMismatch(uptr addr, uptr pc, uptr frame, uptr access_info,
|
||||
uptr *registers_frame, size_t outsize) {
|
||||
__hwasan::AccessInfo ai;
|
||||
ai.is_store = access_info & 0x10;
|
||||
ai.is_load = !ai.is_store;
|
||||
|
@ -230,8 +230,7 @@ void HwasanTagMismatch(uptr addr, uptr access_info, uptr *registers_frame,
|
|||
else
|
||||
ai.size = 1 << (access_info & 0xf);
|
||||
|
||||
HandleTagMismatch(ai, (uptr)__builtin_return_address(0),
|
||||
(uptr)__builtin_frame_address(0), nullptr, registers_frame);
|
||||
HandleTagMismatch(ai, pc, frame, nullptr, registers_frame);
|
||||
}
|
||||
|
||||
Thread *GetCurrentThread() {
|
||||
|
@ -599,7 +598,9 @@ void __sanitizer_print_stack_trace() {
|
|||
// rest of the mismatch handling code (C++).
|
||||
void __hwasan_tag_mismatch4(uptr addr, uptr access_info, uptr *registers_frame,
|
||||
size_t outsize) {
|
||||
__hwasan::HwasanTagMismatch(addr, access_info, registers_frame, outsize);
|
||||
__hwasan::HwasanTagMismatch(addr, (uptr)__builtin_return_address(0),
|
||||
(uptr)__builtin_frame_address(0), access_info,
|
||||
registers_frame, outsize);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
|
|
@ -167,8 +167,8 @@ void HandleTagMismatch(AccessInfo ai, uptr pc, uptr frame, void *uc,
|
|||
|
||||
// This dispatches to HandleTagMismatch but sets up the AccessInfo, program
|
||||
// counter, and frame pointer.
|
||||
void HwasanTagMismatch(uptr addr, uptr access_info, uptr *registers_frame,
|
||||
size_t outsize);
|
||||
void HwasanTagMismatch(uptr addr, uptr pc, uptr frame, uptr access_info,
|
||||
uptr *registers_frame, size_t outsize);
|
||||
|
||||
} // namespace __hwasan
|
||||
|
||||
|
|
Loading…
Reference in New Issue