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

Reply via email to