PR #1918: base: add musl + ppc64le fallback for UnscaledCycleClock::Frequency

Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1918

Fixes build failures on ppc64le with musl libc, where UnscaledCycleClock::Frequency() had no implementation.

This patch adds a fallback for __linux__ + __powerpc64__ when glibc is not present, using a constant 512 MHz timebase frequency. This matches the existing AIX implementation and unblocks projects like Node.js/V8 from building on Alpine Linux (musl).

Tested by building Node.js 24.x on ppc64le + musl.

Issue- https://github.com/abseil/abseil-cpp/issues/1917

Merge aa7e63a4ff into 274c81389f

Merging this change closes #1918

COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1918 from sandeepgupta12:master aa7e63a4ff
PiperOrigin-RevId: 794579241
Change-Id: I16b9bcb48dc9ff7c1f1fcf9b31ceb5f20dadf3ec
This commit is contained in:
sandeepgupta12
2025-08-13 07:57:46 -07:00
committed by Copybara-Service
parent 274c81389f
commit 8e7767542c

View File

@@ -85,6 +85,10 @@ int64_t UnscaledCycleClock::Now() {
double UnscaledCycleClock::Frequency() {
#ifdef __GLIBC__
return __ppc_get_timebase_freq();
#elif defined(__linux__)
// Fallback for musl + ppc64le: use constant timebase frequency (512 MHz)
// Must come after __GLIBC__.
return static_cast<double>(512000000);
#elif defined(_AIX)
// This is the same constant value as returned by
// __ppc_get_timebase_freq().