Squashed 'third_party/marl/' changes from 13e0eb5222..aa9e85b218
aa9e85b218 Fix build on MacOS
git-subtree-dir: third_party/marl
git-subtree-split: aa9e85b2189d6f5dbba6909275661b37dfb5de69
Change-Id: Iefc45a78618bd71303c331a153b9719e7e2a6f23
diff --git a/src/osfiber_aarch64.c b/src/osfiber_aarch64.c
index 536fab9..9d9a381 100644
--- a/src/osfiber_aarch64.c
+++ b/src/osfiber_aarch64.c
@@ -25,12 +25,15 @@
target(arg);
}
+// __attribute__((weak)) doesn't work on MacOS.
+#if defined(linux) || defined(__linux) || defined(__linux__)
// 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);
+#endif
MARL_EXPORT
void marl_fiber_set_target(struct marl_fiber_context* ctx,
@@ -38,10 +41,13 @@
uint32_t stack_size,
void (*target)(void*),
void* arg) {
+
+#if defined(linux) || defined(__linux) || defined(__linux__)
if (__hwasan_tag_memory && __hwasan_tag_pointer) {
stack = __hwasan_tag_pointer(stack, 0);
__hwasan_tag_memory(stack, 0, stack_size);
}
+#endif
uintptr_t* stack_top = (uintptr_t*)((uint8_t*)(stack) + stack_size);
ctx->LR = (uintptr_t)&marl_fiber_trampoline;
ctx->r0 = (uintptr_t)target;