Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 704786

Summary: dev-libs/nss-3.47.1-r1 - In file included from aes-armv8.c:16: /usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/9.2.0/include/arm_neon.h:31:2: error: #error "NEON intrinsics not available with the soft-float ABI.
Product: Gentoo Linux Reporter: Gordon Bos <bugzilla>
Component: Current packagesAssignee: Mozilla Gentoo Team <mozilla>
Status: UNCONFIRMED ---    
Severity: normal CC: crabbedhaloablution, herrtimson, matoro_bugzilla_gentoo
Priority: Normal    
Version: unspecified   
Hardware: ARM   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description Gordon Bos 2020-01-04 18:46:34 UTC
Apparently the build does not support softfloat?

Reproducible: Always

Actual Results:  
Relevant portion of build log

armv5tel-softfloat-linux-gnueabi-gcc -o Linux2.6_arm_armv5tel-softfloat-linux-gnueabi-gcc_glibc_PTH_OPT.OBJ/Linux_SINGLE_SHLIB/aes-armv8.o -c  -fPIC   -pipe -ffunction-sections -fdata-sections -DHAVE_STRERROR -DLINUX -Dlinux -Wall -Wshadow -DNSS_NO_GCC48 -DXP_UNIX -DSHLIB_SUFFIX=\"so\" -DSHLIB_PREFIX=\"lib\" -DSHLIB_VERSION=\"3\" -DSOFTOKEN_SHLIB_VERSION=\"3\" -DRIJNDAEL_INCLUDE_TABLES -UDEBUG -DNDEBUG -D_REENTRANT -DNSS_NO_INIT_SUPPORT -DSEED_ONLY_DEV_URANDOM -DUSE_UTIL_DIRECTLY -DNO_NSPR_10_SUPPORT -DSSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES -DFREEBL_NO_DEPEND -DFREEBL_LOWHASH -DUSE_HW_AES -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE  -DMP_USE_UINT_DIGIT -DSHA_NO_LONG_LONG  -DKRML_NOUINT128 -DMP_API_COMPATIBLE -I../../dist/Linux2.6_arm_armv5tel-softfloat-linux-gnueabi-gcc_glibc_PTH_OPT.OBJ/include -I../../dist/public/nss -I../../dist/private/nss -I../../dist/Linux2.6_arm_armv5tel-softfloat-linux-gnueabi-gcc_glibc_PTH_OPT.OBJ/include/dbm -Impi -Iecl -Iverified -O2 -pipe  -I/usr/armv5tel-softfloat-linux-gnueabi/usr/include/nspr -std=gnu99 -march=armv8-a -mfpu=crypto-neon-fp-armv8 aes-armv8.c
In file included from aes-armv8.c:16:
/usr/lib/gcc/armv5tel-softfloat-linux-gnueabi/9.2.0/include/arm_neon.h:31:2: error: #error "NEON intrinsics not available with the soft-float ABI.  Please use -mfloat-abi=softfp or -mfloat-abi=hard"
   31 | #error "NEON intrinsics not available with the soft-float ABI.  Please use -mfloat-abi=softfp or -mfloat-abi=hard"
      |  ^~~~~
aes-armv8.c: In function 'arm_aes_encrypt_ecb_128':
aes-armv8.c:29:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
   29 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:30:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
   30 |     uint8x16_t key11;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:37:12: warning: implicit declaration of function 'vld1q_u8' [-Wimplicit-function-declaration]
   37 |     key1 = vld1q_u8(key);
      |            ^~~~~~~~
aes-armv8.c:50:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
   50 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c:65:17: warning: implicit declaration of function 'vaeseq_u8' [-Wimplicit-function-declaration]
   65 |         state = vaeseq_u8(state, key1);
      |                 ^~~~~~~~~
aes-armv8.c:66:17: warning: implicit declaration of function 'vaesmcq_u8' [-Wimplicit-function-declaration]
   66 |         state = vaesmcq_u8(state);
      |                 ^~~~~~~~~~
aes-armv8.c:85:17: warning: implicit declaration of function 'veorq_u8' [-Wimplicit-function-declaration]
   85 |         state = veorq_u8(state, key11);
      |                 ^~~~~~~~
aes-armv8.c:91:13: warning: implicit declaration of function 'vst1q_u8' [-Wimplicit-function-declaration]
   91 |             vst1q_u8(__builtin_assume_aligned(buf, 16), state);
      |             ^~~~~~~~
aes-armv8.c: In function 'arm_aes_decrypt_ecb_128':
aes-armv8.c:114:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  114 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:115:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  115 |     uint8x16_t key11;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:135:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  135 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c:150:17: warning: implicit declaration of function 'vaesdq_u8' [-Wimplicit-function-declaration]
  150 |         state = vaesdq_u8(state, key11);
      |                 ^~~~~~~~~
