diff --git a/.gitignore b/.gitignore
index cae5b93..4c7dc22 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,8 @@
 /.vs/
 /.vscode/
 /build/
+/cmake-build-*/
 /out/
 bazel-*
-CMakeSettings.json
\ No newline at end of file
+CMakeSettings.json
+/.idea/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c8bf95b..015732d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -167,6 +167,18 @@
         ${MARL_SRC_DIR}/osfiber_x64.c
         ${MARL_SRC_DIR}/osfiber_x86.c
     )
+    # CMAKE_OSX_ARCHITECTURES settings aren't propagated to assembly files when
+    # building for Apple platforms (https://gitlab.kitware.com/cmake/cmake/-/issues/20771),
+    # we treat assembly files as C files to work around this bug.
+    set_source_files_properties(
+        ${MARL_SRC_DIR}/osfiber_asm_aarch64.S
+        ${MARL_SRC_DIR}/osfiber_asm_arm.S
+        ${MARL_SRC_DIR}/osfiber_asm_mips64.S
+        ${MARL_SRC_DIR}/osfiber_asm_ppc64.S
+        ${MARL_SRC_DIR}/osfiber_asm_x64.S
+        ${MARL_SRC_DIR}/osfiber_asm_x86.S
+        PROPERTIES LANGUAGE C
+    )
 endif(NOT MSVC)
 
 ###########################################################
diff --git a/README.md b/README.md
index 3adaf40..1c1778b 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 Marl uses a combination of fibers and threads to allow efficient execution of tasks that can block, while keeping a fixed number of hardware threads.
 
-Marl supports Windows, macOS, Linux, FreeBSD, Fuchsia, Android and iOS (arm, aarch64, mips64, ppc64 (ELFv2), x86 and x64).
+Marl supports Windows, macOS, Linux, FreeBSD, Fuchsia, Android and iOS (arm, aarch64, mips64, ppc64, x86 and x64).
 
 Marl has no dependencies on other libraries (with an exception on googletest for building the optional unit tests).
 
diff --git a/examples/fractal.cpp b/examples/fractal.cpp
index b741f44..b95a49e 100644
--- a/examples/fractal.cpp
+++ b/examples/fractal.cpp
@@ -91,9 +91,11 @@
   defer(fclose(file));
 
   bool ok = true;
-  auto put4 = [&](uint32_t val) { ok = ok && fwrite(&val, 1, 4, file) == 4; };
-  auto put2 = [&](uint16_t val) { ok = ok && fwrite(&val, 1, 2, file) == 2; };
   auto put1 = [&](uint8_t val) { ok = ok && fwrite(&val, 1, 1, file) == 1; };
+  auto put2 = [&](uint16_t val) { put1(static_cast<uint8_t>(val));
+				  put1(static_cast<uint8_t>(val >> 8)); };
+  auto put4 = [&](uint32_t val) { put2(static_cast<uint16_t>(val));
+				  put2(static_cast<uint16_t>(val >> 16)); };
 
   const uint32_t padding = -(3 * width) & 3U;   // in bytes
   const uint32_t stride = 3 * width + padding;  // in bytes
@@ -102,8 +104,8 @@
   // Bitmap file header
   put1('B');  // header field
   put1('M');
-  put4(offset + stride * height * 3);  // size in bytes
-  put4(0);                             // reserved
+  put4(offset + stride * height);  // size in bytes
+  put4(0);                         // reserved
   put4(offset);
 
   // BITMAPINFOHEADER
