diff options
| author | David Tellenbach <david.tellenbach@arm.com> | 2019-10-24 11:11:05 +0100 |
|---|---|---|
| committer | David Tellenbach <david.tellenbach@arm.com> | 2019-10-24 11:11:05 +0100 |
| commit | 93aec861f5293d7d3b444c45e6f78e377840031b (patch) | |
| tree | 6a9d5420fc60b07d0855875064b0a46d8e0f1220 | |
| parent | 612eadb7bc06b8f1a094976e06155f46ebd70d7c (diff) | |
| download | bcm5719-llvm-93aec861f5293d7d3b444c45e6f78e377840031b.tar.gz bcm5719-llvm-93aec861f5293d7d3b444c45e6f78e377840031b.zip | |
Revert "Expose __hwasan_tag_mismatch_stub"
Attribution to author of patch got lost.
This reverts commit 612eadb7bc06b8f1a094976e06155f46ebd70d7c.
| -rw-r--r-- | compiler-rt/lib/hwasan/hwasan_interface_internal.h | 4 | ||||
| -rw-r--r-- | compiler-rt/lib/hwasan/hwasan_linux.cpp | 35 | ||||
| -rw-r--r-- | compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S | 4 |
3 files changed, 17 insertions, 26 deletions
diff --git a/compiler-rt/lib/hwasan/hwasan_interface_internal.h b/compiler-rt/lib/hwasan/hwasan_interface_internal.h index aedda317497..ca57f0fe437 100644 --- a/compiler-rt/lib/hwasan/hwasan_interface_internal.h +++ b/compiler-rt/lib/hwasan/hwasan_interface_internal.h @@ -112,10 +112,6 @@ SANITIZER_INTERFACE_ATTRIBUTE void __hwasan_tag_mismatch(uptr addr, u8 ts); SANITIZER_INTERFACE_ATTRIBUTE -void __hwasan_tag_mismatch4(uptr addr, uptr access_info, uptr *registers_frame, - size_t outsize); - -SANITIZER_INTERFACE_ATTRIBUTE u8 __hwasan_generate_tag(); // Returns the offset of the first tag mismatch or -1 if the whole range is diff --git a/compiler-rt/lib/hwasan/hwasan_linux.cpp b/compiler-rt/lib/hwasan/hwasan_linux.cpp index dfef11883a2..948e40154fe 100644 --- a/compiler-rt/lib/hwasan/hwasan_linux.cpp +++ b/compiler-rt/lib/hwasan/hwasan_linux.cpp @@ -460,6 +460,21 @@ static bool HwasanOnSIGTRAP(int signo, siginfo_t *info, ucontext_t *uc) { return true; } +// Entry point stub for interoperability between __hwasan_tag_mismatch (ASM) and +// the rest of the mismatch handling code (C++). +extern "C" void __hwasan_tag_mismatch_stub(uptr addr, uptr access_info, + uptr *registers_frame) { + AccessInfo ai; + ai.is_store = access_info & 0x10; + ai.recover = false; + ai.addr = addr; + ai.size = 1 << (access_info & 0xf); + + HandleTagMismatch(ai, (uptr)__builtin_return_address(0), + (uptr)__builtin_frame_address(0), nullptr, registers_frame); + __builtin_unreachable(); +} + static void OnStackUnwind(const SignalContext &sig, const void *, BufferedStackTrace *stack) { stack->Unwind(StackTrace::GetNextInstructionPc(sig.pc), sig.bp, sig.context, @@ -478,24 +493,4 @@ void HwasanOnDeadlySignal(int signo, void *info, void *context) { } // namespace __hwasan -// Entry point for interoperability between __hwasan_tag_mismatch (ASM) and the -// rest of the mismatch handling code (C++). -void __hwasan_tag_mismatch4(uptr addr, uptr access_info, uptr *registers_frame, - size_t outsize) { - __hwasan::AccessInfo ai; - ai.is_store = access_info & 0x10; - ai.is_load = !ai.is_store; - ai.recover = access_info & 0x20; - ai.addr = addr; - if ((access_info & 0xf) == 0xf) - ai.size = outsize; - else - ai.size = 1 << (access_info & 0xf); - - __hwasan::HandleTagMismatch(ai, (uptr)__builtin_return_address(0), - (uptr)__builtin_frame_address(0), nullptr, - registers_frame); - __builtin_unreachable(); -} - #endif // SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD diff --git a/compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S b/compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S index 08df12736bb..4c060a61e98 100644 --- a/compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S +++ b/compiler-rt/lib/hwasan/hwasan_tag_mismatch_aarch64.S @@ -135,12 +135,12 @@ __hwasan_tag_mismatch_v2: stp x4, x5, [sp, #32] stp x2, x3, [sp, #16] - // Pass the address of the frame to __hwasan_tag_mismatch4, so that it can + // Pass the address of the frame to __hwasan_tag_mismatch_stub, so that it can // extract the saved registers from this frame without having to worry about // finding this frame. mov x2, sp - bl __hwasan_tag_mismatch4 + bl __hwasan_tag_mismatch_stub CFI_ENDPROC .Lfunc_end0: |

