--- 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(signal_ucontext->uc_mcontext->ss.rip); #endif +#elif defined(__ppc__) || defined(__ppc64__) +#if __DARWIN_UNIX03 + return reinterpret_cast(signal_ucontext->uc_mcontext->__ss.__srr0); +#else + return reinterpret_cast(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(__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(512000000); +#elif defined(__APPLE__) + // Also use the constant for macOS. + return static_cast(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__))