diff --git a/include/marl/conditionvariable.h b/include/marl/conditionvariable.h
index 4788363..bafb37e 100644
--- a/include/marl/conditionvariable.h
+++ b/include/marl/conditionvariable.h
@@ -95,6 +95,7 @@
     marl::lock lock(mutex);
     if (waiting.size() > 0) {
       (*waiting.begin())->notify();  // Only wake one fiber.
+      return;
     }
   }
   if (numWaitingOnCondition > 0) {
diff --git a/include/marl/memory.h b/include/marl/memory.h
index d80e592..d645ccb 100644
--- a/include/marl/memory.h
+++ b/include/marl/memory.h
@@ -131,18 +131,18 @@
   inline void destroy(T* object);
 
   // make_unique() returns a new object allocated from the allocator wrapped
-  // in a unique_ptr that respects the alignemnt of the type.
+  // in a unique_ptr that respects the alignment of the type.
   template <typename T, typename... ARGS>
   inline unique_ptr<T> make_unique(ARGS&&... args);
 
   // make_unique_n() returns an array of n new objects allocated from the
-  // allocator wrapped in a unique_ptr that respects the alignemnt of the
+  // allocator wrapped in a unique_ptr that respects the alignment of the
   // type.
   template <typename T, typename... ARGS>
   inline unique_ptr<T> make_unique_n(size_t n, ARGS&&... args);
 
   // make_shared() returns a new object allocated from the allocator
-  // wrapped in a std::shared_ptr that respects the alignemnt of the type.
+  // wrapped in a std::shared_ptr that respects the alignment of the type.
   template <typename T, typename... ARGS>
   inline std::shared_ptr<T> make_shared(ARGS&&... args);
 
diff --git a/include/marl/sanitizers.h b/include/marl/sanitizers.h
index 3f26d4a..aea997e 100644
--- a/include/marl/sanitizers.h
+++ b/include/marl/sanitizers.h
@@ -78,4 +78,13 @@
 #define THREAD_SANITIZER_ONLY(x)
 #endif  // THREAD_SANITIZER_ENABLED
 
+// The CLANG_NO_SANITIZE_MEMORY macro suppresses MemorySanitizer checks for
+// use-of-uninitialized-data. It can be used to decorate functions with known
+// false positives.
+#ifdef __clang__
+#define CLANG_NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory))
+#else
+#define CLANG_NO_SANITIZE_MEMORY
+#endif
+
 #endif  // marl_sanitizers_h
diff --git a/include/marl/thread.h b/include/marl/thread.h
index 97bb98e..68434cb 100644
--- a/include/marl/thread.h
+++ b/include/marl/thread.h
@@ -63,7 +63,7 @@
     // Affinity for the given thread by id.
     class Policy {
      public:
-      virtual ~Policy(){};
+      virtual ~Policy() {}
 
       // anyOf() returns a Policy that returns an Affinity for a number of
       // available cores in affinity.
diff --git a/license-checker.cfg b/license-checker.cfg
index f72c6df..e46ec1b 100644
--- a/license-checker.cfg
+++ b/license-checker.cfg
@@ -1,5 +1,6 @@
 {
     "licenses": [
+        "Apache-2.0",
         "Apache-2.0-Header"
     ],
     "paths": [
diff --git a/src/osfiber_asm_aarch64.S b/src/osfiber_asm_aarch64.S
index 04db6de..b689f80 100644
--- a/src/osfiber_asm_aarch64.S
+++ b/src/osfiber_asm_aarch64.S
@@ -17,6 +17,48 @@
 #define MARL_BUILD_ASM 1
 #include "osfiber_asm_aarch64.h"
 
+
+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT
+// ENABLE_PAUTH must be defined to 1 since this value will be used in
+// bitwise-shift later!
+#define ENABLE_PAUTH 1
+
+#if ((__ARM_FEATURE_PAC_DEFAULT & ((1 << 0) | (1 << 1))) == 0)
+#error Pointer authentication defines no valid key!
+#endif
+#else
+#define ENABLE_PAUTH 0
+#endif
+
+#if defined(__ARM_FEATURE_BTI_DEFAULT) && (__ARM_FEATURE_BTI_DEFAULT == 1)
+// ENABLE_BTI must be defined to 1 since this value will be used in
+// bitwise-shift later!
+#define ENABLE_BTI 1
+#else
+#define ENABLE_BTI 0
+#endif
+
+// Although Pointer Authentication and Branch Target Instructions are
+// technically seperate features they work together, i.e. the paciasp and
+// pacibsp instructions serve as BTI landing pads. Therefore PA-instructions are
+// enabled when PA _or_ BTI is enabled!
+#if ENABLE_PAUTH || ENABLE_BTI
+// See section "Pointer Authentication" of
+// https://developer.arm.com/documentation/101028/0012/5--Feature-test-macros
+// for details how to interpret __ARM_FEATURE_PAC_DEFAULT
+#if (__ARM_FEATURE_PAC_DEFAULT & (1 << 0))
+#define PAUTH_SIGN_SP paciasp
+#define PAUTH_AUTH_SP autiasp
+#else
+#define PAUTH_SIGN_SP pacibsp
+#define PAUTH_AUTH_SP autibsp
+#endif
+#else
+#define PAUTH_SIGN_SP
+#define PAUTH_AUTH_SP
+#endif
+
+
 // void marl_fiber_swap(marl_fiber_context* from, const marl_fiber_context* to)
 // x0: from
 // x1: to
@@ -28,6 +70,8 @@
     // Save context 'from'
     // TODO: pairs of str can be combined with stp.
 
+    PAUTH_SIGN_SP
+
     // Store special purpose registers
     str x16, [x0, #MARL_REG_r16]
     str x17, [x0, #MARL_REG_r17]
@@ -99,6 +143,24 @@
     ldr x2,  [x7, #MARL_REG_SP]
     mov sp, x2
 
+    PAUTH_AUTH_SP
+
     ret
 
+#if ENABLE_PAUTH || ENABLE_BTI
+// see
+// https://github.com/ARM-software/abi-aa/blob/main/aaelf64/aaelf64.rst#program-property
+.pushsection .note.gnu.property, "a";
+    .balign 8
+    .long 4
+    .long 0x10
+    .long 0x5
+    .asciz "GNU"
+    .long 0xc0000000 /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
+    .long 4
+    .long ((ENABLE_PAUTH)<<1) | ((ENABLE_BTI)<<0) /* PAuth and BTI */
+    .long 0
+.popsection
+#endif
+
 #endif // defined(__aarch64__)
diff --git a/src/osfiber_asm_ppc64.S b/src/osfiber_asm_ppc64.S
index afc143d..6c0ba5a 100644
--- a/src/osfiber_asm_ppc64.S
+++ b/src/osfiber_asm_ppc64.S
@@ -23,8 +23,20 @@
 .text
 .global marl_fiber_swap
 .align 4
+#if !defined(_CALL_ELF) || (_CALL_ELF != 2)
+.global .marl_fiber_swap
+.pushsection ".opd","aw"
+marl_fiber_swap:
+.quad .marl_fiber_swap
+.quad .TOC.@tocbase
+.quad 0
+.popsection
+.type .marl_fiber_swap,@function
+.marl_fiber_swap:
+#else
 .type marl_fiber_swap @function
 marl_fiber_swap:
+#endif
 
     // Store non-volatile registers
     std 1, MARL_REG_R1(3)
diff --git a/src/osfiber_asm_ppc64.h b/src/osfiber_asm_ppc64.h
index 402bece..f4d20a9 100644
--- a/src/osfiber_asm_ppc64.h
+++ b/src/osfiber_asm_ppc64.h
@@ -123,11 +123,6 @@
   uintptr_t vmx[12 * 2];
 };
 
-// Only the ELFv2 ABI is supported for now.
-#if !defined(_CALL_ELF) || (_CALL_ELF != 2)
-#error "Only the ppc64 ELFv2 ABI is supported."
-#endif
-
 #ifdef __cplusplus
 #include <cstddef>
 static_assert(offsetof(marl_fiber_context, r1) == MARL_REG_R1,
diff --git a/src/osfiber_ppc64.c b/src/osfiber_ppc64.c
index c325d7d..48c4d9a 100644
--- a/src/osfiber_ppc64.c
+++ b/src/osfiber_ppc64.c
@@ -29,19 +29,29 @@
                            uint32_t stack_size,
                            void (*target)(void*),
                            void* arg) {
-  uintptr_t stack_top = (uintptr_t)((uint8_t*)(stack) + stack_size);
+  uintptr_t stack_top = (uintptr_t)((uint8_t*)(stack) + stack_size - sizeof(uintptr_t));
   if ((stack_top % 16) != 0) {
     stack_top -= (stack_top % 16);
   }
 
-  // Write a backchain and subtract a minimum stack frame size (32)
+  // Write a backchain and subtract a minimum stack frame size (32/48)
   *(uintptr_t*)stack_top = 0;
+#if !defined(_CALL_ELF) || (_CALL_ELF != 2)
+  stack_top -= 48;
+  *(uintptr_t*)stack_top = stack_top + 48;
+#else
   stack_top -= 32;
   *(uintptr_t*)stack_top = stack_top + 32;
+#endif
 
   // Load registers
   ctx->r1 = stack_top;
+#if !defined(_CALL_ELF) || (_CALL_ELF != 2)
+  ctx->lr = ((const uintptr_t *)marl_fiber_trampoline)[0];
+  ctx->r2 = ((const uintptr_t *)marl_fiber_trampoline)[1];
+#else
   ctx->lr = (uintptr_t)marl_fiber_trampoline;
+#endif
   ctx->r3 = (uintptr_t)target;
   ctx->r4 = (uintptr_t)arg;
 
diff --git a/src/osfiber_test.cpp b/src/osfiber_test.cpp
index d31b3a8..4b881ed 100644
--- a/src/osfiber_test.cpp
+++ b/src/osfiber_test.cpp
@@ -18,7 +18,10 @@
 
 namespace {
 
-auto constexpr fiberStackSize = 8 * 1024;
+// A custom, small stack size for the fibers in these tests.
+// Note: Stack sizes less than 16KB may cause issues on some platforms.
+// See: https://github.com/google/marl/issues/201
+constexpr size_t fiberStackSize = 16 * 1024;
 
 }  // anonymous namespace
 
diff --git a/src/osfiber_x64.c b/src/osfiber_x64.c
index 0533076..3cc09c1 100644
--- a/src/osfiber_x64.c
+++ b/src/osfiber_x64.c
@@ -18,6 +18,8 @@
 
 #include "marl/export.h"
 
+//You can find an explanation of this code here: https://github.com/google/marl/issues/199
+
 MARL_EXPORT
 void marl_fiber_trampoline(void (*target)(void*), void* arg) {
   target(arg);
diff --git a/src/scheduler.cpp b/src/scheduler.cpp
index 027565d..af98159 100644
--- a/src/scheduler.cpp
+++ b/src/scheduler.cpp
@@ -234,6 +234,9 @@
   MARL_ASSERT(worker != nullptr, "No Scheduler::Worker bound");
 }
 
+// TODO(chromium:1211047): Testing the static thread_local Worker::current for
+// null causes a MemorySantizer false positive.
+CLANG_NO_SANITIZE_MEMORY
 Scheduler::Fiber* Scheduler::Fiber::current() {
   auto worker = Worker::getCurrent();
   return worker != nullptr ? worker->getCurrentFiber() : nullptr;
