Sun Apr 3 00:22:30 2022 UTC ()
firefox: Update to 98.0.2

Changelog:
98.0.2:
Fixed

  * Fixed an issue preventing users from typing in Address Bar after opening
    new tab and pressing cmd + enter (bug 1757376)

  * Fixed an issue causing some users to crash in out-of-memory conditions (bug
    1757618)

  * Fixed an issue in session history which caused some sites to fail to load (
    bug 1758664)

  * Fixed an add-on specific compatibility issue (bug 1759162)

98.0.1:
Changed

  * Yandex and Mail.ru have been removed as optional search providers in the
    drop-down search menu in Firefox.

    If you previously installed a customized version of Firefox with Yandex or
    Mail.ru, offered through partner distribution channels, this release
    removes those customizations, including add-ons and default bookmarks.
    Where applicable, your browser will revert back to default settings, as
    offered by Mozilla. All other releases of Firefox remain unaffected by the
    change.

98.0:
New

  * Firefox has a new optimized download flow. Instead of prompting every time,
    files will download automatically. However, they can still be opened from
    the downloads panel with just one click. Easy! More information

    You'll find you have a number of options, including:

      + Always Open Similar Files: Make Firefox automatically open downloaded
        files of the same type with the system default application.
      + Show In Folder: Open the folder that contains your downloaded files.
      + Go To Download Page: Surfaces the download reference page even after
        leaving the site or closing the tab.
      + Copy Download Link: Copy the download link to share it, save it, or for
        any applicable use.
      + Delete: You can now delete downloaded files directly from the download
        panel and other download views using the context menu.
      + Remove From History: Remove a file from your list of downloaded files.
      + Clear Preview Panel: Clear the list of downloaded items in the preview
        panel that opens when you start a download.

    In this release, you'll also see that Firefox no longer asks what to do
    for each file by default. You won't be prompted to choose a helper
    application or save to disk before downloading a file unless you have
    changed your download action setting for that type of file.

    And now, every time you start a download, Firefox will automatically bring
    up the Downloads panel by default. This means you'll experience minimal
    interruptions and easily find your downloaded files. Plus, to avoid having
    to close it several times, the panel won't show if there are multiple
    downloads in progress.

    You can now click on a file in the Downloads panel to open it even before
    it has finished downloading. Firefox will open the file as soon as it is
    available. Firefox: saving you time and helping you get back to what you
    care about!

    Any files you download will be immediately saved on your disk. Depending on
    the current configuration, they'll be saved in your preferred download
    folder, or you'll be asked to select a location for each download. Windows
    and Linux users will find their downloaded files in the destination folder.
    They'll no longer be put in the Temp folder.

  * Firefox allows users to choose from a number of built-in search engines to
    set as their default. In this release, some users who had previously
    configured a default engine might notice their default search engine has
    changed since Mozilla was unable to secure formal permission to continue
    including certain search engines in Firefox.

Fixed

  * Now, you can set a default app to open a file type. Choose the application
    you want to use to open files of a specific type in your Firefox settings.

  * After updating to Firefox version 98, "Always ask" download actions will
    now be reset.

  * Various security fixes.

Security fixes:
#CVE-2022-26383: Browser window spoof using fullscreen mode
#CVE-2022-26384: iframe allow-scripts sandbox bypass
#CVE-2022-26387: Time-of-check time-of-use bug when verifying add-on signatures
#CVE-2022-26381: Use-after-free in text reflows
#CVE-2022-26382: Autofill Text could be exfiltrated via side-channel attacks
#CVE-2022-26385: Use-after-free in thread shutdown
#CVE-2022-0843: Memory safety bugs fixed in Firefox 98


(ryoon)
diff -r1.514 -r1.515 pkgsrc/www/firefox/Makefile
diff -r1.462 -r1.463 pkgsrc/www/firefox/distinfo
diff -r0 -r1.1 pkgsrc/www/firefox/patches/patch-js_src_jit_GenerateAtomicOperations.py

cvs diff -r1.514 -r1.515 pkgsrc/www/firefox/Makefile (switch to unified diff)

