Update Marl to 13e0eb522
Changes:
13e0eb5222 Untag memory used for stack
Commands:
./third_party/update-marl.sh
Bug: b/140546382
Change-Id: I8ec0845f57336cef5ba3b01f4f4f33d4944b01d4
diff --git a/third_party/marl/src/osfiber_aarch64.c b/third_party/marl/src/osfiber_aarch64.c
index cc61ae7..536fab9 100644
--- a/third_party/marl/src/osfiber_aarch64.c
+++ b/third_party/marl/src/osfiber_aarch64.c
@@ -14,6 +14,8 @@
#if defined(__aarch64__)
+#include <stddef.h>
+
#include "osfiber_asm_aarch64.h"
#include "marl/export.h"
@@ -23,12 +25,23 @@
target(arg);
}
+// This is needed for HWSAan runtimes that don't have this commit:
+// https://reviews.llvm.org/D149228.
+__attribute__((weak)) void __hwasan_tag_memory(const volatile void *p,
+ unsigned char tag, size_t size);
+__attribute((weak)) void *__hwasan_tag_pointer(const volatile void *p,
+ unsigned char tag);
+
MARL_EXPORT
void marl_fiber_set_target(struct marl_fiber_context* ctx,
void* stack,
uint32_t stack_size,
void (*target)(void*),
void* arg) {
+ if (__hwasan_tag_memory && __hwasan_tag_pointer) {
+ stack = __hwasan_tag_pointer(stack, 0);
+ __hwasan_tag_memory(stack, 0, stack_size);
+ }
uintptr_t* stack_top = (uintptr_t*)((uint8_t*)(stack) + stack_size);
ctx->LR = (uintptr_t)&marl_fiber_trampoline;
ctx->r0 = (uintptr_t)target;