View | Details | Raw Unified | Return to bug 242521 | Differences between
and this patch

Collapse All | Expand All

(-)Makefile (-2 / +2 lines)
Lines 55-62 Link Here
55
BINS=		${DIST}/${OPSYS}${OSREL}_DBG.OBJ
55
BINS=		${DIST}/${OPSYS}${OSREL}_DBG.OBJ
56
.endif
56
.endif
57
57
58
.if ${OPSYS} == FreeBSD && ${ARCH} == i386 && ! ${MACHINE_CPU:Msse2}
58
.if ${ARCH} == powerpc64
59
USES+=		compiler:c++14-lang # gcm.h
59
USES+=		compiler:c++11-lang # -mcrypto -mvsx
60
.endif
60
.endif
61
61
62
.if ${OPSYS} == FreeBSD && ${ARCH} == amd64
62
.if ${OPSYS} == FreeBSD && ${ARCH} == amd64
(-)files/patch-bug1602386 (+49 lines)
Line 0 Link Here
1
Fix build on FreeBSD/powerpc platforms.
2
3
https://bugzilla.mozilla.org/show_bug.cgi?id=1602386
4
5
--- lib/freebl/Makefile.orig	2019-12-04 01:03:31.000000000 +0100
6
+++ lib/freebl/Makefile	2019-12-11 16:48:47.959791000 +0100
7
@@ -788,5 +788,7 @@
8
 endif
9
 
10
 ifeq ($(CPU_ARCH),ppc)
11
-$(OBJDIR)/$(PROG_PREFIX)gcm-ppc$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec
12
+$(OBJDIR)/$(PROG_PREFIX)gcm-ppc$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
13
+$(OBJDIR)/$(PROG_PREFIX)gcm$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
14
+$(OBJDIR)/$(PROG_PREFIX)rijndael$(OBJ_SUFFIX): CFLAGS += -mcrypto -maltivec -mvsx
15
 endif
16
--- lib/freebl/blinit.c.orig	2019-12-11 17:45:06.930646000 +0100
17
+++ lib/freebl/blinit.c	2019-12-11 17:50:04.797680000 +0100
18
@@ -393,7 +393,12 @@
19
 
20
 #if defined(__powerpc__)
21
 
22
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
23
+#include <sys/types.h>
24
+#include <sys/sysctl.h>
25
+#else
26
 #include <sys/auxv.h>
27
+#endif
28
 
29
 // Defines from cputable.h in Linux kernel - PPC, letting us build on older kernels
30
 #ifndef PPC_FEATURE2_VEC_CRYPTO
31
@@ -405,7 +410,17 @@
32
 {
33
     char *disable_hw_crypto = PR_GetEnvSecure("NSS_DISABLE_PPC_GHASH");
34
 
35
-    long hwcaps = getauxval(AT_HWCAP2);
36
+    unsigned long hwcaps = 0;
37
+#if defined(__linux__)
38
+    hwcaps = getauxval(AT_HWCAP2);
39
+#elif defined(__FreeBSD__)
40
+#  if __FreeBSD__ >= 12
41
+    elf_aux_info(AT_HWCAP2, &hwcaps, sizeof(hwcaps));
42
+#  else
43
+    size_t len = sizeof(hwcaps);
44
+    sysctlbyname("hw.cpu_features2", &hwcaps, &len, NULL, 0);
45
+#  endif
46
+#endif
47
 
48
     ppc_crypto_support_ = hwcaps & PPC_FEATURE2_VEC_CRYPTO && disable_hw_crypto == NULL;
49
 }

Return to bug 242521