--- pkgsrc/www/firefox/Makefile 2022/03/28 10:59:30 1.514
+++ pkgsrc/www/firefox/Makefile 2022/04/03 00:22:30 1.515
@@ -1,178 +1,177 @@ @@ -1,178 +1,177 @@
1# $NetBSD: Makefile,v 1.514 2022/03/28 10:59:30 tnn Exp $ 1# $NetBSD: Makefile,v 1.515 2022/04/03 00:22:30 ryoon Exp $
2 2
3FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR} 3FIREFOX_VER= ${MOZ_BRANCH}${MOZ_BRANCH_MINOR}
4MOZ_BRANCH= 97.0 4MOZ_BRANCH= 98.0
5MOZ_BRANCH_MINOR= .2 5MOZ_BRANCH_MINOR= .2
6 6
7DISTNAME= firefox-${FIREFOX_VER}.source 7DISTNAME= firefox-${FIREFOX_VER}.source
8PKGNAME= ${DISTNAME:S/.source//:S/b/beta/:S/esr//} 8PKGNAME= ${DISTNAME:S/.source//:S/b/beta/:S/esr//}
9PKGREVISION= 1 
10CATEGORIES= www 9CATEGORIES= www
11MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/} 10MASTER_SITES+= ${MASTER_SITE_MOZILLA:=firefox/releases/${FIREFOX_VER}/source/}
12EXTRACT_SUFX= .tar.xz 11EXTRACT_SUFX= .tar.xz
13 12
14NODEJSKIT= nodejs-output-95.0.tgz 13NODEJSKIT= nodejs-output-95.0.tgz
15DISTFILES= ${DEFAULT_DISTFILES} ${NODEJSKIT} 14DISTFILES= ${DEFAULT_DISTFILES} ${NODEJSKIT}
16SITES.${NODEJSKIT}= ${MASTER_SITE_LOCAL} 15SITES.${NODEJSKIT}= ${MASTER_SITE_LOCAL}
17 16
18MAINTAINER= ryoon@NetBSD.org 17MAINTAINER= ryoon@NetBSD.org
19HOMEPAGE= https://www.mozilla.org/en-US/firefox/ 18HOMEPAGE= https://www.mozilla.org/en-US/firefox/
20COMMENT= Web browser with support for extensions (version ${FIREFOX_VER:tu:C/\\.[[:digit:]\.]*//}) 19COMMENT= Web browser with support for extensions (version ${FIREFOX_VER:tu:C/\\.[[:digit:]\.]*//})
21LICENSE= mpl-1.1 20LICENSE= mpl-1.1
22 21
23# -------- BEFORE UPDATING THIS PACKAGE PLEASE READ & UNDERSTAND: ------- 22# -------- BEFORE UPDATING THIS PACKAGE PLEASE READ & UNDERSTAND: -------
24# 23#
25# This package works around a (stupid) build time dependency on nodejs 24# This package works around a (stupid) build time dependency on nodejs
26# (which is not available for all architectures and unnecessary for the 25# (which is not available for all architectures and unnecessary for the
27# real build). To do this, it places some additional burden on the 26# real build). To do this, it places some additional burden on the
28# maintainer. 27# maintainer.
29# 28#
30# While working on the package, please make sure you have 29# While working on the package, please make sure you have
31# 30#
32# FIREFOX_MAINTAINER=yes 31# FIREFOX_MAINTAINER=yes
33# 32#
34# set in your build environment. 33# set in your build environment.
35# When the package is ready for commit (but before commit), do: 34# When the package is ready for commit (but before commit), do:
36# 35#
37# make maintainer-files 36# make maintainer-files
38# 37#
39# This will do another round (depending on state of your work dir at this 38# This will do another round (depending on state of your work dir at this
40# moment) of one or two builds and generate a cache of all output that 39# moment) of one or two builds and generate a cache of all output that
41# nodejs generates during a build. 40# nodejs generates during a build.
42# 41#
43# When this is done, just commit the results (they will be in the files/ 42# When this is done, just commit the results (they will be in the files/
44# directory). 43# directory).
45# 44#
46# ----------------------------------------------------------------------- 45# -----------------------------------------------------------------------
47 46
48UNLIMIT_RESOURCES+= datasize virtualsize 47UNLIMIT_RESOURCES+= datasize virtualsize
49 48
50WRKSRC= ${WRKDIR}/firefox-${FIREFOX_VER:C/b.*//} 49WRKSRC= ${WRKDIR}/firefox-${FIREFOX_VER:C/b.*//}
51 50
52MOZILLA_DIR= # empty 51MOZILLA_DIR= # empty
53 52
54# Note: In --enable-chrome-format=flat case, 53# Note: In --enable-chrome-format=flat case,
55# when updating remember to conditionalise about-background.png in PLIST 54# when updating remember to conditionalise about-background.png in PLIST
56CONFIGURE_ARGS+= --enable-application=browser 55CONFIGURE_ARGS+= --enable-application=browser
57 56
58#CFLAGS+= -I${PREFIX}/include/nspr 57#CFLAGS+= -I${PREFIX}/include/nspr
59# for lang/gcc6 58# for lang/gcc6
60CFLAGS+= -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS 59CFLAGS+= -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS
61CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS 60CFLAGS.SunOS+= -D_POSIX_PTHREAD_SEMANTICS
62 61
63LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/${PKGBASE} 62LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib/${PKGBASE}
64LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib 63LDFLAGS+= ${COMPILER_RPATH_FLAG}${PREFIX}/lib
65LDFLAGS.DragonFly+= -lplc4 -lnspr4 64LDFLAGS.DragonFly+= -lplc4 -lnspr4
66LDFLAGS.FreeBSD+= -lplc4 -lnspr4 65LDFLAGS.FreeBSD+= -lplc4 -lnspr4
67LDFLAGS.Linux+= -lnspr4 66LDFLAGS.Linux+= -lnspr4
68LDFLAGS.SunOS+= -lm 67LDFLAGS.SunOS+= -lm
69 68
70# XXX not sure how to test this! likely unnecessary 69# XXX not sure how to test this! likely unnecessary
71NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/plugin-container 70NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/plugin-container
72# For RLBox WASM sandbox. Sync condition with mozilla-common.mk 71# For RLBox WASM sandbox. Sync condition with mozilla-common.mk
73.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "i386" 72.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "i386"
74NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/firefox 73NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/firefox
75NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/firefox-bin 74NOT_PAX_MPROTECT_SAFE+= lib/${PKGBASE}/firefox-bin
76.endif 75.endif
77 76
78# Avoid ld "invalid section index" errors. 77# Avoid ld "invalid section index" errors.
79BUILDLINK_TRANSFORM.SunOS+= rm:-fdata-sections 78BUILDLINK_TRANSFORM.SunOS+= rm:-fdata-sections
80BUILDLINK_TRANSFORM.SunOS+= rm:-ffunction-sections 79BUILDLINK_TRANSFORM.SunOS+= rm:-ffunction-sections
81BUILDLINK_TRANSFORM.SunOS+= rm:-pie 80BUILDLINK_TRANSFORM.SunOS+= rm:-pie
82 81
83# Workaround for https://bugs.llvm.org/show_bug.cgi?id=46366 82# Workaround for https://bugs.llvm.org/show_bug.cgi?id=46366
84BUILDLINK_TRANSFORM.NetBSD+= rm:-fexperimental-new-pass-manager 83BUILDLINK_TRANSFORM.NetBSD+= rm:-fexperimental-new-pass-manager
85 84
86SUBST_CLASSES+= dfly_malloc_h 85SUBST_CLASSES+= dfly_malloc_h
87SUBST_STAGE.dfly_malloc_h= pre-configure 86SUBST_STAGE.dfly_malloc_h= pre-configure
88SUBST_MESSAGE.dfly_malloc_h= Dont include malloc.h on dragonflybsd 87SUBST_MESSAGE.dfly_malloc_h= Dont include malloc.h on dragonflybsd
89SUBST_SED.dfly_malloc_h= -e 's,HAVE_MALLOC_H,HAVE_MALLOC_H \&\& !defined(__DragonFly__),g' 88SUBST_SED.dfly_malloc_h= -e 's,HAVE_MALLOC_H,HAVE_MALLOC_H \&\& !defined(__DragonFly__),g'
90SUBST_FILES.dfly_malloc_h+= media/ffvpx/libavutil/mem.c 89SUBST_FILES.dfly_malloc_h+= media/ffvpx/libavutil/mem.c
91 90
92.include "mozilla-common.mk" 91.include "mozilla-common.mk"
93.include "options.mk" 92.include "options.mk"
94 93
95CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/header.py 94CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/header.py
96CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/typelib.py 95CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/typelib.py
97CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/xpidl.py 96CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/xpidl.py
98CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/xpt.py 97CHECK_INTERPRETER_SKIP+= lib/firefox-sdk/sdk/bin/xpt.py
99 98
100CHECK_WRKREF_SKIP+= lib/${MOZILLA}/omni.ja 99CHECK_WRKREF_SKIP+= lib/${MOZILLA}/omni.ja
101 100
102MOZILLA= ${PKGBASE} 101MOZILLA= ${PKGBASE}
103 102
104.if !empty(PKG_OPTIONS:Mofficial-mozilla-branding) 103.if !empty(PKG_OPTIONS:Mofficial-mozilla-branding)
105MOZILLA_NAME= Firefox 104MOZILLA_NAME= Firefox
106MOZILLA_BRANDING= official 105MOZILLA_BRANDING= official
107.else 106.else
108MOZILLA_NAME= Browser 107MOZILLA_NAME= Browser
109MOZILLA_BRANDING= unofficial 108MOZILLA_BRANDING= unofficial
110.endif 109.endif
111 110
112pre-configure: 111pre-configure:
113 cd ${WRKSRC} && autoconf 112 cd ${WRKSRC} && autoconf
114 cd ${WRKSRC}/js/src && autoconf 113 cd ${WRKSRC}/js/src && autoconf
115 cd ${WRKSRC} && mkdir ${OBJDIR} 114 cd ${WRKSRC} && mkdir ${OBJDIR}
116 cd ${WRKSRC}/${OBJDIR} && touch old-configure.vars 115 cd ${WRKSRC}/${OBJDIR} && touch old-configure.vars
117# Do not fetch Rust Cargo file via network during build 116# Do not fetch Rust Cargo file via network during build
118.if !defined(FIREFOX_MAINTAINER) 117.if !defined(FIREFOX_MAINTAINER)
119 mv ${WRKDIR}/dist ${WRKSRC}/${OBJDIR} 118 mv ${WRKDIR}/dist ${WRKSRC}/${OBJDIR}
120.endif 119.endif
121 120
122.if defined(FIREFOX_MAINTAINER) 121.if defined(FIREFOX_MAINTAINER)
123# Create files needed only by the firefox maintainer when updating 122# Create files needed only by the firefox maintainer when updating
124# the package 123# the package
125# XXX - manually removing the .*_done files is wrong! 124# XXX - manually removing the .*_done files is wrong!
126.PHONY: build-list 125.PHONY: build-list
127build-list: 126build-list:
128 cd ${WRKSRC}/${OBJDIR}/dist/bin/browser/chrome && \ 127 cd ${WRKSRC}/${OBJDIR}/dist/bin/browser/chrome && \
129 find . -type f | sort > ${OUT:Q} 128 find . -type f | sort > ${OUT:Q}
130 129
131NODE_LIST= "${WRKDIR}/node.list" 130NODE_LIST= "${WRKDIR}/node.list"
132NO_NODE_LIST= "${WRKDIR}/no-node.list" 131NO_NODE_LIST= "${WRKDIR}/no-node.list"
133NODE_FILES= "${WRKDIR}/node.flist" 132NODE_FILES= "${WRKDIR}/node.flist"
134 133
135.PHONY: maintainer-files 134.PHONY: maintainer-files
136maintainer-files: 135maintainer-files:
137 rm -f ${FILESDIR}/node-wrapper.sh 136 rm -f ${FILESDIR}/node-wrapper.sh
138 V=$$( node -v ) && \ 137 V=$$( node -v ) && \
139 printf '#! /bin/sh\n\nVERS=%s\n\nif [ "$$1" = "-v" ] || [ "$$1" = "--version" ]; then\n\tprintf "$${VERS}\\n"\nfi\n\nexit 0\n' $$V \ 138 printf '#! /bin/sh\n\nVERS=%s\n\nif [ "$$1" = "-v" ] || [ "$$1" = "--version" ]; then\n\tprintf "$${VERS}\\n"\nfi\n\nexit 0\n' $$V \
140 > ${FILESDIR}/node-wrapper.sh && \ 139 > ${FILESDIR}/node-wrapper.sh && \
141 chmod 0755 ${FILESDIR}/node-wrapper.sh 140 chmod 0755 ${FILESDIR}/node-wrapper.sh
142 rm -f ${WRKDIR}/.build_done ${WRKDIR}/.configure_done 141 rm -f ${WRKDIR}/.build_done ${WRKDIR}/.configure_done
143 ${MAKE} MAINTAINER_INTERNAL=yes build 142 ${MAKE} MAINTAINER_INTERNAL=yes build
144 ${MAKE} MAINTAINER_INTERNAL=yes OUT="${NO_NODE_LIST}" build-list 143 ${MAKE} MAINTAINER_INTERNAL=yes OUT="${NO_NODE_LIST}" build-list
145 ${MAKE} OUT="${NODE_LIST}" build-list 144 ${MAKE} OUT="${NODE_LIST}" build-list
146 ${DIFF} -u "${NO_NODE_LIST}" "${NODE_LIST}" | \ 145 ${DIFF} -u "${NO_NODE_LIST}" "${NODE_LIST}" | \
147 ${AWK} \ 146 ${AWK} \
148 '/^\+\.\//{ printf("dist/bin/browser/chrome/%s\n", gensub(/^\+\.\//, "", "")) }' \ 147 '/^\+\.\//{ printf("dist/bin/browser/chrome/%s\n", gensub(/^\+\.\//, "", "")) }' \
149 > "${NODE_FILES}" 148 > "${NODE_FILES}"
150 cd ${WRKSRC}/${OBJDIR} && tar -c -T "${NODE_FILES}" -z \ 149 cd ${WRKSRC}/${OBJDIR} && tar -c -T "${NODE_FILES}" -z \
151 -f ${FILESDIR}/nodejs-output-${PKGVERSION_NOREV}.tgz 150 -f ${FILESDIR}/nodejs-output-${PKGVERSION_NOREV}.tgz
152.endif 151.endif
153 152
154post-build: 153post-build:
155 ${SED} -e 's|@MOZILLA@|${MOZILLA}|g' \ 154 ${SED} -e 's|@MOZILLA@|${MOZILLA}|g' \
156 -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|g' \ 155 -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|g' \
157 -e 's|@FIREFOX_ICON@|${MOZILLA}|g' \ 156 -e 's|@FIREFOX_ICON@|${MOZILLA}|g' \
158 < ${FILESDIR}/desktop.in \ 157 < ${FILESDIR}/desktop.in \
159 > ${WRKDIR}/desktop 158 > ${WRKDIR}/desktop
160 159
161INSTALLATION_DIRS+= share/applications 160INSTALLATION_DIRS+= share/applications
162 161
163post-install: 162post-install:
164 ${ECHO} '#! /bin/sh' > ${DESTDIR}${PREFIX}/bin/${MOZILLA} 163 ${ECHO} '#! /bin/sh' > ${DESTDIR}${PREFIX}/bin/${MOZILLA}
165 ${ECHO} '${PREFIX}/lib/${MOZILLA}/${MOZILLA} "$$@"' >> \ 164 ${ECHO} '${PREFIX}/lib/${MOZILLA}/${MOZILLA} "$$@"' >> \
166 ${DESTDIR}${PREFIX}/bin/${MOZILLA} 165 ${DESTDIR}${PREFIX}/bin/${MOZILLA}
167 ${CHMOD} 755 ${DESTDIR}${PREFIX}/bin/${MOZILLA} 166 ${CHMOD} 755 ${DESTDIR}${PREFIX}/bin/${MOZILLA}
168 ${INSTALL_DATA} ${WRKDIR}/desktop \ 167 ${INSTALL_DATA} ${WRKDIR}/desktop \
169 ${DESTDIR}${PREFIX}/share/applications/${MOZILLA}.desktop 168 ${DESTDIR}${PREFIX}/share/applications/${MOZILLA}.desktop
170.for i in 16 22 24 32 48 64 128 256 169.for i in 16 22 24 32 48 64 128 256
171 ${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/icons/hicolor/${i}x${i}/apps 170 ${INSTALL_DATA_DIR} ${DESTDIR}${PREFIX}/share/icons/hicolor/${i}x${i}/apps
172 ${INSTALL_DATA} ${WRKSRC}/browser/branding/${MOZILLA_BRANDING}/default${i}.png \ 171 ${INSTALL_DATA} ${WRKSRC}/browser/branding/${MOZILLA_BRANDING}/default${i}.png \
173 ${DESTDIR}${PREFIX}/share/icons/hicolor/${i}x${i}/apps/${MOZILLA}.png 172 ${DESTDIR}${PREFIX}/share/icons/hicolor/${i}x${i}/apps/${MOZILLA}.png
174.endfor 173.endfor
175 174
176.include "../../graphics/hicolor-icon-theme/buildlink3.mk" 175.include "../../graphics/hicolor-icon-theme/buildlink3.mk"
177.include "../../sysutils/desktop-file-utils/desktopdb.mk" 176.include "../../sysutils/desktop-file-utils/desktopdb.mk"
178.include "../../mk/bsd.pkg.mk" 177.include "../../mk/bsd.pkg.mk"

cvs diff -r1.462 -r1.463 pkgsrc/www/firefox/distinfo (switch to unified diff)

--- pkgsrc/www/firefox/distinfo 2022/03/06 04:51:48 1.462
+++ pkgsrc/www/firefox/distinfo 2022/04/03 00:22:30 1.463
@@ -1,43 +1,44 @@ @@ -1,43 +1,44 @@
1$NetBSD: distinfo,v 1.462 2022/03/06 04:51:48 ryoon Exp $ 1$NetBSD: distinfo,v 1.463 2022/04/03 00:22:30 ryoon Exp $
2 2
3BLAKE2s (firefox-97.0.2.source.tar.xz) = 9807fb791d04a9f73008ba50395ac67ddfb5222f48aa7e6d76af7da62d7aa824 3BLAKE2s (firefox-98.0.2.source.tar.xz) = 9304273e193d3f8ed5d5d4ddd5cc6dcfcd510a19fb8e9f4721ee94e8ee288e8f
4SHA512 (firefox-97.0.2.source.tar.xz) = efbf33723f5979025454b6cc183927afb4bc72a51c00b5d45940122da596b8ac99080f3a6a59f5dd85a725e356349ec57e7eba1c36cdab7d55a28b04895d274c 4SHA512 (firefox-98.0.2.source.tar.xz) = b567b53fcdc08491063d535545f558ea56ec5be02ca540661de116986245b79f509e0103cea5661faf9f4b3d30b67758ebdb4b30401e260ee27cbb300203f36e
5Size (firefox-97.0.2.source.tar.xz) = 491844932 bytes 5Size (firefox-98.0.2.source.tar.xz) = 479907760 bytes
6BLAKE2s (nodejs-output-95.0.tgz) = c44b37d3605524a49157002f01c29f568f04194b0e635bc312de7ffdeb9a74c9 6BLAKE2s (nodejs-output-95.0.tgz) = c44b37d3605524a49157002f01c29f568f04194b0e635bc312de7ffdeb9a74c9
7SHA512 (nodejs-output-95.0.tgz) = 2faf326f4e100b66f8597c365cc2eb5d0eee26aae92a7e2446891f2178041aa71ba16eae37000acacd43a657025ec11c18db73b112f5c49cc21cdb882da6d798 7SHA512 (nodejs-output-95.0.tgz) = 2faf326f4e100b66f8597c365cc2eb5d0eee26aae92a7e2446891f2178041aa71ba16eae37000acacd43a657025ec11c18db73b112f5c49cc21cdb882da6d798
8Size (nodejs-output-95.0.tgz) = 200627 bytes 8Size (nodejs-output-95.0.tgz) = 200627 bytes
9SHA1 (patch-aa) = 00561a3c0e5ba884145777c2abae64644bf40097 9SHA1 (patch-aa) = 00561a3c0e5ba884145777c2abae64644bf40097
10SHA1 (patch-browser_app_profile_firefox.js) = 89cea0a66457c96ad0b94aaa524aa5942ad781d0 10SHA1 (patch-browser_app_profile_firefox.js) = 89cea0a66457c96ad0b94aaa524aa5942ad781d0
11SHA1 (patch-build_moz.configure_rust.configure) = 25ddfacd29cebbc6db005dbe61a2a7446d480678 11SHA1 (patch-build_moz.configure_rust.configure) = 25ddfacd29cebbc6db005dbe61a2a7446d480678
12SHA1 (patch-config_gcc-stl-wrapper.template.h) = 9d1f15ff487efa9202114d19ed5668b4e7aa032a 12SHA1 (patch-config_gcc-stl-wrapper.template.h) = 9d1f15ff487efa9202114d19ed5668b4e7aa032a
13SHA1 (patch-config_makefiles_rust.mk) = fa9f0f59a179cae2562a76110fada49039490fb8 13SHA1 (patch-config_makefiles_rust.mk) = fa9f0f59a179cae2562a76110fada49039490fb8
14SHA1 (patch-dom_base_nsAttrName.h) = ac7ba441a3b27df2855cf2673eea36b1cb44ad49 14SHA1 (patch-dom_base_nsAttrName.h) = ac7ba441a3b27df2855cf2673eea36b1cb44ad49
15SHA1 (patch-gfx_angle_checkout_src_common_third__party_smhasher_src_PMurHash.cpp) = e458c9c8dc66edc69c1874734af28a77fc5e3993 15SHA1 (patch-gfx_angle_checkout_src_common_third__party_smhasher_src_PMurHash.cpp) = e458c9c8dc66edc69c1874734af28a77fc5e3993
16SHA1 (patch-gfx_angle_checkout_src_compiler_translator_InfoSink.h) = b2adce9e65662283a11b6dcff40e95523e940045 16SHA1 (patch-gfx_angle_checkout_src_compiler_translator_InfoSink.h) = b2adce9e65662283a11b6dcff40e95523e940045
17SHA1 (patch-gfx_skia_skia_src_core_SkCpu.cpp) = 36218819254f3681b9c717d652ea78c9f20d49ad 17SHA1 (patch-gfx_skia_skia_src_core_SkCpu.cpp) = 36218819254f3681b9c717d652ea78c9f20d49ad
18SHA1 (patch-gfx_wr_swgl_build.rs) = df6ebfaabb4d27994e59a9d0eaf12c7cf08415fb 18SHA1 (patch-gfx_wr_swgl_build.rs) = df6ebfaabb4d27994e59a9d0eaf12c7cf08415fb
19SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 4a6606da590cfb8d855bde58b9c6f90e98d0870c 19SHA1 (patch-ipc_chromium_src_base_message__pump__libevent.cc) = 4a6606da590cfb8d855bde58b9c6f90e98d0870c
20SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = 35d20981d33ccdb1d8ffb8039e48798777f11658 20SHA1 (patch-ipc_chromium_src_base_platform__thread__posix.cc) = 35d20981d33ccdb1d8ffb8039e48798777f11658
21SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = 6cdd0fe60455eab8f9846257c2bfea207f19478b 21SHA1 (patch-ipc_glue_GeckoChildProcessHost.cpp) = 6cdd0fe60455eab8f9846257c2bfea207f19478b
 22SHA1 (patch-js_src_jit_GenerateAtomicOperations.py) = a4f30476f9d8a1889538f27a244b319fde8e4309
22SHA1 (patch-js_src_jit_ProcessExecutableMemory.cpp) = fad103cc698f9828ad58f742231984ec2bc27605 23SHA1 (patch-js_src_jit_ProcessExecutableMemory.cpp) = fad103cc698f9828ad58f742231984ec2bc27605
23SHA1 (patch-js_src_jit_arm64_vixl_MozCpu-vixl.cpp) = fdc522e3fb626b1b8a2ebf19ad60bfc25dfa4183 24SHA1 (patch-js_src_jit_arm64_vixl_MozCpu-vixl.cpp) = fdc522e3fb626b1b8a2ebf19ad60bfc25dfa4183
24SHA1 (patch-js_src_util_NativeStack.cpp) = a0a16d8d8d78d3cc3f4d2a508586f1a7821f7dba 25SHA1 (patch-js_src_util_NativeStack.cpp) = a0a16d8d8d78d3cc3f4d2a508586f1a7821f7dba
25SHA1 (patch-js_src_vm_ArrayBufferObject.cpp) = 0501fdcae11568ae4ea78e0d2f6b3750b7a67d47 26SHA1 (patch-js_src_vm_ArrayBufferObject.cpp) = 0501fdcae11568ae4ea78e0d2f6b3750b7a67d47
26SHA1 (patch-libwebrtc.diff) = ad0b7b4ef00cc43d08eb5e94a4d600fd62cd6783 27SHA1 (patch-libwebrtc.diff) = ad0b7b4ef00cc43d08eb5e94a4d600fd62cd6783
27SHA1 (patch-media_ffvpx_libavutil_arm_bswap.h) = de58daa0fd23d4fec50426602b65c9ea5862558a 28SHA1 (patch-media_ffvpx_libavutil_arm_bswap.h) = de58daa0fd23d4fec50426602b65c9ea5862558a
28SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = 2ef11da83c90c41490db4c0d9809c3e1826b488a 29SHA1 (patch-media_libcubeb_src_cubeb__alsa.c) = 2ef11da83c90c41490db4c0d9809c3e1826b488a
29SHA1 (patch-media_libcubeb_src_moz.build) = e4e64a1135cf4157ae5b6f7c1710ebd076953479 30SHA1 (patch-media_libcubeb_src_moz.build) = e4e64a1135cf4157ae5b6f7c1710ebd076953479
30SHA1 (patch-media_libpng_pngpriv.h) = c8084332560017cd7c9b519b61d125fa28af0dbc 31SHA1 (patch-media_libpng_pngpriv.h) = c8084332560017cd7c9b519b61d125fa28af0dbc
31SHA1 (patch-media_libtheora_lib_info.c) = f6dbf536d73859a1ff78304c2e9f6a6f74dac01f 32SHA1 (patch-media_libtheora_lib_info.c) = f6dbf536d73859a1ff78304c2e9f6a6f74dac01f
32SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 2e951d7d91934751608e99628fc144632d8a3b5c 33SHA1 (patch-media_webrtc_trunk_webrtc_modules_video__capture_linux_device__info__linux.cc) = 2e951d7d91934751608e99628fc144632d8a3b5c
33SHA1 (patch-modules_fdlibm_src_math__private.h) = 6ae3b0077b4a8c6088c35769fa1972cfc44ea9c1 34SHA1 (patch-modules_fdlibm_src_math__private.h) = 6ae3b0077b4a8c6088c35769fa1972cfc44ea9c1
34SHA1 (patch-mozglue_misc_Uptime.cpp) = daefe25ef1ebc8e4d3735017b9e8ac68c4710a00 35SHA1 (patch-mozglue_misc_Uptime.cpp) = daefe25ef1ebc8e4d3735017b9e8ac68c4710a00
35SHA1 (patch-nsprpub_pr_src_pthreads_ptsynch.c) = 13e512c7ee9fa1e14ba415d62fa853e5fbfc91c0 36SHA1 (patch-nsprpub_pr_src_pthreads_ptsynch.c) = 13e512c7ee9fa1e14ba415d62fa853e5fbfc91c0
36SHA1 (patch-security_nss_lib_freebl_mpi_mpi.c) = a7cd867916524770609d1c307a65b315b88456f4 37SHA1 (patch-security_nss_lib_freebl_mpi_mpi.c) = a7cd867916524770609d1c307a65b315b88456f4
37SHA1 (patch-third__party_libwebrtc_system__wrappers_source_cpu__features__linux.cc) = b90e22b50879f7adcc1da3a993f52c0701b720f8 38SHA1 (patch-third__party_libwebrtc_system__wrappers_source_cpu__features__linux.cc) = b90e22b50879f7adcc1da3a993f52c0701b720f8
38SHA1 (patch-toolkit_components_terminator_nsTerminator.cpp) = 1c1397f6177728cf9deb2b74708069b9d09509c3 39SHA1 (patch-toolkit_components_terminator_nsTerminator.cpp) = 1c1397f6177728cf9deb2b74708069b9d09509c3
39SHA1 (patch-toolkit_modules_subprocess_subprocess__shared__unix.js) = 22a39e54e042ab2270a3cb54e4e307c8900cad12 40SHA1 (patch-toolkit_modules_subprocess_subprocess__shared__unix.js) = 22a39e54e042ab2270a3cb54e4e307c8900cad12
40SHA1 (patch-toolkit_mozapps_installer_packager.mk) = 706635b76a7b525794aba95e95544f09e18bb662 41SHA1 (patch-toolkit_mozapps_installer_packager.mk) = 706635b76a7b525794aba95e95544f09e18bb662
41SHA1 (patch-widget_gtk_DMABufSurface.cpp) = 72bc9554f075734df12e1748fb8965dce8318de5 42SHA1 (patch-widget_gtk_DMABufSurface.cpp) = 72bc9554f075734df12e1748fb8965dce8318de5
42SHA1 (patch-xpcom_base_nscore.h) = 1ac4d34d3c9e80bc1ac966c6c84cb320bc0fa1ec 43SHA1 (patch-xpcom_base_nscore.h) = 1ac4d34d3c9e80bc1ac966c6c84cb320bc0fa1ec
43SHA1 (patch-xpcom_reflect_xptcall_md_unix_moz.build) = f7e491c7b62a5332066473bfc815e0050672a372 44SHA1 (patch-xpcom_reflect_xptcall_md_unix_moz.build) = f7e491c7b62a5332066473bfc815e0050672a372

File Added: pkgsrc/www/firefox/patches/Attic/patch-js_src_jit_GenerateAtomicOperations.py
$NetBSD: patch-js_src_jit_GenerateAtomicOperations.py,v 1.1 2022/04/03 00:22:30 ryoon Exp $

* Fix build under 32-bit architecture, for example NetBSD/i386.
  From: https://bugzilla.mozilla.org/show_bug.cgi?id=1756347

--- js/src/jit/GenerateAtomicOperations.py.orig	2022-03-03 09:53:14.696789711 +0000
+++ js/src/jit/GenerateAtomicOperations.py
@@ -10,6 +10,7 @@ import buildconfig
 
 is_64bit = "JS_64BIT" in buildconfig.defines
 cpu_arch = buildconfig.substs["CPU_ARCH"]
+is_gcc = buildconfig.substs["CC_TYPE"] == "gcc"
 
 
 def fmt_insn(s):
@@ -19,21 +20,21 @@ def fmt_insn(s):
 def gen_seqcst(fun_name):
     if cpu_arch in ("x86", "x86_64"):
         return r"""
-            inline void %(fun_name)s() {
+            INLINE_ATTR void %(fun_name)s() {
                 asm volatile ("mfence\n\t" ::: "memory");
             }""" % {
             "fun_name": fun_name,
         }
     if cpu_arch == "aarch64":
         return r"""
-            inline void %(fun_name)s() {
+            INLINE_ATTR void %(fun_name)s() {
                 asm volatile ("dmb ish\n\t" ::: "memory");
             }""" % {
             "fun_name": fun_name,
         }
     if cpu_arch == "arm":
         return r"""
-            inline void %(fun_name)s() {
+            INLINE_ATTR void %(fun_name)s() {
                 asm volatile ("dmb sy\n\t" ::: "memory");
             }""" % {
             "fun_name": fun_name,
@@ -63,7 +64,7 @@ def gen_load(fun_name, cpp_type, size, b
         if barrier:
             insns += fmt_insn("mfence")
         return """
-            inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
                 %(cpp_type)s res;
                 asm volatile (%(insns)s
                     : [res] "=r" (res)
@@ -91,7 +92,7 @@ def gen_load(fun_name, cpp_type, size, b
         if barrier:
             insns += fmt_insn("dmb ish")
         return """
-            inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
                 %(cpp_type)s res;
                 asm volatile (%(insns)s
                     : [res] "=r" (res)
@@ -117,7 +118,7 @@ def gen_load(fun_name, cpp_type, size, b
         if barrier:
             insns += fmt_insn("dmb sy")
         return """
-            inline %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(const %(cpp_type)s* arg) {
                 %(cpp_type)s res;
                 asm volatile (%(insns)s
                     : [res] "=r" (res)
@@ -154,7 +155,7 @@ def gen_store(fun_name, cpp_type, size, 
         if barrier:
             insns += fmt_insn("mfence")
         return """
-            inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 asm volatile (%(insns)s
                     :
                     : [addr] "r" (addr), [val] "r"(val)
@@ -180,7 +181,7 @@ def gen_store(fun_name, cpp_type, size, 
         if barrier:
             insns += fmt_insn("dmb ish")
         return """
-            inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 asm volatile (%(insns)s
                     :
                     : [addr] "r" (addr), [val] "r"(val)
@@ -204,7 +205,7 @@ def gen_store(fun_name, cpp_type, size, 
         if barrier:
             insns += fmt_insn("dmb sy")
         return """
-            inline void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR void %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 asm volatile (%(insns)s
                     :
                     : [addr] "r" (addr), [val] "r"(val)
@@ -235,7 +236,7 @@ def gen_exchange(fun_name, cpp_type, siz
             assert size == 64
             insns += fmt_insn("xchgq %[val], (%[addr])")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 asm volatile (%(insns)s
                     : [val] "+r" (val)
                     : [addr] "r" (addr)
@@ -266,7 +267,7 @@ def gen_exchange(fun_name, cpp_type, siz
         insns += fmt_insn("cbnz %w[scratch], 0b")
         insns += fmt_insn("dmb ish")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 %(cpp_type)s res;
                 uint32_t scratch;
                 asm volatile (%(insns)s
@@ -297,7 +298,7 @@ def gen_exchange(fun_name, cpp_type, siz
         insns += fmt_insn("beq 0b")
         insns += fmt_insn("dmb sy")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 %(cpp_type)s res;
                 uint32_t scratch;
                 asm volatile (%(insns)s
@@ -321,7 +322,7 @@ def gen_cmpxchg(fun_name, cpp_type, size
         # Use a +A constraint to load `oldval` into EDX:EAX as input/output.
         # `newval` is loaded into ECX:EBX.
         return r"""
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
                                              %(cpp_type)s oldval,
                                              %(cpp_type)s newval) {
                 asm volatile ("lock; cmpxchg8b (%%[addr])\n\t"
@@ -337,7 +338,7 @@ def gen_cmpxchg(fun_name, cpp_type, size
         }
     if cpu_arch == "arm" and size == 64:
         return r"""
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
                                              %(cpp_type)s oldval,
                                              %(cpp_type)s newval) {
                 uint32_t oldval0 = oldval & 0xffff'ffff;
@@ -380,7 +381,7 @@ def gen_cmpxchg(fun_name, cpp_type, size
             assert size == 64
             insns += fmt_insn("lock; cmpxchgq %[newval], (%[addr])")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
                                              %(cpp_type)s oldval,
                                              %(cpp_type)s newval) {
                 asm volatile (%(insns)s
@@ -425,7 +426,7 @@ def gen_cmpxchg(fun_name, cpp_type, size
         insns += fmt_insn("cbnz %w[scratch], 0b")
         insns += fmt_insn("1: dmb ish")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
                                              %(cpp_type)s oldval,
                                              %(cpp_type)s newval) {
                 %(cpp_type)s res, scratch;
@@ -466,7 +467,7 @@ def gen_cmpxchg(fun_name, cpp_type, size
         insns += fmt_insn("beq 0b")
         insns += fmt_insn("1: dmb sy")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr,
                                              %(cpp_type)s oldval,
                                              %(cpp_type)s newval) {
                 %(cpp_type)s res, scratch;
@@ -501,7 +502,7 @@ def gen_fetchop(fun_name, cpp_type, size
                 assert size == 64
                 insns += fmt_insn("lock; xaddq %[val], (%[addr])")
             return """
-                inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+                INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                     asm volatile (%(insns)s
                         : [val] "+&r" (val)
                         : [addr] "r" (addr)
@@ -539,7 +540,7 @@ def gen_fetchop(fun_name, cpp_type, size
         insns = insns.replace("OP", op)
         insns += fmt_insn("jnz 0b")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 %(cpp_type)s res, scratch;
                 asm volatile (%(insns)s
                     : [res] "=&a" (res), [scratch] "=&r" (scratch)
@@ -581,7 +582,7 @@ def gen_fetchop(fun_name, cpp_type, size
         insns += fmt_insn("cbnz %w[scratch2], 0b")
         insns += fmt_insn("dmb ish")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 %(cpp_type)s res;
                 uintptr_t scratch1, scratch2;
                 asm volatile (%(insns)s
@@ -621,7 +622,7 @@ def gen_fetchop(fun_name, cpp_type, size
         insns += fmt_insn("beq 0b")
         insns += fmt_insn("dmb sy")
         return """
-            inline %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
+            INLINE_ATTR %(cpp_type)s %(fun_name)s(%(cpp_type)s* addr, %(cpp_type)s val) {
                 %(cpp_type)s res;
                 uintptr_t scratch1, scratch2;
                 asm volatile (%(insns)s
@@ -665,12 +666,12 @@ def gen_copy(fun_name, cpp_type, size, u
                 insns += fmt_insn("str %x[scratch], [%x[dst], OFFSET]")
         elif cpu_arch == "arm":
             if size == 1:
-                insns += fmt_insn("ldrb %[scratch], [%[src], OFFSET]")
-                insns += fmt_insn("strb %[scratch], [%[dst], OFFSET]")
+                insns += fmt_insn("ldrb %[scratch], [%[src], #OFFSET]")
+                insns += fmt_insn("strb %[scratch], [%[dst], #OFFSET]")
             else:
                 assert size == 4
-                insns += fmt_insn("ldr %[scratch], [%[src], OFFSET]")
-                insns += fmt_insn("str %[scratch], [%[dst], OFFSET]")
+                insns += fmt_insn("ldr %[scratch], [%[src], #OFFSET]")
+                insns += fmt_insn("str %[scratch], [%[dst], #OFFSET]")
         else:
             raise Exception("Unexpected arch")
         insns = insns.replace("OFFSET", str(offset * size))
@@ -681,7 +682,7 @@ def gen_copy(fun_name, cpp_type, size, u
             offset -= 1
 
     return """
-        inline void %(fun_name)s(uint8_t* dst, const uint8_t* src) {
+        INLINE_ATTR void %(fun_name)s(uint8_t* dst, const uint8_t* src) {
             %(cpp_type)s* dst_ = reinterpret_cast<%(cpp_type)s*>(dst);
             const %(cpp_type)s* src_ = reinterpret_cast<const %(cpp_type)s*>(src);
             %(cpp_type)s scratch;
@@ -853,6 +854,13 @@ def generate_atomics_header(c_out):
             "constexpr size_t JS_GENERATED_ATOMICS_WORDSIZE = " + str(wordsize) + ";\n"
         )
 
+        # Work around a GCC issue on 32-bit x86 by adding MOZ_NEVER_INLINE.
+        # See bug 1756347.
+        if is_gcc and cpu_arch == "x86":
+            contents = contents.replace("INLINE_ATTR", "MOZ_NEVER_INLINE inline")
+        else:
+            contents = contents.replace("INLINE_ATTR", "inline")
+
     c_out.write(
         HEADER_TEMPLATE
         % {