From 1fef1b1359f36d4e7a7e6b0f97f37e6f88409b3e Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Wed, 6 Mar 2024 16:53:30 -0800 Subject: [PATCH] Update test for more accurate memtag_handle_longjmp Change-Id: Ie5482d343c37ee8cf57a8ce105a0c8a363e5761e --- debuggerd/debuggerd_test.cpp | 9 ++++----- 1 file 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); }