Closed Bug 1448748 Opened 2 years ago Closed 2 years ago

MinGW x64 NSS Fixes

Categories

(NSS :: Build, enhancement)

enhancement
Not set

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: tjr, Assigned: tjr)

References

(Blocks 1 open bug)

Details

Attachments

(1 file, 1 obsolete file)

Lots of missing functions errors; eventually fixed by the following. I know I need to prep a NSS patch for this, but looking for a go ahead with what I have attached before doing that.
Flags: needinfo?(franziskuskiefer)
Comment on attachment 8962240 [details]
Bug 1448748 Disable a bunch of optimized stuff to fix the MinGW x64 Build f?franziskus

https://reviewboard.mozilla.org/r/231086/#review236494

So I guess all the assembly doesn't work. But you'll probably want to keep `USE_HW_AES`.
You should also change the makefiles. I don't think anyone is using this target (gyp or make), but better to be consistent in both build systems.

::: security/nss/lib/freebl/freebl.gyp
(Diff revision 1)
>            'MP_IS_LITTLE_ENDIAN',
> -          'NSS_BEVAND_ARCFOUR',
> -          'MPI_AMD64',
> -          'MP_ASSEMBLY_MULTIPLY',
> -          'NSS_USE_COMBA',
> -          'USE_HW_AES',

Why do you want to disable hardware acceleration for AES?
Flags: needinfo?(franziskuskiefer)
(In reply to Franziskus Kiefer [:fkiefer or :franziskus] from comment #2)
> Comment on attachment 8962240 [details]
> Bug 1448748 Disable a bunch of optimized stuff to fix the MinGW x64 Build
> f?franziskus
> 
> https://reviewboard.mozilla.org/r/231086/#review236494
> 
> So I guess all the assembly doesn't work. But you'll probably want to keep
> `USE_HW_AES`.
> You should also change the makefiles. I don't think anyone is using this
> target (gyp or make), but better to be consistent in both build systems.
> 
> ::: security/nss/lib/freebl/freebl.gyp
> (Diff revision 1)
> >            'MP_IS_LITTLE_ENDIAN',
> > -          'NSS_BEVAND_ARCFOUR',
> > -          'MPI_AMD64',
> > -          'MP_ASSEMBLY_MULTIPLY',
> > -          'NSS_USE_COMBA',
> > -          'USE_HW_AES',
> 
> Why do you want to disable hardware acceleration for AES?

It doesn't work out of the box =/

> In file included from /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:28:0:
> /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c: In function 'intel_AES_GCM_CreateContext':
> /builds/worker/workspace/build/src/mingw32/lib/gcc/x86_64-w64-mingw32/6.4.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '_mm_shuffle_epi8': target specific option mismatch
>  _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
>  ^~~~~~~~~~~~~~~~
> /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:123:5: note: called from here
>      _mm_storeu_si128((__m128i *)gcm->CTR, _mm_shuffle_epi8(_mm_add_epi32(ONE, _mm_shuffle_epi8(_mm_loadu_si128((__m128i *)gcm->CTR), BSWAP_MASK)), BSWAP_MASK));
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:28:0:
> /builds/worker/workspace/build/src/mingw32/lib/gcc/x86_64-w64-mingw32/6.4.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '_mm_shuffle_epi8': target specific option mismatch
>  _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
>  ^~~~~~~~~~~~~~~~
> /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:123:5: note: called from here
>      _mm_storeu_si128((__m128i *)gcm->CTR, _mm_shuffle_epi8(_mm_add_epi32(ONE, _mm_shuffle_epi8(_mm_loadu_si128((__m128i *)gcm->CTR), BSWAP_MASK)), BSWAP_MASK));
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:28:0:
> /builds/worker/workspace/build/src/mingw32/lib/gcc/x86_64-w64-mingw32/6.4.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '_mm_shuffle_epi8': target specific option mismatch
>  _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
>  ^~~~~~~~~~~~~~~~
> /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:123:5: note: called from here
>      _mm_storeu_si128((__m128i *)gcm->CTR, _mm_shuffle_epi8(_mm_add_epi32(ONE, _mm_shuffle_epi8(_mm_loadu_si128((__m128i *)gcm->CTR), BSWAP_MASK)), BSWAP_MASK));
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:28:0:
> /builds/worker/workspace/build/src/mingw32/lib/gcc/x86_64-w64-mingw32/6.4.0/include/tmmintrin.h:136:1: error: inlining failed in call to always_inline '_mm_shuffle_epi8': target specific option mismatch
>  _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
>  ^~~~~~~~~~~~~~~~
> /builds/worker/workspace/build/src/security/nss/lib/freebl/intel-gcm-wrap.c:123:5: note: called from here
>      _mm_storeu_si128((__m128i *)gcm->CTR, _mm_shuffle_epi8(_mm_add_epi32(ONE, _mm_shuffle_epi8(_mm_loadu_si128((__m128i *)gcm->CTR), BSWAP_MASK)), BSWAP_MASK));
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hm, I see. Well as I said I don't know of any mingw users so I'm fine with disabling all of this to make it build. Please add the makefile changes and upload an NSS patch.
I believe the Makefile already does the correct thing:

> ifdef NS_USE_GCC
> # Ideally, we should use amd64 assembly code, but it's not yet mingw-w64
> # compatible.
Attachment #8962240 - Attachment is obsolete: true
Attachment #8964084 - Flags: review?(franziskuskiefer)
Attachment #8964084 - Flags: review?(franziskuskiefer) → review+
landed as https://hg.mozilla.org/projects/nss/rev/954032211d2d303bcee85f448f4db24bb8ec9a0c
Note that we don't use this anywhere, so there might be errors.
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 3.37
Can we land this in esr 60 now?
Flags: needinfo?(franziskuskiefer)
This landed in NSS 3.37. ESR 60 is on NSS 3.36 so we'd have make another point release for NSS 3.36. We can take this to ride along if there's another 3.36 point release.
Flags: needinfo?(franziskuskiefer)
Wanted to follow up on this and Bug 1389967 - has there been any movement in 3.36/esr so we can take these?  These two NSS patches are holding us back from getting both the old x64 and the new x86/x64 MinGW builds and tests running in TaskCluster...
Flags: needinfo?(franziskuskiefer)
There was another 3.36 point release not too long ago but this one wasn't picked up... It's on my list for the next one, which might happen soon.
Flags: needinfo?(franziskuskiefer)
You need to log in before you can comment on or make changes to this bug.