Package: sleef
Version: 3.4.1-4
Severity: serious

The most recent upload of sleef fixed the build on amd64, armhf, i386 and 
ppc64el. Unfortunately
it is still failing on arm64, with the following error.

In file included from /<<PKGBUILDDIR>>/src/libm/sleefsimdsp.c:209:
/<<PKGBUILDDIR>>/src/arch/helpersve.h:94:27: error: expected ‘=’, ‘,’, ‘;’, 
‘asm’ or ‘__attribute__’ before ‘{’ token
   94 | typedef __sizeless_struct {
      |                           ^

It looks like __sizeless_struct is a compiler feature that was proposed for 
adding to gcc,
but it doesn't appear to have actually been added, at least not under that name.

It looks like this bug has shown up now because gcc-10 added support for 
"arm_sve.h". previously
this header was not present and so COMPILER_SUPPORTS_SVE was false, but now it 
is true and
sleef tries and fails to build the arm sve code.

I whipped up a patch that changes the detection code so it will not try to 
build the sve code
if the compiler does not support __sizeless_struct. Unfortunately it then 
failed with

[ 50%] Building C object 
src/libm-tester/CMakeFiles/iutypurec_scalar.dir/iutsimd.c.o
cd /sleef-3.4.1/obj-aarch64-linux-gnu/src/libm-tester && /usr/bin/cc 
-DDETERMINISTIC=1 -DENABLE_ALIAS=1 -DENABLE_PUREC_SCALAR=1 -DENABLE_SYS_getrandom=1 
-I/sleef-3.4.1/src/common -I/sleef-3.4.1/src/arch 
-I/sleef-3.4.1/obj-aarch64-linux-gnu/include -I/sleef-3.4.1/src/libm 
-I/sleef-3.4.1/obj-aarch64-linux-gnu/src/libm/include -Wall -Wno-unused -Wno-attributes 
-Wno-unused-result -Wno-psabi -ffp-contract=off -fno-math-errno -fno-trapping-math -O2 
-g -DNDEBUG -std=gnu99 -o CMakeFiles/iutypurec_scalar.dir/iutsimd.c.o -c 
/sleef-3.4.1/src/libm-tester/iutsimd.c
/sleef-3.4.1/src/libm-tester/iutsimd.c:198:9: error: unknown type name 
‘Sleef_double_2’
  198 | typedef Sleef_double_2 vdouble2;
      |         ^~~~~~~~~~~~~~
/sleef-3.4.1/src/libm-tester/iutsimd.c:199:9: error: unknown type name 
‘Sleef_float_2’
  199 | typedef Sleef_float_2 vfloat2;
      |

That was about where I reached the limit of my skills as someone not familiar 
with the package,
a work-in progress debdiff is attatched.


Alternatively it looks like there is a new upstream release of sleef that 
revamps the sve
code so it can be built with gcc 10. So that might be an alternative route.
diff -Nru sleef-3.4.1/debian/changelog sleef-3.4.1/debian/changelog
--- sleef-3.4.1/debian/changelog        2020-07-30 12:55:23.000000000 +0000
+++ sleef-3.4.1/debian/changelog        2020-09-01 21:17:11.000000000 +0000
@@ -1,3 +1,12 @@
+sleef (3.4.1-4.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Make sve detection code check for __sizeless_struct. gcc 10 has
+    arm_sve.h but not __sizeless_struct which is needed by the sve
+    implementation in this version.
+
+ -- Peter Michael Green <plugw...@debian.org>  Tue, 01 Sep 2020 21:17:11 +0000
+
 sleef (3.4.1-4) unstable; urgency=medium
 
   * Team Upload.
diff -Nru sleef-3.4.1/debian/patches/check-for-sizeless-struct.patch 
sleef-3.4.1/debian/patches/check-for-sizeless-struct.patch
--- sleef-3.4.1/debian/patches/check-for-sizeless-struct.patch  1970-01-01 
00:00:00.000000000 +0000
+++ sleef-3.4.1/debian/patches/check-for-sizeless-struct.patch  2020-09-01 
21:17:11.000000000 +0000
@@ -0,0 +1,15 @@
+Description: Make sve detection code check for __sizeless_struct. 
+ gcc 10 has arm_sve.h but not __sizeless_struct which is needed by the sve
+ implementation in this version.
+Author: Peter Michael Green <plugw...@debian.org>
+
+--- sleef-3.4.1.orig/Configure.cmake
++++ sleef-3.4.1/Configure.cmake
+@@ -554,6 +554,7 @@ if(SLEEF_ARCH_AARCH64 AND NOT DISABLE_SV
+   set (CMAKE_REQUIRED_FLAGS ${FLAGS_ENABLE_SVE})
+   CHECK_C_SOURCE_COMPILES("
+   #include <arm_sve.h>
++  typedef __sizeless_struct { svint32_t x, y;} vmask2;
+   int main() {
+     svint32_t r = svdup_n_s32(1); }"
+     COMPILER_SUPPORTS_SVE)
diff -Nru sleef-3.4.1/debian/patches/series sleef-3.4.1/debian/patches/series
--- sleef-3.4.1/debian/patches/series   2020-07-30 12:55:23.000000000 +0000
+++ sleef-3.4.1/debian/patches/series   2020-09-01 21:17:11.000000000 +0000
@@ -1,2 +1,3 @@
 disable-neon-on-armel.patch
 fix-gcc10-build.patch
+check-for-sizeless-struct.patch

Reply via email to