download.lst | 4 external/nss/Wincompatible-function-pointer-types.patch.0 | 419 ++++++-------- external/nss/macos-dlopen.patch.0 | 18 external/nss/nss-android.patch.1 | 4 external/nss/nss-ios.patch | 32 - external/nss/nss.getrandom.patch | 23 external/nss/nss.patch | 16 external/nss/nss_macosx.patch | 4 8 files changed, 251 insertions(+), 269 deletions(-)
New commits: commit e39a1baeb4441e1736022a7fd07668bd5db2cb6e Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Mon Feb 17 12:06:37 2025 +0100 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Wed Mar 26 13:02:09 2025 +0100 nss: upgrade to 3.109 Downloaded from https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_109_RTM/src/nss-3.109-with-nspr-4.36.tar.gz Change-Id: I2210c384f629ccc9a671c2bb3260b822a302dd1d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181773 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/download.lst b/download.lst index 88c3b9993a4c..8b5eef2e8243 100644 --- a/download.lst +++ b/download.lst @@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz # three static lines # so that git cherry-pick # will not run into conflicts -NSS_SHA256SUM := 0ea8bab27345e4e0fc0ec0587d01bb54ba7eb46cb5b369c9ed59ee42baa78fa9 -NSS_TARBALL := nss-3.104-with-nspr-4.35.tar.gz +NSS_SHA256SUM := 25be414ff9c207dd67355f19e9e71001db45957b6bb74adf5b094c92e05116b4 +NSS_TARBALL := nss-3.109-with-nspr-4.36.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/nss/Wincompatible-function-pointer-types.patch.0 b/external/nss/Wincompatible-function-pointer-types.patch.0 index 1e9b7550e1da..dde8c21348cf 100644 --- a/external/nss/Wincompatible-function-pointer-types.patch.0 +++ b/external/nss/Wincompatible-function-pointer-types.patch.0 @@ -1,234 +1,215 @@ --- nspr/pr/tests/testfile.c +++ nspr/pr/tests/testfile.c -@@ -86,7 +86,7 @@ +@@ -72,7 +72,7 @@ #endif - #define TMPDIR_LEN 64 + #define TMPDIR_LEN 64 char testdir[TMPDIR_LEN]; --static PRInt32 PR_CALLBACK DirTest(void *argunused); -+static void PR_CALLBACK DirTest(void *argunused); +-static PRInt32 PR_CALLBACK DirTest(void* argunused); ++static void PR_CALLBACK DirTest(void* argunused); PRInt32 dirtest_failed = 0; - PRThread* create_new_thread(PRThreadType type, -@@ -123,7 +123,7 @@ - if (native_thread) { #if defined(_PR_PTHREADS) - pthread_t tid; -- if (!pthread_create(&tid, NULL, start, arg)) { -+ if (!pthread_create(&tid, NULL, (void *(*)(void *))start, arg)) { - return((PRThread *) tid); - } - else { -@@ -594,7 +594,7 @@ - return 0; +@@ -134,7 +134,7 @@ + if (native_thread) { + # if defined(_PR_PTHREADS) + pthread_t tid; +- if (!pthread_create(&tid, NULL, nativeStart, arg)) { ++ if (!pthread_create(&tid, NULL, (void *(*)(void *))nativeStart, arg)) { + return ((PRThread*)tid); + } else { + return (NULL); +@@ -595,7 +595,7 @@ + return 0; } --static PRInt32 PR_CALLBACK DirTest(void *arg) -+static void PR_CALLBACK DirTest(void *arg) - { - struct dirtest_arg *tinfo = (struct dirtest_arg *) arg; - PRFileDesc *fd_file; -@@ -618,14 +618,14 @@ - printf( - "testfile failed to create dir %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - fd_dir = PR_OpenDir(TEST_DIR); - if (fd_dir == NULL) { - printf( - "testfile failed to open dirctory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - strcpy(pathname, TEST_DIR); -@@ -645,7 +645,7 @@ - printf( - "testfile failed to create/open file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - PR_Close(fd_file); - } -@@ -664,7 +664,7 @@ - printf( - "testfile failed to create/open hidden file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - PR_Close(fd_file); -@@ -681,7 +681,7 @@ - if (hfile == INVALID_HANDLE_VALUE) { - printf("testfile failed to create/open hidden file %s [0, %d] ", - pathname, GetLastError()); -- return -1; -+ return; - } - CloseHandle(hfile); - -@@ -696,7 +696,7 @@ - if (hfile == INVALID_HANDLE_VALUE) { - printf("testfile failed to create/open hidden file %s [0, %d] ", - pathname, GetLastError()); -- return -1; -+ return; - } - CloseHandle(hfile); - -@@ -707,7 +707,7 @@ +-static PRInt32 PR_CALLBACK DirTest(void* arg) { ++static void PR_CALLBACK DirTest(void* arg) { + struct dirtest_arg* tinfo = (struct dirtest_arg*)arg; + PRFileDesc* fd_file; + PRDir* fd_dir; +@@ -617,13 +617,13 @@ + if ((PR_MkDir(TEST_DIR, 0777)) < 0) { + printf("testfile failed to create dir %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + fd_dir = PR_OpenDir(TEST_DIR); + if (fd_dir == NULL) { + printf("testfile failed to open dirctory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + strcpy(pathname, TEST_DIR); +@@ -641,7 +641,7 @@ if (fd_file == NULL) { - printf("testfile failed to create/open hidden file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; + printf("testfile failed to create/open file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; } PR_Close(fd_file); - #endif /* XP_UNIX */ -@@ -720,14 +720,14 @@ - printf( - "testfile failed to close dirctory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - fd_dir = PR_OpenDir(TEST_DIR); - if (fd_dir == NULL) { - printf( - "testfile failed to reopen dirctory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - /* -@@ -750,14 +750,14 @@ - printf( - "testfile failed to GetFileInfo file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - if (info.type != PR_FILE_FILE) { - printf( - "testfile incorrect fileinfo for file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - } - if (num_files != 0) -@@ -765,7 +765,7 @@ - printf( - "testfile failed to find all files in directory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - PR_CloseDir(fd_dir); -@@ -781,7 +781,7 @@ - printf( - "testfile failed to reopen dirctory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - DPRINTF(("Listing non-hidden files in directory %s ",TEST_DIR)); -@@ -789,7 +789,7 @@ - DPRINTF((" %s ",dirEntry->name)); - if (!strcmp(HIDDEN_FILE_NAME, dirEntry->name)) { - printf("testfile found hidden file %s ", pathname); -- return -1; -+ return; - } - - } -@@ -803,7 +803,7 @@ - printf( - "testfile failed to delete hidden file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - PR_CloseDir(fd_dir); -@@ -815,41 +815,41 @@ - printf( - "testfile failed to rename directory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - if (PR_FAILURE == PR_MkDir(TEST_DIR, 0777)) { - printf( - "testfile failed to recreate dir %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - if (PR_SUCCESS == PR_Rename(renamename, TEST_DIR)) { - printf( - "testfile renamed directory to existing name %s ", - renamename); -- return -1; -+ return; - } - - if (PR_FAILURE == PR_RmDir(TEST_DIR)) { - printf( - "testfile failed to rmdir %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - if (PR_FAILURE == PR_Rename(renamename, TEST_DIR)) { - printf( - "testfile failed to rename directory %s [%d, %d] ", - renamename, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - fd_dir = PR_OpenDir(TEST_DIR); - if (fd_dir == NULL) { - printf( - "testfile failed to reopen directory %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - - strcpy(pathname, TEST_DIR); -@@ -865,7 +865,7 @@ - printf( - "testfile failed to delete file %s [%d, %d] ", - pathname, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - } - -@@ -875,14 +875,13 @@ - printf( - "testfile failed to rmdir %s [%d, %d] ", - TEST_DIR, PR_GetError(), PR_GetOSError()); -- return -1; -+ return; - } - PR_EnterMonitor(tinfo->mon); - tinfo->done = 1; - PR_Notify(tinfo->mon); - PR_ExitMonitor(tinfo->mon); - -- return 0; + } +@@ -659,7 +659,7 @@ + if (fd_file == NULL) { + printf("testfile failed to create/open hidden file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + PR_Close(fd_file); +@@ -673,7 +673,7 @@ + if (hfile == INVALID_HANDLE_VALUE) { + printf("testfile failed to create/open hidden file %s [0, %d] ", pathname, + GetLastError()); +- return -1; ++ return; + } + CloseHandle(hfile); + +@@ -684,7 +684,7 @@ + if (hfile == INVALID_HANDLE_VALUE) { + printf("testfile failed to create/open hidden file %s [0, %d] ", pathname, + GetLastError()); +- return -1; ++ return; + } + CloseHandle(hfile); + +@@ -695,13 +695,13 @@ + if (PR_FAILURE == PR_CloseDir(fd_dir)) { + printf("testfile failed to close dirctory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + fd_dir = PR_OpenDir(TEST_DIR); + if (fd_dir == NULL) { + printf("testfile failed to reopen dirctory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + /* +@@ -723,19 +723,19 @@ + if ((PR_GetFileInfo(pathname, &info)) < 0) { + printf("testfile failed to GetFileInfo file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + if (info.type != PR_FILE_FILE) { + printf("testfile incorrect fileinfo for file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + } + if (num_files != 0) { + printf("testfile failed to find all files in directory %s [%d, %d] ", + TEST_DIR, PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + PR_CloseDir(fd_dir); +@@ -750,7 +750,7 @@ + if (fd_dir == NULL) { + printf("testfile failed to reopen dirctory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + DPRINTF(("Listing non-hidden files in directory %s ", TEST_DIR)); +@@ -758,7 +758,7 @@ + DPRINTF((" %s ", dirEntry->name)); + if (!strcmp(HIDDEN_FILE_NAME, dirEntry->name)) { + printf("testfile found hidden file %s ", pathname); +- return -1; ++ return; + } + } + /* +@@ -770,7 +770,7 @@ + if (PR_FAILURE == PR_Delete(pathname)) { + printf("testfile failed to delete hidden file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + PR_CloseDir(fd_dir); +@@ -781,35 +781,35 @@ + if (PR_FAILURE == PR_Rename(TEST_DIR, renamename)) { + printf("testfile failed to rename directory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + if (PR_FAILURE == PR_MkDir(TEST_DIR, 0777)) { + printf("testfile failed to recreate dir %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + if (PR_SUCCESS == PR_Rename(renamename, TEST_DIR)) { + printf("testfile renamed directory to existing name %s ", renamename); +- return -1; ++ return; + } + + if (PR_FAILURE == PR_RmDir(TEST_DIR)) { + printf("testfile failed to rmdir %s [%d, %d] ", TEST_DIR, PR_GetError(), + PR_GetOSError()); +- return -1; ++ return; + } + + if (PR_FAILURE == PR_Rename(renamename, TEST_DIR)) { + printf("testfile failed to rename directory %s [%d, %d] ", renamename, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + fd_dir = PR_OpenDir(TEST_DIR); + if (fd_dir == NULL) { + printf("testfile failed to reopen directory %s [%d, %d] ", TEST_DIR, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + + strcpy(pathname, TEST_DIR); +@@ -823,7 +823,7 @@ + if (PR_FAILURE == PR_Delete(pathname)) { + printf("testfile failed to delete file %s [%d, %d] ", pathname, + PR_GetError(), PR_GetOSError()); +- return -1; ++ return; + } + } + +@@ -832,14 +832,13 @@ + if (PR_FAILURE == PR_RmDir(TEST_DIR)) { + printf("testfile failed to rmdir %s [%d, %d] ", TEST_DIR, PR_GetError(), + PR_GetOSError()); +- return -1; ++ return; + } + PR_EnterMonitor(tinfo->mon); + tinfo->done = 1; + PR_Notify(tinfo->mon); + PR_ExitMonitor(tinfo->mon); + +- return 0; } /************************************************************************/ + diff --git a/external/nss/macos-dlopen.patch.0 b/external/nss/macos-dlopen.patch.0 index e8abc8f59c69..e8eacd8903f9 100644 --- a/external/nss/macos-dlopen.patch.0 +++ b/external/nss/macos-dlopen.patch.0 @@ -1,14 +1,14 @@ --- nspr/pr/src/linking/prlink.c +++ nspr/pr/src/linking/prlink.c -@@ -555,7 +555,7 @@ - * The reason is that DARWIN's dlopen ignores the provided path - * and checks for the plain filename in DYLD_LIBRARY_PATH, - * which could load an unexpected version of a library. */ -- if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL) { -+ if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL || strncmp(name, "@loader_path/", 13) == 0) { - /* no slash, allow to load from any location */ - okToLoad = PR_TRUE; - } else { +@@ -502,7 +502,7 @@ + * The reason is that DARWIN's dlopen ignores the provided path + * and checks for the plain filename in DYLD_LIBRARY_PATH, + * which could load an unexpected version of a library. */ +- if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL) { ++ if (strchr(name, PR_DIRECTORY_SEPARATOR) == NULL || strncmp(name, "@loader_path/", 13) == 0) { + /* no slash, allow to load from any location */ + okToLoad = PR_TRUE; + } else { --- nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c +++ nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_httpcertstore.c @@ -224,7 +224,11 @@ diff --git a/external/nss/nss-android.patch.1 b/external/nss/nss-android.patch.1 index aeb690666450..9a7178bc2e61 100644 --- a/external/nss/nss-android.patch.1 +++ b/external/nss/nss-android.patch.1 @@ -16,7 +16,7 @@ diff -ur nss.org/nspr/build/autoconf/config.sub nss/nspr/build/autoconf/config.s diff -ur nss.org/nspr/configure nss/nspr/configure --- nss.org/nspr/configure 2017-09-07 15:29:45.018246359 +0200 +++ nss/nspr/configure 2017-09-07 15:31:47.604075663 +0200 -@@ -2728,18 +2728,15 @@ +@@ -3253,18 +3253,15 @@ esac AS="$android_toolchain"/bin/"$android_tool_prefix"-as @@ -36,7 +36,7 @@ diff -ur nss.org/nspr/configure nss/nspr/configure - CXXFLAGS="-mandroid -I$android_platform/usr/include -fpic -fno-short-enums -fno-exceptions $CXXFLAGS" - LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform $LDFLAGS" - $as_echo "#define ANDROID 1" >>confdefs.h + printf "%s " "#define ANDROID 1" >>confdefs.h diff -ur nss.org/nss/Makefile nss/nss/Makefile --- nss.org/nss/Makefile 2017-09-07 15:29:44.933245745 +0200 diff --git a/external/nss/nss-ios.patch b/external/nss/nss-ios.patch index 6f6b149cead5..f52c588f859e 100644 --- a/external/nss/nss-ios.patch +++ b/external/nss/nss-ios.patch @@ -58,24 +58,15 @@ --- a/a/nss/lib/pk11wrap/pk11load.c +++ a/a/nss/lib/pk11wrap/pk11load.c -@@ -390,6 +390,8 @@ - /* - * load a new module into our address space and initialize it. - */ -+extern CK_RV NSSCKBI_C_GetFunctionList(); -+ - SECStatus - secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **oldModule) - { -@@ -468,6 +470,7 @@ +@@ -456,6 +456,7 @@ /* load the library. If this succeeds, then we have to remember to - * unload the library if anything goes wrong from here on out... - */ + * unload the library if anything goes wrong from here on out... + */ +#ifndef NSS_STATIC_PKCS11 // With NSS_STATIC_PKCS11, the only module wodule we load here is nssckbi #if defined(_WIN32) if (nssUTF8_Length(mod->dllName, NULL)) { wchar_t *dllNameWide = _NSSUTIL_UTF8ToWide(mod->dllName); -@@ -507,6 +510,10 @@ +@@ -495,6 +496,11 @@ mod->moduleDBFunc = (void *) PR_FindSymbol(library, "NSS_ReturnModuleSpecData"); } @@ -83,11 +74,12 @@ + if (strcmp(mod->dllName, "NSSCKBI") == 0) + fentry = NSSCKBI_C_GetFunctionList; +#endif ++ if (mod->moduleDBFunc == NULL) mod->isModuleDB = PR_FALSE; if ((ientry == NULL) && (fentry == NULL)) { -@@ -643,10 +650,12 @@ - } +@@ -545,10 +551,12 @@ + fail: mod->functionList = NULL; +#ifndef NSS_STATIC_PKCS11 @@ -99,6 +91,16 @@ return SECFailure; } +@@ -656,6 +664,8 @@ + /* + * load a new module into our address space and initialize it. + */ ++extern CK_RV NSSCKBI_C_GetFunctionList(); ++ + SECStatus + secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **oldModule) + { + --- a/a/nss/lib/ckfw/nssck.api +++ a/a/nss/lib/ckfw/nssck.api @@ -1842,7 +1842,11 @@ diff --git a/external/nss/nss.getrandom.patch b/external/nss/nss.getrandom.patch index b7f883b64d5a..658d3a2a3679 100644 --- a/external/nss/nss.getrandom.patch +++ b/external/nss/nss.getrandom.patch @@ -1,23 +1,22 @@ --- a/nss/nspr/pr/src/md/unix/uxrng.c +++ b/nss/nspr/pr/src/md/unix/uxrng.c -@@ -68,13 +68,18 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <fcntl.h> -+#include <dlfcn.h> +@@ -56,12 +56,17 @@ + # include <sys/types.h> + # include <sys/stat.h> + # include <fcntl.h> ++# include <dlfcn.h> - static int fdDevURandom; + static int fdDevURandom; static PRCallOnceType coOpenDevURandom; - static PRStatus OpenDevURandom( void ) - { -- fdDevURandom = open( "/dev/urandom", O_RDONLY ); + static PRStatus OpenDevURandom(void) { +- fdDevURandom = open("/dev/urandom", O_RDONLY); + static int (*lok_open_urandom)(); + if (!lok_open_urandom) + lok_open_urandom = dlsym(RTLD_DEFAULT, "lok_open_urandom"); + if (!lok_open_urandom || (fdDevURandom = lok_open_urandom()) < 0) + fdDevURandom = open( "/dev/urandom", O_RDONLY ); - return((-1 == fdDevURandom)? PR_FAILURE : PR_SUCCESS ); + return ((-1 == fdDevURandom) ? PR_FAILURE : PR_SUCCESS); } /* end OpenDevURandom() */ --- a/nss/nss/lib/freebl/unix_rand.c @@ -82,10 +81,10 @@ #include "secerr.h" #include "secrng.h" #include "prprf.h" -@@ -62,7 +63,11 @@ +@@ -66,7 +66,11 @@ * Reset the number of bytes to get and fall back to /dev/urandom. */ fileBytes = 0; - #endif + #endif /* platorm has getentropy */ - fd = open("/dev/urandom", O_RDONLY); + static int (*lok_open_urandom)(); + if (!lok_open_urandom) diff --git a/external/nss/nss.patch b/external/nss/nss.patch index cc9eeed1b009..7b89ffe7225d 100644 --- a/external/nss/nss.patch +++ b/external/nss/nss.patch @@ -11,15 +11,15 @@ # combo is not yet good at debugging inlined --- a/nss.orig/nspr/pr/src/misc/prnetdb.c 2017-08-29 23:44:13.690045031 +0530 +++ b/nss/nspr/pr/src/misc/prnetdb.c 2017-08-29 23:47:03.810814019 +0530 -@@ -441,7 +441,7 @@ - char *buf = *bufp; - PRIntn buflen = *buflenp; +@@ -405,7 +405,7 @@ + char* buf = *bufp; + PRIntn buflen = *buflenp; -- if (align && ((long)buf & (align - 1))) { -+ if (align && ((ptrdiff_t)buf & (align - 1))) { - PRIntn skip = align - ((ptrdiff_t)buf & (align - 1)); - if (buflen < skip) { - return 0; +- if (align && ((long)buf & (align - 1))) { ++ if (align && ((ptrdiff_t)buf & (align - 1))) { + PRIntn skip = align - ((ptrdiff_t)buf & (align - 1)); + if (buflen < skip) { + return 0; --- a/a/nss/cmd/platlibs.mk 2017-08-29 23:44:13.554044416 +0530 +++ b/b/nss/cmd/platlibs.mk 2017-08-29 23:46:09.638569150 +0530 @@ -10,17 +10,22 @@ diff --git a/external/nss/nss_macosx.patch b/external/nss/nss_macosx.patch index cc433fdfb766..13cf0cda706b 100644 --- a/external/nss/nss_macosx.patch +++ b/external/nss/nss_macosx.patch @@ -11,8 +11,8 @@ diff -ru a/nspr/configure b/nspr/configure arm*) CPU_ARCH=arm ;; -@@ -6483,7 +6486,7 @@ - +@@ -7221,7 +7221,7 @@ + fi DSO_CFLAGS=-fPIC - DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @executable_path/$@ -headerpad_max_install_names'