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 |
} |