aes-armv8.c:151:17: warning: implicit declaration of function 'vaesimcq_u8' [-Wimplicit-function-declaration]
  151 |         state = vaesimcq_u8(state);
      |                 ^~~~~~~~~~~
aes-armv8.c: In function 'arm_aes_encrypt_cbc_128':
aes-armv8.c:199:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  199 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:200:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  200 |     uint8x16_t key11;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:201:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  201 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:225:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  225 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_decrypt_cbc_128':
aes-armv8.c:293:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  293 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:294:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  294 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:295:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  295 |     uint8x16_t key11;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:319:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  319 |         uint8x16_t state, old_state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_encrypt_ecb_192':
aes-armv8.c:389:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  389 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:390:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  390 |     uint8x16_t key11, key12, key13;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:412:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  412 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_decrypt_ecb_192':
aes-armv8.c:480:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  480 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:481:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  481 |     uint8x16_t key11, key12, key13;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:503:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  503 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_encrypt_cbc_192':
aes-armv8.c:571:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  571 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:572:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  572 |     uint8x16_t key11, key12, key13;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:573:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  573 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:599:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  599 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_decrypt_cbc_192':
aes-armv8.c:670:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  670 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:671:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  671 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:672:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  672 |     uint8x16_t key11, key12, key13;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:698:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  698 |         uint8x16_t state, old_state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_encrypt_ecb_256':
aes-armv8.c:772:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  772 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:773:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  773 |     uint8x16_t key11, key12, key13, key14, key15;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:797:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  797 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_decrypt_ecb_256':
aes-armv8.c:868:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  868 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:869:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  869 |     uint8x16_t key11, key12, key13, key14, key15;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:893:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  893 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_encrypt_cbc_256':
aes-armv8.c:965:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  965 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:966:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  966 |     uint8x16_t key11, key12, key13, key14, key15;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:967:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  967 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:995:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
  995 |         uint8x16_t state;
      |         ^~~~~~~~~~
      |         uint16_t
aes-armv8.c: In function 'arm_aes_decrypt_cbc_256':
aes-armv8.c:1071:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
 1071 |     uint8x16_t iv;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:1072:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
 1072 |     uint8x16_t key1, key2, key3, key4, key5, key6, key7, key8, key9, key10;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:1073:5: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
 1073 |     uint8x16_t key11, key12, key13, key14, key15;
      |     ^~~~~~~~~~
      |     uint16_t
aes-armv8.c:1101:9: error: unknown type name 'uint8x16_t'; did you mean 'uint16_t'?
 1101 |         uint8x16_t state, old_state;
      |         ^~~~~~~~~~
      |         uint16_t
Comment 1 Jeroen Roovers (RETIRED) gentoo-dev 2020-01-05 13:23:27 UTC
(In reply to Gordon Bos from comment #0)
> Actual Results:  
> Relevant portion of build log

Please attach the entire build log to this bug report.
Comment 2 tt_1 2020-01-10 08:27:36 UTC
there were quite a few changes regarding arm and neon code in recent months. you might want to try again with =nss-3.49, and possible use the patch from https://bugzilla.mozilla.org/show_bug.cgi?id=1608327 on top of that. 

I guess the guys at mozilla would be happy if someone tested that fix on softfloat, so go to that bug and post a comment if it either fixes your problem, or doesn't.
Comment 3 Gordon Bos 2020-01-10 13:27:01 UTC
Sorry. Forgot to report back. I had already fallen back on the schedule for a much needed new release and I decided to leave it at the 3.46 version that was already in the image.

I did however test compiling the 3.48 version (with mspr-4.24) and that one did result in an installable binary. Being pressed for time I did not perform any further tests and discarded it as I really like to restrict myself to stable packages as much as possible for this project.
Comment 4 tt_1 2020-01-25 20:30:25 UTC
I can only enourage you to try again with current nss-3.49.2, one hardfloat and one softfloat bug were fixed since the release of nss-3.49

and please report your bug upstream, there's a higher chance of getting stuff fixed that way.
Comment 5 Alexandru N. Barloiu 2020-07-23 02:41:02 UTC
I ran into a variant of this bug today. But my situation was a little bit different. 

I was running on a 64 bit kernel (arm64), with a 64 bit userland, preparing a 32bit userland with chroot. 

Seems to me, nss has a cpuflags autodetecting component which always forces a march=armv8a. In my case with +crypto. Which made the build fail. 

It's not technically cross-compiling when doing it in chroot, but I think nss needs to be built into it's own native environment. Mostly because of cpu flags which are detected when building, instead of taken from make.conf. 

The same installation, mounted over nfs, on an official v7l 32 bit kernel, still in chroot, it built just fine. 

So, on 64 bit kernel, in chroot, nss didn't want to build. On 32 bit kernel, in chroot, it was just fine.