summaryrefslogtreecommitdiff
path: root/debuggerd
diff options
context:
space:
mode:
authorFlorian Mayer <fmayer@google.com>2024-03-06 16:53:30 -0800
committerFlorian Mayer <fmayer@google.com>2024-03-07 17:12:57 -0800
commit1fef1b1359f36d4e7a7e6b0f97f37e6f88409b3e (patch)
tree19886183dfd6dedc8b6a3e951a7cc3975a95b5a2 /debuggerd
parente6462f91c2de269e06346cf7a736c9ec3061e00b (diff)
downloadcore-1fef1b1359f36d4e7a7e6b0f97f37e6f88409b3e.tar.gz
Update test for more accurate memtag_handle_longjmp
Change-Id: Ie5482d343c37ee8cf57a8ce105a0c8a363e5761e
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/debuggerd_test.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/debuggerd/debuggerd_test.cpp b/debuggerd/debuggerd_test.cpp
index 3135d9e50..526e2ca34 100644
--- a/debuggerd/debuggerd_test.cpp
+++ b/debuggerd/debuggerd_test.cpp
@@ -603,11 +603,10 @@ TEST_P(SizeParamCrasherTest, mte_underflow) {
}
__attribute__((noinline)) void mte_illegal_setjmp_helper(jmp_buf& jump_buf) {
- // Because the detection of illegal setjmp is done relative to the SP in setjmp,
- // we need to make sure this stack frame is bigger than the one of setjmp.
- // TODO(fmayer): fix that bug and remove the workaround.
- volatile char buf[1024];
- buf[0] = '1';
+ // This frame is at least 8 bytes for storing and restoring the LR before the
+ // setjmp below. So this can never get an empty stack frame, even if we omit
+ // the frame pointer. So, the SP of this is always less (numerically) than the
+ // calling function frame.
setjmp(jump_buf);
}