Source: benchmark Severity: normal Tags: patch Dear Maintainer,
The build fails here: [ 25%] Building CXX object src/CMakeFiles/benchmark.dir/sysinfo.cc.o cd /<<PKGBUILDDIR>>/obj-hppa-linux-gnu/src && /usr/bin/c++ -DHAVE_POSIX_REGEX -DHAVE_STD_REGEX -DHAVE_STEADY_CLOCK -Dbenchmark_EXPORTS -I/<<PKGBUILDDIR>>/include -I/<<PKGBUILDDIR>>/src -I/<<PKGBUILDDIR>>/src/../include -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++11 -Wall -Wextra -Wshadow -pedantic -pedantic-errors -Wfloat-equal -fstrict-aliasing -Wstrict-aliasing -fPIC -o CMakeFiles/benchmark.dir/sysinfo.cc.o -c /<<PKGBUILDDIR>>/src/sysinfo.cc In file included from /<<PKGBUILDDIR>>/src/sysinfo.cc:57: /<<PKGBUILDDIR>>/src/cycleclock.h:171:2: error: #error You need to define CycleTimer for your OS and CPU #error You need to define CycleTimer for your OS and CPU The attached patch adds a bit of code to access the interval timer on hppa. This fixes the build error. Note that a 32-bit counter value is returned when the processor is running in narrow mode. The counter nominally runs at the processor frequency. Regards, Dave Anglin -- System Information: Debian Release: buster/sid APT prefers buildd-unstable APT policy: (500, 'buildd-unstable'), (500, 'unstable') Architecture: hppa (parisc64) Kernel: Linux 4.14.74+ (SMP w/4 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968), LANGUAGE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)
--- cycleclock.h.save 2018-10-08 11:07:53.775998772 -0400 +++ cycleclock.h 2018-10-08 12:01:01.013408888 -0400 @@ -100,6 +100,11 @@ int64_t itc; asm("mov %0 = ar.itc" : "=r"(itc)); return itc; +#elif defined(__hppa__) + // Counter can only be read when PSW S bit is 0. + long itc; + asm("mfctl 16,%0" : "=r"(itc)); + return static_cast<int64_t>(itc); #elif defined(COMPILER_MSVC) && defined(_M_IX86) // Older MSVC compilers (like 7.x) don't seem to support the // __rdtsc intrinsic properly, so I prefer to use _asm instead