--- absl/random/internal/randen_detect.cc	2022-09-01 00:15:21.000000000 +0700
+++ absl/random/internal/randen_detect.cc	2022-09-03 07:03:35.000000000 +0700
@@ -204,6 +204,8 @@
   return ((hwcap & kNEON) != 0) && ((hwcap & kAES) != 0);
 #endif
 
+#elif defined(ABSL_ARCH_PPC)
+    return false;
 #elif defined(__APPLE__) && defined(ABSL_ARCH_AARCH64)
   // 3. Use sysctlbyname.
 
--- absl/random/internal/platform.h	2022-09-01 00:15:21.000000000 +0700
+++ absl/random/internal/platform.h	2022-09-03 06:56:21.000000000 +0700
@@ -67,8 +67,8 @@
 #define ABSL_ARCH_AARCH64
 #elif defined(__arm__) || defined(__ARMEL__) || defined(_M_ARM)
 #define ABSL_ARCH_ARM
-#elif defined(__powerpc64__) || defined(__PPC64__) || defined(__powerpc__) || \
-    defined(__ppc__) || defined(__PPC__)
+#elif defined(__powerpc64__) || defined(__PPC64__) || defined(__ppc64__) || \
+     defined(__powerpc__) || defined(__PPC__) || defined(__ppc__)
 #define ABSL_ARCH_PPC
 #else
 // Unsupported architecture.
@@ -105,9 +105,11 @@
 
 #elif defined(ABSL_ARCH_PPC)
 
+#if defined(__APPLE__)
+#undef ABSL_HAVE_ACCELERATED_AES
+#define ABSL_HAVE_ACCELERATED_AES 0
 // Rely on VSX and CRYPTO extensions for vcipher on PowerPC.
-#if (defined(__VEC__) || defined(__ALTIVEC__)) && defined(__VSX__) && \
-    defined(__CRYPTO__)
+#elif (defined(__VEC__) || defined(__ALTIVEC__)) && defined(__VSX__) && defined(__CRYPTO__)
 #undef ABSL_HAVE_ACCELERATED_AES
 #define ABSL_HAVE_ACCELERATED_AES 1
 #endif
@@ -151,6 +153,10 @@
 // (This captures a lot of Android configurations.)
 #undef ABSL_RANDOM_INTERNAL_AES_DISPATCH
 #define ABSL_RANDOM_INTERNAL_AES_DISPATCH 1
+#elif defined(__APPLE__) && defined(ABSL_ARCH_PPC)
+// Darwin PPC
+#undef ABSL_RANDOM_INTERNAL_AES_DISPATCH
+#define ABSL_RANDOM_INTERNAL_AES_DISPATCH 0
 #endif
 
 // NaCl does not allow dispatch.

--- absl/debugging/internal/examine_stack.cc	2022-06-23 22:22:47.000000000 +0400
+++ absl/debugging/internal/examine_stack.cc	2022-07-23 19:11:23.000000000 +0400
@@ -223,6 +232,12 @@
 #else
     return reinterpret_cast<void*>(signal_ucontext->uc_mcontext->ss.rip);
 #endif
+#elif defined(__ppc__) || defined(__ppc64__)
+#if __DARWIN_UNIX03
+    return reinterpret_cast<void*>(signal_ucontext->uc_mcontext->__ss.__srr0);
+#else
+    return reinterpret_cast<void*>(signal_ucontext->uc_mcontext->ss.srr0);
+#endif
 #endif
   }
 #elif defined(__akaros__)

--- absl/base/internal/unscaledcycleclock_config.h	2026-06-02 02:50:32.000000000 +0800
+++ absl/base/internal/unscaledcycleclock_config.h	2026-06-29 17:08:14.000000000 +0800
@@ -21,7 +21,7 @@
 
 // The following platforms have an implementation of a hardware counter.
 #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
-    defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) ||     \
+    defined(__powerpc__) || defined(__POWERPC__) || defined(_M_IX86) ||     \
     (defined(_M_X64) && !defined(_M_ARM64EC))
 #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
 #else

--- absl/base/internal/unscaledcycleclock.cc	2026-06-02 02:50:32.000000000 +0800
+++ absl/base/internal/unscaledcycleclock.cc	2026-06-29 17:12:56.000000000 +0800
@@ -58,13 +58,13 @@
   return base_internal::NominalCPUFrequency();
 }
 
-#elif defined(__powerpc__) || defined(__ppc__)
+#elif defined(__powerpc__) || defined(__POWERPC__)
 
 int64_t UnscaledCycleClock::Now() {
 #ifdef __GLIBC__
   return static_cast<int64_t>(__ppc_get_timebase());
 #else
-#ifdef __powerpc64__
+#if defined(__powerpc64__) || defined(__ppc64__)
   int64_t tbr;
   asm volatile("mfspr %0, 268" : "=r"(tbr));
   return tbr;
@@ -93,6 +93,9 @@
   // This is the same constant value as returned by
   // __ppc_get_timebase_freq().
   return static_cast<double>(512000000);
+#elif defined(__APPLE__)
+  // Also use the constant for macOS.
+  return static_cast<double>(512000000);
 #elif defined(__FreeBSD__)
   static once_flag init_timebase_frequency_once;
   static double timebase_frequency = 0.0;

--- absl/random/beta_distribution.h	2026-06-02 02:50:32.000000000 +0800
+++ absl/random/beta_distribution.h	2026-06-29 17:17:33.000000000 +0800
@@ -264,7 +264,7 @@
 };
 
 #if defined(__powerpc64__) || defined(__PPC64__) || defined(__powerpc__) || \
-    defined(__ppc__) || defined(__PPC__)
+    defined(__ppc__) || defined(__PPC__) || defined(__POWERPC__)
 // PPC needs a more stringent boundary for long double.
 template <>
 constexpr long double

--- absl/container/internal/raw_hash_set_test.cc	2026-06-02 02:50:32.000000000 +0800
+++ absl/container/internal/raw_hash_set_test.cc	2026-06-29 17:57:25.000000000 +0800
@@ -4556,7 +4556,7 @@
 TEST(Table, GrowExtremelyLargeTable) {
   // ProbedItem8Bytes causes OOMs on some platforms so we use ProbedItem4Bytes.
   constexpr size_t kTargetCapacity =
-#if defined(__wasm__) || defined(__asmjs__) || defined(__i386__) || \
+#if defined(__wasm__) || defined(__asmjs__) || defined(__i386__) || defined(__ppc__) || \
     defined(_MSC_VER) || defined(ABSL_HAVE_THREAD_SANITIZER) ||     \
     defined(ABSL_HAVE_MEMORY_SANITIZER) ||                          \
     (!defined(__clang__) && defined(__GNUC__))
