summaryrefslogtreecommitdiff
path: root/poky/meta/recipes-core
diff options
context:
space:
mode:
authorAndrew Geissler <geissonator@yahoo.com>2021-03-31 22:34:31 +0300
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2021-04-06 16:22:18 +0300
commit95ac1b8d7409c14ee15ddcb7e5dd3d28b24caa7f (patch)
treee686d31ba8c6e704d27aa7699f4a1a5673283b98 /poky/meta/recipes-core
parent32b11995a9447d927862951d29db38455f9e0205 (diff)
downloadopenbmc-95ac1b8d7409c14ee15ddcb7e5dd3d28b24caa7f.tar.xz
poky: subtree update:c8075ed8f1..7d0988966c
Adrian (1): weston-init: Set $HOME variable for SysVinit manager Alejandro Hernandez Samaniego (6): bitbake: bitbake: Add Azure Storage fetcher implementation bitbake: docs: Add Az fetcher documentation bitbake: docs: Add AZ_SAS definition to glossary ref-manual: Add Az fetcher documentation sanity.bbclass: Add az fetcher to accepted URI protocols for mirrors sanity devtool: Fix do_kernel_configme task Alexander Kanavin (23): core-image.bbclass: add a weston IMAGE_FEATURE, similar to x11-base rootfs-postcommands: correctly set systemd target for weston images oeqa/weston: correctly run wayland-info when systemd is in use dnf: upgrade 4.5.2 -> 4.6.0 libdnf: update 0.55.2 -> 0.58.0 libdnf: replace a musl fix with a better one librepo: update 1.12.1 -> 1.13.0 libical: update 3.0.8 -> 3.0.9 libical: drop the ad hoc native generator build bmap-tools: upgrade 3.5 -> 3.6 procps: update 3.3.16 -> 3.3.17 libxcrypt: fix sporadic failures in nativesdk-libxcrypt-compat bind: upgrade 9.16.11 -> 9.16.12 spirv-headers: update to latest revision spirv-tools: upgrade 2020.6 -> 2020.7 mesa: update 20.3.4 -> 21.0.0 attr: update 2.4.48 -> 2.5.1 asciidoc: update 9.0.4 -> 9.1.0 libhandy: update 1.0.3 -> 1.2.0 strace: update 5.10 -> 5.11 automake: update 1.16.2 - > 1.16.3 xxhash: import from meta-oe apt: update 1.8.2.2 -> 2.2.2 Alistair Francis (4): openssl: Enable building for RISC-V 32-bit linux-yocto: Add qemuriscv32 as a compatible machine machine: Initial commit of qemuriscv32 u-boot: Add support for building for qemuriscv32 Andrei Gherzan (3): gcr: Add support for building without x11 epiphany: Add package configuration for building in developer mode glibc: Backport patch to fix _SC_LEVEL1_ICACHE_LINESIZE Anton D. Kachalov (1): run-postinsts: do not remove postinsts directory. Awais Belal (2): libsdl2: disable shared memory for native builds rootfs.py: uninstall the run-postinsts package if not needed Bartosz Golaszewski (1): python3: make pydoc rdepend on python3-io Bruce Ashfield (27): linux-yocto/5.10: fix x86 32bit boot warnings linux-yocto/5.10: fix qemumips testimage failures linux-yocto/5.10: update to v5.10.17 and -rt31 linux-yocto/5.4: update to v5.4.99 linux-yocto/5.10: update to v5.10.19 linux-yocto/5.4: update to v5.4.101 perf: fix reproducibility issues linux-yocto/5.4: update to v5.4.103 kern-tools: symbol-why fix and README update linux-yocto/5.10: update to v5.10.21 linux-yocto/qemuarmv5: fix configuration warning yocto-bsp: update reference platforms to latest 5.10 perf: reproducibility fixes for pmu-events.c reproducibile: remove perf from exclusions linux-yocto/5.10: fix SERIAL_OF_PLATFORM warning linux-yocto/5.4: update to v5.4.105 linux-yocto/5.10: update to v5.10.23 linux-yocto/5.10: cfg: features/numa: Remove NODES_SPAN_OTHER_NODES option lttng-modules: update devupstream to 2.12.5+ lttng-modules: backport patches to fix build against 5.12+ kernel kernel-devsrc: fix on-target scripts/prepare for v5.12+ linux-yocto/5.10: cfg: fix ppc64 configuration warnings linux-yocto-dev: bump to v5.12-rc linux-yocto/5.10: update qemuriscv32 v5.10.23 linux-yocto/5.10: update to v5.10.25 linux-yocto/5.4: update to v5.4.107 linux-yocto-rt/5.10: update to -rt34 Changqing Li (1): go-helloworld: disable module-aware mode Charlie Davies (9): bitbake-bblayers/create: Fix incorrect priority help message bitbake-bblayers/create: Add optional layerid argument bitbake: bitbake: providers: remove unneeded logging call bitbake: bitbake: providers: consistent single line formatting between functions bitbake: bitbake: providers: introduce logic for REQUIRED_VERSION variable bitbake: bitbake: providers: check for REQUIRED_VERSION in _filterProviders bitbake: bitbake: lib: add Required Version to Bitbake --show-versions command bitbake: bitbake: cooker: Add REQUIRED_VERSION checks multilib_global: handle REQUIRED_VERSION Chen Qi (3): python3-jinja2: set CVE_PRODUCT bitbake: event.py: fix regression about INVALIDCONF populate_sdk_ext: record METADATA_REVISION Christopher Larson (2): buildhistory: add missing vardepsexcludes image,populate_sdk_base: move 'func' flag setting for sdk command vars Diego Santa Cruz (2): rpm: split build and extra functionality into separate packages sstate-diff-machines.sh: support rpm, deb and tar package types in analysis Dorinda (8): meta/recipes-rt: Add HOMEPAGE / DESCRIPTION meta-skeleton: Add HOMEPAGE / DESCRIPTION meta/recipes-extended: Add HOMEPAGE / DESCRIPTION meta/recipes-support: Add HOMEPAGE / DESCRIPTION meta/recipes-kernel: Add HOMEPAGE / DESCRIPTION meta/recipes-multimedia: Add HOMEPAGE / DESCRIPTION meta/recipes-graphics: Add HOMEPAGE / DESCRIPTION dev-manual/common-task.rst: Added documentation for debuginfod support Dorinda Bassey (4): meta/recipes-devtools: Add HOMEPAGE / DESCRIPTION distrodata.py: Test to track recipes without HOMEPAGE or DESCRIPTION meta-selftest: Add HOMEPAGE / DESCRIPTION devshell.bbclass: Exceptions displayed within devpyshell Douglas Royds (2): cmake: Fully-qualified path to ar externalsrc: Detect code changes in submodules Jon Mason (5): runqemu: use "raw" instead of "bin" for ovmf runqemu: add QB_GRAPHICS runqemu: correct forcing of ttyS0 runqemu: modify novga to conform to documentation tune-cortexa32: Add hard FPU Jose Quaresma (4): spirv-tools: python3 is need not only for the tests spirv-tools: cleanup an old patch that is not used anymore gstreamer1.0: upgrade 1.18.3 -> 1.18.4 gstreamer1.0-plugins-good: fix rtpjitterbuffer regression Kai Kang (2): toolchain-scripts.bbclass: customize prompt string for SDKs local.conf.sample.extended: sample value for SDK_PS1 Kevin Hao (1): meta-yocto-bsp: beaglebone: Set a fixed size for boot partition in WIC image Khairul Rohaizzat Jamaluddin (1): glibc: Fix CVE-2021-27645 Khem Raj (33): python3-cython: Check for files before editing webkitgtk: Use linker options to reduce memory overhead during linking webkitgtk: Enhance check for atomics to include 1 byte CAS qemuppc64: Add a QEMU machine definition for ppc64 linux-yocto: Enable powerpc64le QEMU formfactor: Add machine config for qemuppc64 inittab: Add getty launch on hvc0 for qemuppc64 parselogs: Allow expected kernel messages for qemuppc64 spirv-tools: Replace strncpy with memcpy python3-setuptools: Upgrade 54.1.0 -> 54.1.1 perf: Remove libunwind for rv32 Enable qemu usermode on ppc64 cmake.bbclass: Create cmake arch mapping for ppc64le libucontext: Recognize ppc64le architecture libunwind: Do not assume libdir for ppc64 gcc: Package new module mapper tool glib-2.0: Drop volatile qualifier go: Update to 1.16.2 go-dep: Remove libunwind: Link with libucontext on musl libedit: upgrade 20191231-3.1 -> 20210216-3.1 webkitgtk: Reduce stack and heap sizes for jsc on musl webkitgtk: Add packageconfig to chose between size and speed webkitgtk: enable strlen and stpcpy on musl/linux too gcc-sanitizers: Package up hwasan files apt: Support old resolver as fallback apt: Do not disable NLS valgrind: Fix ptests on ppc64 LE documentation-audit.sh: Fix typo in specifying LICENSE_FLAGS_WHITELIST image-uefi: Set efi_file for rv32/rv64 grub2: Disable for RISCV32 grub-efi: Re-introduce lost cast to long grub2: Enable on riscv32 Lee Chee Yang (2): cve-update-db-native: consider version suffix when update CVE db cve-check: CVE_VERSION_SUFFIX to work with patched release Li Wang (1): linux-dummy: add empty dependent packages Luca Boccassi (2): util-linux: split uuid in separate recipe to allow bootstrapping util-linux: backport patch to skip build of unused objects Manuel Leonhardt (1): bitbake: tinfoil: Honor quiet when parsing recipes Mark Hatle (2): populate_sdk_ext: Avoid copying and producing .pyc files populate_sdk_ext: Add support for PR service Martin Jansa (7): glib-2.0: call os.path.normpath on THISDIR glib-2.0: show an error about --cross-file only when such file exists busybox: refresh the defconfig from 1.33.0 busybox-inittab: rename for PV to match with busybox's PV iso-codes: fix protocol in SRC_URI packagegroup-core-weston.bb: add pam to REQUIRED_DISTRO_FEATURES python3: fix PACKAGECONFIG handling Michael Opdenacker (4): bitbake: doc: Update links to documentation Do not assume working from $HOME Update documentation URL documentation/README minor improvements Michael Trensch (1): linux-firmware: Fix packaging Mikko Rapeli (1): openssl: update to 1.1.1k to fix CVE-2021-3450 and CVE-2021-3449 Ming Liu (2): kernel-fitimage.bbclass: support both KERNEL_DEVICETREE/EXTERNAL_KERNEL_DEVICETREE initramfs-framework:rootfs: fix some conditional check Mingli Yu (1): libtool: make sure autoheader run before autoconf Minjae Kim (3): qemu: fix CVE-2021-20203 git: fix CVE-2021-21300 git: upgrade 2.30.1 -> 2.31.1 Naveen Saini (1): grub: upgrade 2.04 -> 2.06~rc1 Oleksandr Kravchuk (1): python3-setuptools: update to 54.1.0 Paul Gortmaker (1): bitbake: gitignore: ignore runqueue-tests/bitbake-cookerdaemon.log Peter Kjellerstedt (4): meson: Correctly set uid/gid of installed files uninative-tarball: Add a dependency on nativesdk-glibc-dbg metadata_scm.bbclass: Use immediate expansion for the METADATA_* variables license.bbclass: Improve parsing time when INCOMPATIBLE_LICENSES is big Petr Vorel (1): scripts/verify-bashisms: Update checkbashisms.pl URL Purushottam Choudhary (1): shadow: whitelist CVE-2013-4235 Randy MacLeod (2): ffmpeg: upgrade 4.3.1 -> 4.3.2 zstd: upgrade 1.4.8 -> 1.4.9 Richard Purdie (33): ltp: Fix another determinism issue build-appliance-image: Drop kernel module handling ltp: Further extend reproducibility patch bitbake: runqueue: Fix task execution corruption issue bitbake: runqueue: Add setscene task overlap sanity check bitbake: __init__.py: Fix bitbake debug log handling ltp: Fix determinism issue ltp: Fix libswapon issue properly bitbake: event: Fix multiconfig event handler change performance regressions bitbake: event: Fix another 'if d' test to test for None explictly bitbake: tests/color: Fix event register to pass the datastore bitbake: bblayers/query: Update to handle REQUIRED_VERSION scripts/contrib/list-packageconfig-flags: Upate for tinfoil API changes layer.conf: Update for hardknott release series layer.conf: Update for hardknott release series build-appliance-image: Update to master head revision layer.conf: Add gatesgarth back for now to allow for transition build-appliance-image: Update to master head revision meson: Work around determinism issue lttng-tools: upgrade 2.12.2 -> 2.12.3 lttng-modules: upgrade 2.12.4 -> 2.12.5 sqlite3: upgrade 3.34.1 -> 3.35.0 sudo: upgrade 1.9.5p2 -> 1.9.6 selftest/reproducible: Drop ovmf exclusion selftest/wic: Fix dependency issue in rawcopy test layer.conf: Drop gatesgarth from the layer series names bitbake: build: Add find_stale_stamps function bitbake: runqueue/event: Add an event for notifying of stale setscene tasks sstate: Remove stale objects before the main build sstate: Add documentation for eventhandlers and tweak naming site/elfutils/libunistring: Drop patching for iconv and set in site file build-appliance-image: Update to master head revision util-linux-libuuid: Simplify recipe and rename from util-linux-uuid Robert P. J. Day (8): bitbake-whatchanged: change ending quote to proper period bitbake: doc: move BBFILES_DYNAMIC for alphabetical order ref-manual: remove erroneous '\*' from variables list bitbake: doc: mention that addtask handles multiple dependencies bitbake: doc: fix glossary link for BB_INVALIDCONF variable bitbake: doc: fix syntax error in layer.conf example bitbake.conf: correct description of HOSTTOOLS_DIR packagegroups: delete useless "PROVIDES" lines Robert Yang (1): image.bbclass: deltask do_packagedata Ross Burton (13): libinput: less parallism to increase chances the test suite works ptest-packagelists: remove libinput-ptest insane: don't check for a warning string that is never output gcc: add an option for --enable-poison-system-directories to be fatal gcc-cross: make use of the system include directories fatal oeqa/selftest: add test to verify that poisoned sysroots are detected ovmf: make output binaries reproducible base: respect downloadfilename when sniffing the SRC_URI for dependencies lib/oe/utils: add directory size function classes/image: use oe.utils.directory_size() instead of du bitbake.conf: ensure BUILD_* tools match target tools meson: fix native/host confusion in gobject-introspection meson: use native-file instead of environment variables Sakib Sajal (2): buildstats.bbclass: improve timeout handling scripts: add oe-time-dd-test.sh Scott Murray (1): u-boot: Fix CVE-2021-27097, CVE-2021-27138 Stefan Ghinea (1): wpa-supplicant: fix CVE-2021-27803 Stefan Schmidt (1): systemd-conf: do not ask for DHCP if configured on kernel command line Tomasz Dziendzielski (2): bitbake: runqueue: Print pseudo.log if fakeroot task failed bitbake: codeparser: Fix TypeError in bitbake debug mode Ulrich ?lmann (1): gstreamer1.0: add support for coretracers Ulrich Ölmann (3): common-tasks.rst: fix 'wic cp' command common-tasks.rst: fix typo local.conf.sample: fix typo Vivien Didelot (6): systemd-container: sort RRECOMMENDS alphabetically systemd-container: recommend tar systemd-container: recommends StartExecPre modules poky: fix typos poky: don't use space with += beaglebone-yocto: allow other virtual/bootloader Wang Mingyu (20): shaderc: upgrade 2020.4 -> 2020.5 stress-ng: upgrade 0.12.03 -> 0.12.04 taglib: upgrade 1.11.1 -> 1.12 vala: upgrade 0.50.3 -> 0.50.4 python3-pygments: upgrade 2.8.0 -> 2.8.1 python3-zipp: upgrade 3.4.0 -> 3.4.1 sysklogd: upgrade 2.2.1 -> 2.2.2 help2man: upgrade 1.48.1 -> 1.48.2 iso-codes: upgrade 4.5.0 -> 4.6.0 jquery: upgrade 3.5.1 -> 3.6.0 ovmf: upgrade 202011 -> 202102 msmtp: upgrade 1.8.14 -> 1.8.15 gptfdisk: upgrade 1.0.6 -> 1.0.7 vulkan-headers: upgrade 1.2.162.0 -> 1.2.170.0 vulkan-loader: upgrade 1.2.162.0 -> 1.2.170.0 vulkan-tools: upgrade 1.2.162.1 -> 1.2.170.0 gcc: Update patch to only patch files once openssh: upgrade 8.4p1 -> 8.5p1 openssh: Improve LICENSE to show BSD license variants. gnutls: upgrade 3.7.0 -> 3.7.1 Yanfei Xu (1): glibc: fix pthread_cond_destroy hangs with process-shared mutex Yann Dirson (1): ffmpeg: disable GPL features by default Yi Fan Yu (1): valgrind: Fix nlcontrolc.vgtest jan (1): cve-update-db-native: Allow to overrule the URL in a bbappend. wangmy@fujitsu.com (1): systemd: upgrade 247.3 -> 247.4 zhengruoqin (3): sudo: upgrade 1.9.6 -> 1.9.6p1 liburi-perl: upgrade 1.74 -> 5.08 stress-ng: upgrade 0.12.04 -> 0.12.05 Signed-off-by: Andrew Geissler <geissonator@yahoo.com> Change-Id: I04195d4c610ca1674dd736eceeb6442d974cb711
Diffstat (limited to 'poky/meta/recipes-core')
-rw-r--r--poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb (renamed from poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb)3
-rw-r--r--poky/meta/recipes-core/busybox/busybox/defconfig133
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch403
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch44
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch90
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch93
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch702
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch35
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch111
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch95
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch207
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch51
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch126
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch103
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch180
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch56
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch169
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch126
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch44
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch35
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch44
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch33
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch51
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch38
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch33
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch49
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch77
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch47
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch76
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch29
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch258
-rw-r--r--poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb37
-rw-r--r--poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch49
-rw-r--r--poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch185
-rw-r--r--poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch51
-rw-r--r--poky/meta/recipes-core/glibc/glibc_2.33.bb3
-rw-r--r--poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb10
-rw-r--r--poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs17
-rw-r--r--poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch32
-rw-r--r--poky/meta/recipes-core/libxcrypt/libxcrypt.inc4
-rw-r--r--poky/meta/recipes-core/meta/cve-update-db-native.bb12
-rw-r--r--poky/meta/recipes-core/meta/uninative-tarball.bb1
-rw-r--r--poky/meta/recipes-core/musl/libucontext_git.bb2
-rw-r--r--poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch28
-rw-r--r--poky/meta/recipes-core/ovmf/ovmf/zero.patch84
-rw-r--r--poky/meta/recipes-core/ovmf/ovmf_git.bb6
-rw-r--r--poky/meta/recipes-core/packagegroups/packagegroup-base.bb1
-rw-r--r--poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb1
-rw-r--r--poky/meta/recipes-core/systemd/systemd-boot_247.4.bb (renamed from poky/meta/recipes-core/systemd/systemd-boot_247.3.bb)0
-rw-r--r--poky/meta/recipes-core/systemd/systemd-conf/wired.network1
-rw-r--r--poky/meta/recipes-core/systemd/systemd-conf_247.3.bb3
-rw-r--r--poky/meta/recipes-core/systemd/systemd.inc2
-rw-r--r--poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch9
-rw-r--r--poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch28
-rw-r--r--poky/meta/recipes-core/systemd/systemd_247.4.bb (renamed from poky/meta/recipes-core/systemd/systemd_247.3.bb)9
-rw-r--r--poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb4
-rw-r--r--poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb16
-rw-r--r--poky/meta/recipes-core/util-linux/util-linux.inc41
-rw-r--r--poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch49
-rw-r--r--poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb57
60 files changed, 4100 insertions, 183 deletions
diff --git a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb
index 3804f4f7b..0021e4551 100644
--- a/poky/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb
+++ b/poky/meta/recipes-core/busybox/busybox-inittab_1.33.0.bb
@@ -44,6 +44,9 @@ EOF
fi
}
+do_install_append_qemuppc64 () {
+ echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab
+}
pkg_postinst_${PN} () {
# run this on host and on target
diff --git a/poky/meta/recipes-core/busybox/busybox/defconfig b/poky/meta/recipes-core/busybox/busybox/defconfig
index 4334a9d73..701d48d62 100644
--- a/poky/meta/recipes-core/busybox/busybox/defconfig
+++ b/poky/meta/recipes-core/busybox/busybox/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.30.1
-# Sun Feb 17 18:12:27 2019
+# Busybox version: 1.33.0
+# Wed Mar 10 13:29:25 2021
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -34,8 +34,8 @@ CONFIG_FEATURE_SUID_CONFIG_QUIET=y
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SYSLOG_INFO=y
CONFIG_FEATURE_SYSLOG=y
-CONFIG_PLATFORM_LINUX=y
#
# Build Options
@@ -54,6 +54,7 @@ CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_STACK_OPTIMIZATION_386=y
+CONFIG_STATIC_LIBGCC=y
#
# Installation Options ("make install" behavior)
@@ -75,6 +76,7 @@ CONFIG_PREFIX="./_install"
# CONFIG_DEBUG_SANITIZE is not set
# CONFIG_UNIT_TEST is not set
# CONFIG_WERROR is not set
+# CONFIG_WARN_SIMPLE_MSG is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
@@ -108,13 +110,13 @@ CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
# CONFIG_FEATURE_EDITING_WINCH is not set
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_UNICODE_SUPPORT is not set
+CONFIG_UNICODE_SUPPORT=y
# CONFIG_UNICODE_USING_LOCALE is not set
-# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
-CONFIG_SUBST_WCHAR=0
-CONFIG_LAST_SUPPORTED_WCHAR=0
-# CONFIG_UNICODE_COMBINING_WCHARS is not set
-# CONFIG_UNICODE_WIDE_WCHARS is not set
+CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=767
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
@@ -155,6 +157,7 @@ CONFIG_LZCAT=y
CONFIG_XZCAT=y
# CONFIG_XZ is not set
CONFIG_BZIP2=y
+CONFIG_BZIP2_SMALL=8
CONFIG_FEATURE_BZIP2_DECOMPRESS=y
CONFIG_CPIO=y
# CONFIG_FEATURE_CPIO_O is not set
@@ -235,7 +238,6 @@ CONFIG_EXPR_MATH_SUPPORT_64=y
# CONFIG_FACTOR is not set
CONFIG_FALSE=y
# CONFIG_FOLD is not set
-# CONFIG_FSYNC is not set
CONFIG_HEAD=y
# CONFIG_FEATURE_FANCY_HEAD is not set
# CONFIG_HOSTID is not set
@@ -257,8 +259,8 @@ CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
CONFIG_MD5SUM=y
-# CONFIG_SHA1SUM is not set
-# CONFIG_SHA256SUM is not set
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
# CONFIG_SHA512SUM is not set
# CONFIG_SHA3SUM is not set
@@ -302,6 +304,7 @@ CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
# CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_FSYNC is not set
# CONFIG_TAC is not set
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
@@ -328,14 +331,15 @@ CONFIG_UNIQ=y
CONFIG_UNLINK=y
CONFIG_USLEEP=y
# CONFIG_UUDECODE is not set
+CONFIG_BASE32=y
# CONFIG_BASE64 is not set
# CONFIG_UUENCODE is not set
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
-CONFIG_WHOAMI=y
CONFIG_WHO=y
# CONFIG_W is not set
CONFIG_USERS=y
+CONFIG_WHOAMI=y
CONFIG_YES=y
#
@@ -375,8 +379,8 @@ CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_LOADKMAP=y
CONFIG_OPENVT=y
CONFIG_RESET=y
-# CONFIG_RESIZE is not set
-# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
CONFIG_SETCONSOLE=y
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
# CONFIG_SETKEYCODES is not set
@@ -460,6 +464,7 @@ CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
CONFIG_FEATURE_FIND_QUIT=y
# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_EMPTY=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
@@ -488,32 +493,32 @@ CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
CONFIG_REBOOT=y
# CONFIG_FEATURE_WAIT_FOR_INIT is not set
# CONFIG_FEATURE_CALL_TELINIT is not set
-# CONFIG_TELINIT_PATH is not set
+CONFIG_TELINIT_PATH=""
# CONFIG_INIT is not set
# CONFIG_LINUXRC is not set
# CONFIG_FEATURE_USE_INITTAB is not set
# CONFIG_FEATURE_KILL_REMOVED is not set
-# CONFIG_FEATURE_KILL_DELAY is not set
+CONFIG_FEATURE_KILL_DELAY=0
# CONFIG_FEATURE_INIT_SCTTY is not set
# CONFIG_FEATURE_INIT_SYSLOG is not set
# CONFIG_FEATURE_INIT_QUIET is not set
# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_INIT_TERMINAL_TYPE is not set
+CONFIG_INIT_TERMINAL_TYPE=""
# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
#
# Login/Password Management Utilities
#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
+CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
# CONFIG_USE_BB_CRYPT_SHA is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_ADD_SHELL is not set
# CONFIG_REMOVE_SHELL is not set
-# CONFIG_ADDUSER is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+CONFIG_ADDUSER=y
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_LAST_ID=60000
CONFIG_FIRST_SYSTEM_ID=100
@@ -522,23 +527,23 @@ CONFIG_LAST_SYSTEM_ID=999
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
# CONFIG_CRYPTPW is not set
# CONFIG_MKPASSWD is not set
-# CONFIG_DELUSER is not set
-# CONFIG_DELGROUP is not set
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
-# CONFIG_GETTY is not set
-# CONFIG_LOGIN is not set
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
# CONFIG_LOGIN_SESSION_AS_CHILD is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_NOLOGIN is not set
# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
+CONFIG_PASSWD=y
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_SU is not set
+CONFIG_SU=y
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
#
# Linux Ext2 FS Progs
@@ -585,8 +590,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
# CONFIG_ACPID is not set
# CONFIG_FEATURE_ACPID_COMPAT is not set
# CONFIG_BLKDISCARD is not set
-# CONFIG_BLKID is not set
-# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_BLKID=y
+CONFIG_FEATURE_BLKID_TYPE=y
# CONFIG_BLOCKDEV is not set
# CONFIG_CAL is not set
# CONFIG_CHRT is not set
@@ -616,10 +621,9 @@ CONFIG_FLOCK=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_FSFREEZE is not set
CONFIG_FSTRIM=y
-# CONFIG_GETOPT is not set
-# CONFIG_FEATURE_GETOPT_LONG is not set
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
CONFIG_HEXDUMP=y
-# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
# CONFIG_XXD is not set
CONFIG_HWCLOCK=y
@@ -638,6 +642,7 @@ CONFIG_LOSETUP=y
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_FEATURE_MDEV_DAEMON is not set
CONFIG_MESG=y
# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
# CONFIG_MKE2FS is not set
@@ -654,7 +659,7 @@ CONFIG_MOUNT=y
# CONFIG_FEATURE_MOUNT_FAKE is not set
# CONFIG_FEATURE_MOUNT_VERBOSE is not set
# CONFIG_FEATURE_MOUNT_HELPERS is not set
-# CONFIG_FEATURE_MOUNT_LABEL is not set
+CONFIG_FEATURE_MOUNT_LABEL=y
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
CONFIG_FEATURE_MOUNT_FLAGS=y
@@ -669,7 +674,7 @@ CONFIG_RDATE=y
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
CONFIG_RENICE=y
-# CONFIG_REV is not set
+CONFIG_REV=y
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
@@ -689,6 +694,7 @@ CONFIG_SWAPOFF=y
CONFIG_SWITCH_ROOT=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_FEATURE_TASKSET_CPULIST is not set
# CONFIG_UEVENT is not set
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
@@ -701,18 +707,19 @@ CONFIG_FEATURE_UMOUNT_ALL=y
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
-# CONFIG_VOLUMEID is not set
+CONFIG_VOLUMEID=y
#
# Filesystem/Volume identification
#
# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
-# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+CONFIG_FEATURE_VOLUMEID_BTRFS=y
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+CONFIG_FEATURE_VOLUMEID_EROFS=y
# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
-# CONFIG_FEATURE_VOLUMEID_EXT is not set
-# CONFIG_FEATURE_VOLUMEID_F2FS is not set
-# CONFIG_FEATURE_VOLUMEID_FAT is not set
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
# CONFIG_FEATURE_VOLUMEID_HFS is not set
# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
# CONFIG_FEATURE_VOLUMEID_JFS is not set
@@ -726,7 +733,7 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
-# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
# CONFIG_FEATURE_VOLUMEID_SYSV is not set
# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
# CONFIG_FEATURE_VOLUMEID_UDF is not set
@@ -769,10 +776,10 @@ CONFIG_FEATURE_CROND_DIR=""
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_DEVMEM is not set
# CONFIG_FBSPLASH is not set
-# CONFIG_FLASHCP is not set
# CONFIG_FLASH_ERASEALL is not set
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
@@ -806,6 +813,7 @@ CONFIG_FEATURE_LESS_FLAGS=y
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MAN is not set
CONFIG_MICROCOM=y
+# CONFIG_MIM is not set
# CONFIG_MT is not set
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
@@ -819,14 +827,15 @@ CONFIG_RFKILL=y
# CONFIG_SETSERIAL is not set
CONFIG_STRINGS=y
CONFIG_TIME=y
+CONFIG_TS=y
# CONFIG_TTYSIZE is not set
-# CONFIG_UBIRENAME is not set
# CONFIG_UBIATTACH is not set
# CONFIG_UBIDETACH is not set
# CONFIG_UBIMKVOL is not set
# CONFIG_UBIRMVOL is not set
# CONFIG_UBIRSVOL is not set
# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
# CONFIG_VOLNAME is not set
# CONFIG_WATCHDOG is not set
@@ -866,6 +875,10 @@ CONFIG_DNSDOMAINNAME=y
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
+# CONFIG_FEATURE_HTTPD_ETAG is not set
+# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set
+# CONFIG_FEATURE_HTTPD_DATE is not set
+# CONFIG_FEATURE_HTTPD_ACL_IP is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
# CONFIG_FEATURE_IFCONFIG_SLIP is not set
@@ -946,6 +959,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
CONFIG_TFTP=y
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+CONFIG_FEATURE_TFTP_HPA_COMPAT=y
# CONFIG_TFTPD is not set
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
@@ -990,6 +1004,7 @@ CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_FEATURE_UDHCP_RFC3397=y
# CONFIG_FEATURE_UDHCP_8021Q is not set
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b"
@@ -1023,7 +1038,7 @@ CONFIG_KILLALL=y
# CONFIG_LSOF is not set
# CONFIG_MPSTAT is not set
# CONFIG_NMETER is not set
-# CONFIG_PGREP is not set
+CONFIG_PGREP=y
# CONFIG_PKILL is not set
CONFIG_PIDOF=y
# CONFIG_FEATURE_PIDOF_SINGLE is not set
@@ -1093,6 +1108,7 @@ CONFIG_SH_IS_ASH=y
# CONFIG_BASH_IS_ASH is not set
# CONFIG_BASH_IS_HUSH is not set
CONFIG_BASH_IS_NONE=y
+CONFIG_SHELL_ASH=y
CONFIG_ASH=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_INTERNAL_GLOB=y
@@ -1113,6 +1129,7 @@ CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
# CONFIG_CTTYHACK is not set
# CONFIG_HUSH is not set
+# CONFIG_SHELL_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_LINENO_VAR is not set
@@ -1154,6 +1171,7 @@ CONFIG_ASH_CMDCMD=y
#
CONFIG_FEATURE_SH_MATH=y
# CONFIG_FEATURE_SH_MATH_64 is not set
+CONFIG_FEATURE_SH_MATH_BASE=y
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set
@@ -1171,14 +1189,15 @@ CONFIG_KLOGD=y
#
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-# CONFIG_SYSLOGD is not set
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-# CONFIG_FEATURE_SYSLOGD_CFG is not set
-CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_FEATURE_KMSG_SYSLOG is not set
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_SYSLOGD_DUP=y
+CONFIG_FEATURE_SYSLOGD_CFG=y
+# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
+CONFIG_FEATURE_KMSG_SYSLOG=y
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch
new file mode 100644
index 000000000..485218652
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch
@@ -0,0 +1,403 @@
+From fab561f8d05794329184cd81f9ab9d9d77dcc22a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:12:22 +0000
+Subject: [PATCH 01/29] gobject: Drop use of volatile from get_type() macros
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+http://isvolatileusefulwiththreads.in/c/
+
+It’s possible that the variables here are only marked as volatile
+because they’re arguments to `g_once_*()`. Those arguments will be
+modified in a subsequent commit.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ docs/reference/gobject/glib-mkenums.xml | 8 ++---
+ docs/reference/gobject/tut_gtype.xml | 2 +-
+ gio/gioenumtypes.c.template | 8 ++---
+ gio/tests/gsettings.c | 4 +--
+ gobject/gbinding.c | 8 ++---
+ gobject/gboxed.c | 8 ++---
+ gobject/glib-enumtypes.c.template | 8 ++---
+ gobject/gsourceclosure.c | 2 +-
+ gobject/gtype.h | 48 ++++++++++++-------------
+ gobject/tests/signals.c | 16 ++++-----
+ 10 files changed, 56 insertions(+), 56 deletions(-)
+
+diff --git a/docs/reference/gobject/glib-mkenums.xml b/docs/reference/gobject/glib-mkenums.xml
+index 2200328ed..ce250a3ff 100644
+--- a/docs/reference/gobject/glib-mkenums.xml
++++ b/docs/reference/gobject/glib-mkenums.xml
+@@ -480,9 +480,9 @@ A C source template file will typically look like this:
+ GType
+ @enum_name@_get_type (void)
+ {
+- static volatile gsize g_@type@_type_id__volatile;
++ static gsize static_g_@type@_type_id;
+
+- if (g_once_init_enter (&amp;g_define_type_id__volatile))
++ if (g_once_init_enter (&amp;static_g_@type@_type_id))
+ {
+ static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -498,9 +498,9 @@ GType
+ GType g_@type@_type_id =
+ g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+
+- g_once_init_leave (&amp;g_@type@_type_id__volatile, g_@type@_type_id);
++ g_once_init_leave (&amp;static_g_@type@_type_id, g_@type@_type_id);
+ }
+- return g_@type@_type_id__volatile;
++ return static_g_@type@_type_id;
+ }
+
+ /*** END value-tail ***/
+diff --git a/docs/reference/gobject/tut_gtype.xml b/docs/reference/gobject/tut_gtype.xml
+index 25e37dc48..ee042889d 100644
+--- a/docs/reference/gobject/tut_gtype.xml
++++ b/docs/reference/gobject/tut_gtype.xml
+@@ -852,7 +852,7 @@ viewer_editable_default_init (ViewerEditableInterface *iface)
+ GType
+ viewer_editable_get_type (void)
+ {
+- static volatile gsize type_id = 0;
++ static gsize type_id = 0;
+ if (g_once_init_enter (&amp;type_id)) {
+ const GTypeInfo info = {
+ sizeof (ViewerEditableInterface),
+diff --git a/gio/gioenumtypes.c.template b/gio/gioenumtypes.c.template
+index e9adc4a38..948a01201 100644
+--- a/gio/gioenumtypes.c.template
++++ b/gio/gioenumtypes.c.template
+@@ -13,9 +13,9 @@
+ GType
+ @enum_name@_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -29,10 +29,10 @@ GType
+ };
+ GType g_define_type_id =
+ g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ /*** END value-tail ***/
+diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c
+index 2f81ae6c3..179d0fd2f 100644
+--- a/gio/tests/gsettings.c
++++ b/gio/tests/gsettings.c
+@@ -1060,7 +1060,7 @@ test_object_set_property (GObject *object,
+ static GType
+ test_enum_get_type (void)
+ {
+- static volatile gsize define_type_id = 0;
++ static gsize define_type_id = 0;
+
+ if (g_once_init_enter (&define_type_id))
+ {
+@@ -1082,7 +1082,7 @@ test_enum_get_type (void)
+ static GType
+ test_flags_get_type (void)
+ {
+- static volatile gsize define_type_id = 0;
++ static gsize define_type_id = 0;
+
+ if (g_once_init_enter (&define_type_id))
+ {
+diff --git a/gobject/gbinding.c b/gobject/gbinding.c
+index 78a883075..662d76b3c 100644
+--- a/gobject/gbinding.c
++++ b/gobject/gbinding.c
+@@ -120,9 +120,9 @@
+ GType
+ g_binding_flags_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ static const GFlagsValue values[] = {
+ { G_BINDING_DEFAULT, "G_BINDING_DEFAULT", "default" },
+@@ -133,10 +133,10 @@ g_binding_flags_get_type (void)
+ };
+ GType g_define_type_id =
+ g_flags_register_static (g_intern_static_string ("GBindingFlags"), values);
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ #define G_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_BINDING, GBindingClass))
+diff --git a/gobject/gboxed.c b/gobject/gboxed.c
+index 30ba4e775..194251383 100644
+--- a/gobject/gboxed.c
++++ b/gobject/gboxed.c
+@@ -180,19 +180,19 @@ G_DEFINE_BOXED_TYPE (GOptionGroup, g_option_group, g_option_group_ref, g_option_
+ GType
+ g_strv_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ GType g_define_type_id =
+ g_boxed_type_register_static (g_intern_static_string ("GStrv"),
+ (GBoxedCopyFunc) g_strdupv,
+ (GBoxedFreeFunc) g_strfreev);
+
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ GType
+diff --git a/gobject/glib-enumtypes.c.template b/gobject/glib-enumtypes.c.template
+index b7d36728f..1800ca8af 100644
+--- a/gobject/glib-enumtypes.c.template
++++ b/gobject/glib-enumtypes.c.template
+@@ -13,9 +13,9 @@
+ GType
+ @enum_name@_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ static const G@Type@Value values[] = {
+ /*** END value-header ***/
+@@ -29,10 +29,10 @@ GType
+ };
+ GType g_define_type_id =
+ g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ /*** END value-tail ***/
+diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c
+index 0d0d2e87c..d1b1ee4b3 100644
+--- a/gobject/gsourceclosure.c
++++ b/gobject/gsourceclosure.c
+@@ -32,7 +32,7 @@ G_DEFINE_BOXED_TYPE (GIOChannel, g_io_channel, g_io_channel_ref, g_io_channel_un
+ GType
+ g_io_condition_get_type (void)
+ {
+- static volatile GType etype = 0;
++ static GType etype = 0;
+
+ if (g_once_init_enter (&etype))
+ {
+diff --git a/gobject/gtype.h b/gobject/gtype.h
+index 9de46ac60..666fadb0c 100644
+--- a/gobject/gtype.h
++++ b/gobject/gtype.h
+@@ -1727,8 +1727,8 @@ guint g_type_get_type_registration_serial (void);
+ * GType
+ * gtk_gadget_get_type (void)
+ * {
+- * static volatile gsize g_define_type_id__volatile = 0;
+- * if (g_once_init_enter (&g_define_type_id__volatile))
++ * static gsize static_g_define_type_id = 0;
++ * if (g_once_init_enter (&static_g_define_type_id))
+ * {
+ * GType g_define_type_id =
+ * g_type_register_static_simple (GTK_TYPE_WIDGET,
+@@ -1748,9 +1748,9 @@ guint g_type_get_type_registration_serial (void);
+ * };
+ * g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
+ * }
+- * g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ * g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ * }
+- * return g_define_type_id__volatile;
++ * return static_g_define_type_id;
+ * }
+ * ]|
+ * The only pieces which have to be manually provided are the definitions of
+@@ -1995,17 +1995,17 @@ type_name##_get_instance_private (TypeName *self) \
+ GType \
+ type_name##_get_type (void) \
+ { \
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+ /* Prelude goes here */
+
+ /* Added for _G_DEFINE_TYPE_EXTENDED_WITH_PRELUDE */
+ #define _G_DEFINE_TYPE_EXTENDED_BEGIN_REGISTER(TypeName, type_name, TYPE_PARENT, flags) \
+- if (g_once_init_enter (&g_define_type_id__volatile)) \
++ if (g_once_init_enter (&static_g_define_type_id)) \
+ { \
+ GType g_define_type_id = type_name##_get_type_once (); \
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+ } \
+- return g_define_type_id__volatile; \
++ return static_g_define_type_id; \
+ } /* closes type_name##_get_type() */ \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2041,8 +2041,8 @@ static void type_name##_default_init (TypeName##Interface *klass); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+- static volatile gsize g_define_type_id__volatile = 0; \
+- if (g_once_init_enter (&g_define_type_id__volatile)) \
++ static gsize static_g_define_type_id = 0; \
++ if (g_once_init_enter (&static_g_define_type_id)) \
+ { \
+ GType g_define_type_id = \
+ g_type_register_static_simple (G_TYPE_INTERFACE, \
+@@ -2058,9 +2058,9 @@ type_name##_get_type (void) \
+ #define _G_DEFINE_INTERFACE_EXTENDED_END() \
+ /* following custom code */ \
+ } \
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+ } \
+- return g_define_type_id__volatile; \
++ return static_g_define_type_id; \
+ } /* closes type_name##_get_type() */
+
+ /**
+@@ -2115,13 +2115,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+- static volatile gsize g_define_type_id__volatile = 0; \
+- if (g_once_init_enter (&g_define_type_id__volatile)) \
++ static gsize static_g_define_type_id = 0; \
++ if (g_once_init_enter (&static_g_define_type_id)) \
+ { \
+ GType g_define_type_id = type_name##_get_type_once (); \
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+ } \
+- return g_define_type_id__volatile; \
++ return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2152,13 +2152,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+- static volatile gsize g_define_type_id__volatile = 0; \
+- if (g_once_init_enter (&g_define_type_id__volatile)) \
++ static gsize static_g_define_type_id = 0; \
++ if (g_once_init_enter (&static_g_define_type_id)) \
+ { \
+ GType g_define_type_id = type_name##_get_type_once (); \
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+ } \
+- return g_define_type_id__volatile; \
++ return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+@@ -2205,13 +2205,13 @@ static GType type_name##_get_type_once (void); \
+ GType \
+ type_name##_get_type (void) \
+ { \
+- static volatile gsize g_define_type_id__volatile = 0; \
+- if (g_once_init_enter (&g_define_type_id__volatile)) \
++ static gsize static_g_define_type_id = 0; \
++ if (g_once_init_enter (&static_g_define_type_id)) \
+ { \
+ GType g_define_type_id = type_name##_get_type_once (); \
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id); \
+ } \
+- return g_define_type_id__volatile; \
++ return static_g_define_type_id; \
+ } \
+ \
+ G_GNUC_NO_INLINE \
+diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c
+index 120f90b5c..ac0ce5102 100644
+--- a/gobject/tests/signals.c
++++ b/gobject/tests/signals.c
+@@ -66,9 +66,9 @@ custom_marshal_VOID__INVOCATIONHINT (GClosure *closure,
+ static GType
+ test_enum_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ static const GEnumValue values[] = {
+ { TEST_ENUM_NEGATIVE, "TEST_ENUM_NEGATIVE", "negative" },
+@@ -79,18 +79,18 @@ test_enum_get_type (void)
+ };
+ GType g_define_type_id =
+ g_enum_register_static (g_intern_static_string ("TestEnum"), values);
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ static GType
+ test_unsigned_enum_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize static_g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile))
++ if (g_once_init_enter (&static_g_define_type_id))
+ {
+ static const GEnumValue values[] = {
+ { TEST_UNSIGNED_ENUM_FOO, "TEST_UNSIGNED_ENUM_FOO", "foo" },
+@@ -99,10 +99,10 @@ test_unsigned_enum_get_type (void)
+ };
+ GType g_define_type_id =
+ g_enum_register_static (g_intern_static_string ("TestUnsignedEnum"), values);
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&static_g_define_type_id, g_define_type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return static_g_define_type_id;
+ }
+
+ typedef enum {
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch
new file mode 100644
index 000000000..fada7cc38
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch
@@ -0,0 +1,44 @@
+From a6ce0e742a5c75c53a7c702ebb1af1084065160a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:14:29 +0000
+Subject: [PATCH 02/29] tests: Fix non-atomic access to a shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variable, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/642026.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/tests/642026.c b/glib/tests/642026.c
+index ef54f14bb..26ab2ed06 100644
+--- a/glib/tests/642026.c
++++ b/glib/tests/642026.c
+@@ -25,7 +25,7 @@ static GMutex *mutex;
+ static GCond *cond;
+ static guint i;
+
+-static volatile gint freed = 0;
++static gint freed = 0; /* (atomic) */
+
+ static void
+ notify (gpointer p)
+@@ -63,7 +63,7 @@ testcase (void)
+ GThread *t1;
+
+ g_static_private_init (&sp);
+- freed = 0;
++ g_atomic_int_set (&freed, 0);
+
+ t1 = g_thread_create (thread_func, NULL, TRUE, NULL);
+ g_assert (t1 != NULL);
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch
new file mode 100644
index 000000000..8bc71a698
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch
@@ -0,0 +1,90 @@
+From ea746c79faf554d980c21b0e4381753e003d2dc6 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:17:23 +0000
+Subject: [PATCH 03/29] tests: Fix non-atomic access to a shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variable, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/mainloop.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/glib/tests/mainloop.c b/glib/tests/mainloop.c
+index 16763a0ea..563a951de 100644
+--- a/glib/tests/mainloop.c
++++ b/glib/tests/mainloop.c
+@@ -918,7 +918,7 @@ test_mainloop_overflow (void)
+ g_main_context_unref (ctx);
+ }
+
+-static volatile gint ready_time_dispatched;
++static gint ready_time_dispatched; /* (atomic) */
+
+ static gboolean
+ ready_time_dispatch (GSource *source,
+@@ -964,7 +964,7 @@ test_ready_time (void)
+ /* A source with no ready time set should not fire */
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_false (ready_time_dispatched);
++ g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+
+ /* The ready time should not have been changed */
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+@@ -978,37 +978,37 @@ test_ready_time (void)
+ */
+ g_source_set_ready_time (source, g_get_monotonic_time () + G_TIME_SPAN_DAY);
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_false (ready_time_dispatched);
++ g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+ /* Make sure it didn't get reset */
+ g_assert_cmpint (g_source_get_ready_time (source), !=, -1);
+
+ /* Ready time of -1 -> don't fire */
+ g_source_set_ready_time (source, -1);
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_false (ready_time_dispatched);
++ g_assert_false (g_atomic_int_get (&ready_time_dispatched));
+ /* Not reset, but should still be -1 from above */
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+
+ /* A ready time of the current time should fire immediately */
+ g_source_set_ready_time (source, g_get_monotonic_time ());
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_true (ready_time_dispatched);
+- ready_time_dispatched = FALSE;
++ g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++ g_atomic_int_set (&ready_time_dispatched, FALSE);
+ /* Should have gotten reset by the handler function */
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+
+ /* As well as one in the recent past... */
+ g_source_set_ready_time (source, g_get_monotonic_time () - G_TIME_SPAN_SECOND);
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_true (ready_time_dispatched);
+- ready_time_dispatched = FALSE;
++ g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++ g_atomic_int_set (&ready_time_dispatched, FALSE);
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+
+ /* Zero is the 'official' way to get a source to fire immediately */
+ g_source_set_ready_time (source, 0);
+ while (g_main_context_iteration (NULL, FALSE));
+- g_assert_true (ready_time_dispatched);
+- ready_time_dispatched = FALSE;
++ g_assert_true (g_atomic_int_get (&ready_time_dispatched));
++ g_atomic_int_set (&ready_time_dispatched, FALSE);
+ g_assert_cmpint (g_source_get_ready_time (source), ==, -1);
+
+ /* Now do some tests of cross-thread wakeups.
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 000000000..4b7b6f463
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,93 @@
+From 3dda662bebb81666d009635df1055ba5c1e17b52 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:16:17 +0000
+Subject: [PATCH 04/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/atomic.c | 4 ++--
+ glib/tests/cond.c | 2 +-
+ glib/tests/gwakeuptest.c | 2 +-
+ glib/tests/hash.c | 2 +-
+ glib/tests/slice.c | 2 +-
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c
+index 6b6cc7f3e..7d2459f3a 100644
+--- a/glib/tests/atomic.c
++++ b/glib/tests/atomic.c
+@@ -248,8 +248,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ #define THREADS 10
+ #define ROUNDS 10000
+
+-volatile gint bucket[THREADS];
+-volatile gint atomic;
++gint bucket[THREADS]; /* never contested by threads, not accessed atomically */
++gint atomic; /* (atomic) */
+
+ static gpointer
+ thread_func (gpointer data)
+diff --git a/glib/tests/cond.c b/glib/tests/cond.c
+index 0f0b3d249..ed338cce3 100644
+--- a/glib/tests/cond.c
++++ b/glib/tests/cond.c
+@@ -29,7 +29,7 @@
+
+ static GCond cond;
+ static GMutex mutex;
+-static volatile gint next;
++static gint next; /* locked by @mutex */
+
+ static void
+ push_value (gint value)
+diff --git a/glib/tests/gwakeuptest.c b/glib/tests/gwakeuptest.c
+index 461a7d3de..b37fb43fc 100644
+--- a/glib/tests/gwakeuptest.c
++++ b/glib/tests/gwakeuptest.c
+@@ -92,7 +92,7 @@ struct context
+ static struct context contexts[NUM_THREADS];
+ static GThread *threads[NUM_THREADS];
+ static GWakeup *last_token_wakeup;
+-static volatile gint tokens_alive;
++static gint tokens_alive; /* (atomic) */
+
+ static void
+ context_init (struct context *ctx)
+diff --git a/glib/tests/hash.c b/glib/tests/hash.c
+index 4623d18d1..f4ff55ce1 100644
+--- a/glib/tests/hash.c
++++ b/glib/tests/hash.c
+@@ -1362,7 +1362,7 @@ struct _GHashTable
+
+ GHashFunc hash_func;
+ GEqualFunc key_equal_func;
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+
+ #ifndef G_DISABLE_ASSERT
+ int version;
+diff --git a/glib/tests/slice.c b/glib/tests/slice.c
+index f37826f3a..a566280db 100644
+--- a/glib/tests/slice.c
++++ b/glib/tests/slice.c
+@@ -107,7 +107,7 @@ thread_allocate (gpointer data)
+ gint b;
+ gint size;
+ gpointer p;
+- volatile gpointer *loc;
++ gpointer *loc; /* (atomic) */
+
+ for (i = 0; i < 10000; i++)
+ {
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch
new file mode 100644
index 000000000..3aecf4582
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch
@@ -0,0 +1,702 @@
+From 7f905ff1faf0acbe0d2ce69937e031fcacce9294 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:21:00 +0000
+Subject: [PATCH 05/29] tests: Fix non-atomic access to some shared variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variables, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/tests/gdbus-connection-flush.c | 6 +-
+ gio/tests/gdbus-connection.c | 40 ++++----
+ gio/tests/gdbus-overflow.c | 20 ++--
+ gio/tests/socket-service.c | 6 +-
+ gio/tests/task.c | 150 ++++++++++++++---------------
+ 5 files changed, 111 insertions(+), 111 deletions(-)
+
+--- a/gio/tests/gdbus-connection-flush.c
++++ b/gio/tests/gdbus-connection-flush.c
+@@ -43,9 +43,9 @@ G_LOCK_DEFINE_STATIC (write);
+ typedef struct {
+ GFilterOutputStream parent;
+
+- volatile gint started;
+- volatile gint finished;
+- volatile gint flushed;
++ gint started; /* (atomic) */
++ gint finished; /* (atomic) */
++ gint flushed; /* (atomic) */
+
+ GOutputStream *real_output;
+ } MyOutputStream;
+--- a/gio/tests/gdbus-connection.c
++++ b/gio/tests/gdbus-connection.c
+@@ -61,9 +61,9 @@ _log (const gchar *format, ...)
+ static gboolean
+ test_connection_quit_mainloop (gpointer user_data)
+ {
+- volatile gboolean *quit_mainloop_fired = user_data;
++ gboolean *quit_mainloop_fired = user_data; /* (atomic) */
+ _log ("quit_mainloop_fired");
+- *quit_mainloop_fired = TRUE;
++ g_atomic_int_set (quit_mainloop_fired, TRUE);
+ g_main_loop_quit (loop);
+ return TRUE;
+ }
+@@ -113,8 +113,8 @@ on_name_owner_changed (GDBusConnection *
+ static void
+ a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop (gpointer user_data)
+ {
+- volatile gboolean *val = user_data;
+- *val = TRUE;
++ gboolean *val = user_data; /* (atomic) */
++ g_atomic_int_set (val, TRUE);
+ _log ("destroynotify fired for %p", val);
+ g_main_loop_quit (loop);
+ }
+@@ -143,10 +143,10 @@ test_connection_life_cycle (void)
+ GDBusConnection *c;
+ GDBusConnection *c2;
+ GError *error;
+- volatile gboolean on_signal_registration_freed_called;
+- volatile gboolean on_filter_freed_called;
+- volatile gboolean on_register_object_freed_called;
+- volatile gboolean quit_mainloop_fired;
++ gboolean on_signal_registration_freed_called; /* (atomic) */
++ gboolean on_filter_freed_called; /* (atomic) */
++ gboolean on_register_object_freed_called; /* (atomic) */
++ gboolean quit_mainloop_fired; /* (atomic) */
+ guint quit_mainloop_id;
+ guint registration_id;
+
+@@ -208,7 +208,7 @@ test_connection_life_cycle (void)
+ g_assert_no_error (error);
+ g_assert_nonnull (c2);
+ /* signal registration */
+- on_signal_registration_freed_called = FALSE;
++ g_atomic_int_set (&on_signal_registration_freed_called, FALSE);
+ g_dbus_connection_signal_subscribe (c2,
+ "org.freedesktop.DBus", /* bus name */
+ "org.freedesktop.DBus", /* interface */
+@@ -220,13 +220,13 @@ test_connection_life_cycle (void)
+ (gpointer) &on_signal_registration_freed_called,
+ a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop);
+ /* filter func */
+- on_filter_freed_called = FALSE;
++ g_atomic_int_set (&on_filter_freed_called, FALSE);
+ g_dbus_connection_add_filter (c2,
+ some_filter_func,
+ (gpointer) &on_filter_freed_called,
+ a_gdestroynotify_that_sets_a_gboolean_to_true_and_quits_loop);
+ /* object registration */
+- on_register_object_freed_called = FALSE;
++ g_atomic_int_set (&on_register_object_freed_called, FALSE);
+ error = NULL;
+ registration_id = g_dbus_connection_register_object (c2,
+ "/foo",
+@@ -239,7 +239,7 @@ test_connection_life_cycle (void)
+ g_assert_cmpuint (registration_id, >, 0);
+ /* ok, finalize the connection and check that all the GDestroyNotify functions are invoked as expected */
+ g_object_unref (c2);
+- quit_mainloop_fired = FALSE;
++ g_atomic_int_set (&quit_mainloop_fired, FALSE);
+ quit_mainloop_id = g_timeout_add (30000, test_connection_quit_mainloop, (gpointer) &quit_mainloop_fired);
+ _log ("destroynotifies for\n"
+ " register_object %p\n"
+@@ -250,21 +250,21 @@ test_connection_life_cycle (void)
+ &on_signal_registration_freed_called);
+ while (TRUE)
+ {
+- if (on_signal_registration_freed_called &&
+- on_filter_freed_called &&
+- on_register_object_freed_called)
++ if (g_atomic_int_get (&on_signal_registration_freed_called) &&
++ g_atomic_int_get (&on_filter_freed_called) &&
++ g_atomic_int_get (&on_register_object_freed_called))
+ break;
+- if (quit_mainloop_fired)
++ if (g_atomic_int_get (&quit_mainloop_fired))
+ break;
+ _log ("entering loop");
+ g_main_loop_run (loop);
+ _log ("exiting loop");
+ }
+ g_source_remove (quit_mainloop_id);
+- g_assert_true (on_signal_registration_freed_called);
+- g_assert_true (on_filter_freed_called);
+- g_assert_true (on_register_object_freed_called);
+- g_assert_false (quit_mainloop_fired);
++ g_assert_true (g_atomic_int_get (&on_signal_registration_freed_called));
++ g_assert_true (g_atomic_int_get (&on_filter_freed_called));
++ g_assert_true (g_atomic_int_get (&on_register_object_freed_called));
++ g_assert_false (g_atomic_int_get (&quit_mainloop_fired));
+
+ /*
+ * Check for correct behavior when the bus goes away
+--- a/gio/tests/gdbus-overflow.c
++++ b/gio/tests/gdbus-overflow.c
+@@ -86,8 +86,8 @@ overflow_filter_func (GDBusConnection *c
+ gboolean incoming,
+ gpointer user_data)
+ {
+- volatile gint *counter = user_data;
+- *counter += 1;
++ gint *counter = user_data; /* (atomic) */
++ g_atomic_int_inc (counter);
+ return message;
+ }
+
+@@ -108,8 +108,8 @@ test_overflow (void)
+ GDBusConnection *producer, *consumer;
+ GError *error;
+ GTimer *timer;
+- volatile gint n_messages_received;
+- volatile gint n_messages_sent;
++ gint n_messages_received; /* (atomic) */
++ gint n_messages_sent; /* (atomic) */
+
+ g_assert_cmpint (socketpair (AF_UNIX, SOCK_STREAM, 0, sv), ==, 0);
+
+@@ -129,7 +129,7 @@ test_overflow (void)
+ g_dbus_connection_set_exit_on_close (producer, TRUE);
+ g_assert_no_error (error);
+ g_object_unref (socket_connection);
+- n_messages_sent = 0;
++ g_atomic_int_set (&n_messages_sent, 0);
+ g_dbus_connection_add_filter (producer, overflow_filter_func, (gpointer) &n_messages_sent, NULL);
+
+ /* send enough data that we get an EAGAIN */
+@@ -155,7 +155,7 @@ test_overflow (void)
+ */
+ g_timeout_add (500, overflow_on_500ms_later_func, NULL);
+ g_main_loop_run (loop);
+- g_assert_cmpint (n_messages_sent, <, OVERFLOW_NUM_SIGNALS);
++ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), <, OVERFLOW_NUM_SIGNALS);
+
+ /* now suck it all out as a client, and add it up */
+ socket = g_socket_new_from_fd (sv[1], &error);
+@@ -171,18 +171,18 @@ test_overflow (void)
+ &error);
+ g_assert_no_error (error);
+ g_object_unref (socket_connection);
+- n_messages_received = 0;
++ g_atomic_int_set (&n_messages_received, 0);
+ g_dbus_connection_add_filter (consumer, overflow_filter_func, (gpointer) &n_messages_received, NULL);
+ g_dbus_connection_start_message_processing (consumer);
+
+ timer = g_timer_new ();
+ g_timer_start (timer);
+
+- while (n_messages_received < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC)
++ while (g_atomic_int_get (&n_messages_received) < OVERFLOW_NUM_SIGNALS && g_timer_elapsed (timer, NULL) < OVERFLOW_TIMEOUT_SEC)
+ g_main_context_iteration (NULL, FALSE);
+
+- g_assert_cmpint (n_messages_sent, ==, OVERFLOW_NUM_SIGNALS);
+- g_assert_cmpint (n_messages_received, ==, OVERFLOW_NUM_SIGNALS);
++ g_assert_cmpint (g_atomic_int_get (&n_messages_sent), ==, OVERFLOW_NUM_SIGNALS);
++ g_assert_cmpint (g_atomic_int_get (&n_messages_received), ==, OVERFLOW_NUM_SIGNALS);
+
+ g_timer_destroy (timer);
+ g_object_unref (consumer);
+--- a/gio/tests/socket-service.c
++++ b/gio/tests/socket-service.c
+@@ -99,7 +99,7 @@ test_start_stop (void)
+
+ GMutex mutex_712570;
+ GCond cond_712570;
+-volatile gboolean finalized;
++gboolean finalized; /* (atomic) */
+
+ GType test_threaded_socket_service_get_type (void);
+ typedef GThreadedSocketService TestThreadedSocketService;
+@@ -120,7 +120,7 @@ test_threaded_socket_service_finalize (G
+ /* Signal the main thread that finalization completed successfully
+ * rather than hanging.
+ */
+- finalized = TRUE;
++ g_atomic_int_set (&finalized, TRUE);
+ g_cond_signal (&cond_712570);
+ g_mutex_unlock (&mutex_712570);
+ }
+@@ -235,7 +235,7 @@ test_threaded_712570 (void)
+ */
+ g_object_unref (service);
+
+- while (!finalized)
++ while (!g_atomic_int_get (&finalized))
+ g_cond_wait (&cond_712570, &mutex_712570);
+ g_mutex_unlock (&mutex_712570);
+ }
+--- a/gio/tests/task.c
++++ b/gio/tests/task.c
+@@ -957,7 +957,7 @@ task_weak_notify (gpointer user_data,
+ gboolean *weak_notify_ran = user_data;
+
+ g_mutex_lock (&run_in_thread_mutex);
+- *weak_notify_ran = TRUE;
++ g_atomic_int_set (weak_notify_ran, TRUE);
+ g_cond_signal (&run_in_thread_cond);
+ g_mutex_unlock (&run_in_thread_mutex);
+ }
+@@ -1007,7 +1007,7 @@ run_in_thread_thread (GTask *task
+ g_assert (g_thread_self () != main_thread);
+
+ g_mutex_lock (&run_in_thread_mutex);
+- *thread_ran = TRUE;
++ g_atomic_int_set (thread_ran, TRUE);
+ g_cond_signal (&run_in_thread_cond);
+ g_mutex_unlock (&run_in_thread_mutex);
+
+@@ -1018,8 +1018,8 @@ static void
+ test_run_in_thread (void)
+ {
+ GTask *task;
+- volatile gboolean thread_ran = FALSE;
+- volatile gboolean weak_notify_ran = FALSE;
++ gboolean thread_ran = FALSE; /* (atomic) */
++ gboolean weak_notify_ran = FALSE; /* (atomic) */
+ gboolean notification_emitted = FALSE;
+ gboolean done = FALSE;
+
+@@ -1033,12 +1033,12 @@ test_run_in_thread (void)
+ g_task_run_in_thread (task, run_in_thread_thread);
+
+ g_mutex_lock (&run_in_thread_mutex);
+- while (!thread_ran)
++ while (!g_atomic_int_get (&thread_ran))
+ g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+ g_mutex_unlock (&run_in_thread_mutex);
+
+ g_assert (done == FALSE);
+- g_assert (weak_notify_ran == FALSE);
++ g_assert_false (g_atomic_int_get (&weak_notify_ran));
+
+ g_main_loop_run (loop);
+
+@@ -1050,7 +1050,7 @@ test_run_in_thread (void)
+ g_object_unref (task);
+
+ g_mutex_lock (&run_in_thread_mutex);
+- while (!weak_notify_ran)
++ while (!g_atomic_int_get (&weak_notify_ran))
+ g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+ g_mutex_unlock (&run_in_thread_mutex);
+ }
+@@ -1081,7 +1081,7 @@ run_in_thread_sync_thread (GTask
+
+ g_assert (g_thread_self () != main_thread);
+
+- *thread_ran = TRUE;
++ g_atomic_int_set (thread_ran, TRUE);
+ g_task_return_int (task, magic);
+ }
+
+@@ -1102,7 +1102,7 @@ test_run_in_thread_sync (void)
+ g_task_set_task_data (task, &thread_ran, NULL);
+ g_task_run_in_thread_sync (task, run_in_thread_sync_thread);
+
+- g_assert (thread_ran == TRUE);
++ g_assert_true (g_atomic_int_get (&thread_ran));
+ g_assert (task != NULL);
+ g_assert (!g_task_had_error (task));
+ g_assert_true (g_task_get_completed (task));
+@@ -1487,8 +1487,8 @@ test_return_on_cancel (void)
+ {
+ GTask *task;
+ GCancellable *cancellable;
+- volatile ThreadState thread_state;
+- volatile gboolean weak_notify_ran = FALSE;
++ ThreadState thread_state; /* (atomic) */
++ gboolean weak_notify_ran = FALSE; /* (atomic) */
+ gboolean callback_ran;
+ gboolean notification_emitted = FALSE;
+
+@@ -1498,7 +1498,7 @@ test_return_on_cancel (void)
+ * early.
+ */
+ callback_ran = FALSE;
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+ g_signal_connect (task, "notify::completed",
+ (GCallback) completed_cb, &notification_emitted);
+@@ -1509,18 +1509,18 @@ test_return_on_cancel (void)
+ g_task_run_in_thread (task, return_on_cancel_thread);
+ g_object_unref (task);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ g_assert (callback_ran == FALSE);
+
+ g_cancellable_cancel (cancellable);
+ g_mutex_unlock (&roc_finish_mutex);
+ g_main_loop_run (loop);
+
+- g_assert (thread_state == THREAD_COMPLETED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED);
+ g_assert (callback_ran == TRUE);
+ g_assert_true (notification_emitted);
+
+@@ -1529,7 +1529,7 @@ test_return_on_cancel (void)
+ /* If return-on-cancel is TRUE, it does return early */
+ callback_ran = FALSE;
+ notification_emitted = FALSE;
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+ g_object_weak_ref (G_OBJECT (task), task_weak_notify, (gpointer)&weak_notify_ran);
+ g_signal_connect (task, "notify::completed",
+@@ -1542,27 +1542,27 @@ test_return_on_cancel (void)
+ g_task_run_in_thread (task, return_on_cancel_thread);
+ g_object_unref (task);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ g_assert (callback_ran == FALSE);
+
+ g_cancellable_cancel (cancellable);
+ g_main_loop_run (loop);
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+ g_assert (callback_ran == TRUE);
+
+- g_assert (weak_notify_ran == FALSE);
++ g_assert_false (g_atomic_int_get (&weak_notify_ran));
+
+- while (thread_state == THREAD_RUNNING)
++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+ g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+ g_mutex_unlock (&roc_finish_mutex);
+
+- g_assert (thread_state == THREAD_CANCELLED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+ g_mutex_lock (&run_in_thread_mutex);
+- while (!weak_notify_ran)
++ while (!g_atomic_int_get (&weak_notify_ran))
+ g_cond_wait (&run_in_thread_cond, &run_in_thread_mutex);
+ g_mutex_unlock (&run_in_thread_mutex);
+
+@@ -1574,7 +1574,7 @@ test_return_on_cancel (void)
+ */
+ callback_ran = FALSE;
+ notification_emitted = FALSE;
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, return_on_cancel_callback, &callback_ran);
+ g_signal_connect (task, "notify::completed",
+ (GCallback) completed_cb, &notification_emitted);
+@@ -1591,17 +1591,17 @@ test_return_on_cancel (void)
+ g_main_loop_run (loop);
+ g_assert (callback_ran == TRUE);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+
+- while (thread_state == THREAD_RUNNING)
++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+ g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+ g_mutex_unlock (&roc_finish_mutex);
+
+- g_assert (thread_state == THREAD_CANCELLED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+ g_assert_true (notification_emitted);
+
+ g_object_unref (cancellable);
+@@ -1621,7 +1621,7 @@ test_return_on_cancel_sync (void)
+ {
+ GTask *task;
+ GCancellable *cancellable;
+- volatile ThreadState thread_state;
++ ThreadState thread_state; /* (atomic) */
+ GThread *runner_thread;
+ gssize ret;
+ GError *error = NULL;
+@@ -1630,7 +1630,7 @@ test_return_on_cancel_sync (void)
+
+ /* If return-on-cancel is FALSE, the task does not return early.
+ */
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+
+ g_task_set_task_data (task, (gpointer)&thread_state, NULL);
+@@ -1639,16 +1639,16 @@ test_return_on_cancel_sync (void)
+ runner_thread = g_thread_new ("return-on-cancel-sync runner thread",
+ cancel_sync_runner_thread, task);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+
+ g_cancellable_cancel (cancellable);
+ g_mutex_unlock (&roc_finish_mutex);
+ g_thread_join (runner_thread);
+- g_assert (thread_state == THREAD_COMPLETED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_COMPLETED);
+
+ ret = g_task_propagate_int (task, &error);
+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1660,7 +1660,7 @@ test_return_on_cancel_sync (void)
+ g_cancellable_reset (cancellable);
+
+ /* If return-on-cancel is TRUE, it does return early */
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+ g_task_set_return_on_cancel (task, TRUE);
+
+@@ -1670,15 +1670,15 @@ test_return_on_cancel_sync (void)
+ runner_thread = g_thread_new ("return-on-cancel-sync runner thread",
+ cancel_sync_runner_thread, task);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+
+ g_cancellable_cancel (cancellable);
+ g_thread_join (runner_thread);
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+
+ ret = g_task_propagate_int (task, &error);
+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1687,18 +1687,18 @@ test_return_on_cancel_sync (void)
+
+ g_object_unref (task);
+
+- while (thread_state == THREAD_RUNNING)
++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+ g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+ g_mutex_unlock (&roc_finish_mutex);
+
+- g_assert (thread_state == THREAD_CANCELLED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+
+ g_cancellable_reset (cancellable);
+
+ /* If the task is already cancelled before it starts, it returns
+ * immediately, but the thread func still runs.
+ */
+- thread_state = THREAD_STARTING;
++ g_atomic_int_set (&thread_state, THREAD_STARTING);
+ task = g_task_new (NULL, cancellable, run_in_thread_sync_callback, NULL);
+ g_task_set_return_on_cancel (task, TRUE);
+
+@@ -1711,7 +1711,7 @@ test_return_on_cancel_sync (void)
+ cancel_sync_runner_thread, task);
+
+ g_thread_join (runner_thread);
+- g_assert (thread_state == THREAD_STARTING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_STARTING);
+
+ ret = g_task_propagate_int (task, &error);
+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
+@@ -1720,17 +1720,17 @@ test_return_on_cancel_sync (void)
+
+ g_object_unref (task);
+
+- while (thread_state == THREAD_STARTING)
++ while (g_atomic_int_get (&thread_state) == THREAD_STARTING)
+ g_cond_wait (&roc_init_cond, &roc_init_mutex);
+ g_mutex_unlock (&roc_init_mutex);
+
+- g_assert (thread_state == THREAD_RUNNING);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_RUNNING);
+
+- while (thread_state == THREAD_RUNNING)
++ while (g_atomic_int_get (&thread_state) == THREAD_RUNNING)
+ g_cond_wait (&roc_finish_cond, &roc_finish_mutex);
+ g_mutex_unlock (&roc_finish_mutex);
+
+- g_assert (thread_state == THREAD_CANCELLED);
++ g_assert_cmpint (g_atomic_int_get (&thread_state), ==, THREAD_CANCELLED);
+
+ g_object_unref (cancellable);
+ }
+@@ -1776,7 +1776,7 @@ return_on_cancel_atomic_thread (GTask
+ gpointer task_data,
+ GCancellable *cancellable)
+ {
+- gint *state = task_data;
++ gint *state = task_data; /* (atomic) */
+
+ g_assert (source_object == g_task_get_source_object (task));
+ g_assert (task_data == g_task_get_task_data (task));
+@@ -1784,34 +1784,34 @@ return_on_cancel_atomic_thread (GTask
+ g_assert_false (g_task_get_completed (task));
+
+ g_assert (g_thread_self () != main_thread);
+- g_assert_cmpint (*state, ==, 0);
++ g_assert_cmpint (g_atomic_int_get (state), ==, 0);
+
+ g_mutex_lock (&roca_mutex_1);
+- *state = 1;
++ g_atomic_int_set (state, 1);
+ g_cond_signal (&roca_cond_1);
+ g_mutex_unlock (&roca_mutex_1);
+
+ g_mutex_lock (&roca_mutex_2);
+ if (g_task_set_return_on_cancel (task, FALSE))
+- *state = 2;
++ g_atomic_int_set (state, 2);
+ else
+- *state = 3;
++ g_atomic_int_set (state, 3);
+ g_cond_signal (&roca_cond_2);
+ g_mutex_unlock (&roca_mutex_2);
+
+ g_mutex_lock (&roca_mutex_1);
+ if (g_task_set_return_on_cancel (task, TRUE))
+- *state = 4;
++ g_atomic_int_set (state, 4);
+ else
+- *state = 5;
++ g_atomic_int_set (state, 5);
+ g_cond_signal (&roca_cond_1);
+ g_mutex_unlock (&roca_mutex_1);
+
+ g_mutex_lock (&roca_mutex_2);
+ if (g_task_set_return_on_cancel (task, TRUE))
+- *state = 6;
++ g_atomic_int_set (state, 6);
+ else
+- *state = 7;
++ g_atomic_int_set (state, 7);
+ g_cond_signal (&roca_cond_2);
+ g_mutex_unlock (&roca_mutex_2);
+
+@@ -1823,7 +1823,7 @@ test_return_on_cancel_atomic (void)
+ {
+ GTask *task;
+ GCancellable *cancellable;
+- volatile gint state;
++ gint state; /* (atomic) */
+ gboolean notification_emitted = FALSE;
+ gboolean callback_ran;
+
+@@ -1832,7 +1832,7 @@ test_return_on_cancel_atomic (void)
+ g_mutex_lock (&roca_mutex_2);
+
+ /* If we don't cancel it, each set_return_on_cancel() call will succeed */
+- state = 0;
++ g_atomic_int_set (&state, 0);
+ callback_ran = FALSE;
+ task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran);
+ g_task_set_return_on_cancel (task, TRUE);
+@@ -1843,23 +1843,23 @@ test_return_on_cancel_atomic (void)
+ g_task_run_in_thread (task, return_on_cancel_atomic_thread);
+ g_object_unref (task);
+
+- g_assert_cmpint (state, ==, 0);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 0);
+
+- while (state == 0)
++ while (g_atomic_int_get (&state) == 0)
+ g_cond_wait (&roca_cond_1, &roca_mutex_1);
+- g_assert (state == 1);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 1);
+
+- while (state == 1)
++ while (g_atomic_int_get (&state) == 1)
+ g_cond_wait (&roca_cond_2, &roca_mutex_2);
+- g_assert (state == 2);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 2);
+
+- while (state == 2)
++ while (g_atomic_int_get (&state) == 2)
+ g_cond_wait (&roca_cond_1, &roca_mutex_1);
+- g_assert (state == 4);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 4);
+
+- while (state == 4)
++ while (g_atomic_int_get (&state) == 4)
+ g_cond_wait (&roca_cond_2, &roca_mutex_2);
+- g_assert (state == 6);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 6);
+
+ /* callback assumes there'll be a cancelled error */
+ g_cancellable_cancel (cancellable);
+@@ -1876,7 +1876,7 @@ test_return_on_cancel_atomic (void)
+ * task won't complete right away, and further
+ * g_task_set_return_on_cancel() calls will return FALSE.
+ */
+- state = 0;
++ g_atomic_int_set (&state, 0);
+ callback_ran = FALSE;
+ notification_emitted = FALSE;
+ task = g_task_new (NULL, cancellable, return_on_cancel_atomic_callback, &callback_ran);
+@@ -1887,16 +1887,16 @@ test_return_on_cancel_atomic (void)
+ g_task_set_task_data (task, (gpointer)&state, NULL);
+ g_task_run_in_thread (task, return_on_cancel_atomic_thread);
+
+- g_assert_cmpint (state, ==, 0);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 0);
+
+- while (state == 0)
++ while (g_atomic_int_get (&state) == 0)
+ g_cond_wait (&roca_cond_1, &roca_mutex_1);
+- g_assert (state == 1);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 1);
+ g_assert (g_task_get_return_on_cancel (task));
+
+- while (state == 1)
++ while (g_atomic_int_get (&state) == 1)
+ g_cond_wait (&roca_cond_2, &roca_mutex_2);
+- g_assert (state == 2);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 2);
+ g_assert (!g_task_get_return_on_cancel (task));
+
+ g_cancellable_cancel (cancellable);
+@@ -1904,18 +1904,18 @@ test_return_on_cancel_atomic (void)
+ g_main_loop_run (loop);
+ g_assert (callback_ran == FALSE);
+
+- while (state == 2)
++ while (g_atomic_int_get (&state) == 2)
+ g_cond_wait (&roca_cond_1, &roca_mutex_1);
+- g_assert (state == 5);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 5);
+ g_assert (!g_task_get_return_on_cancel (task));
+
+ g_main_loop_run (loop);
+ g_assert (callback_ran == TRUE);
+ g_assert_true (notification_emitted);
+
+- while (state == 5)
++ while (g_atomic_int_get (&state) == 5)
+ g_cond_wait (&roca_cond_2, &roca_mutex_2);
+- g_assert (state == 7);
++ g_assert_cmpint (g_atomic_int_get (&state), ==, 7);
+
+ g_object_unref (cancellable);
+ g_mutex_unlock (&roca_mutex_1);
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 000000000..7f22b4d46
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,35 @@
+From f4607def1695efb50eb49e0586eed0f5557935f2 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:20:37 +0000
+Subject: [PATCH 06/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/tests/g-file-info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/tests/g-file-info.c b/gio/tests/g-file-info.c
+index 809b0ec79..1a02b5e0e 100644
+--- a/gio/tests/g-file-info.c
++++ b/gio/tests/g-file-info.c
+@@ -221,7 +221,7 @@ test_internal_enhanced_stdio (void)
+ guint64 size_p0, alsize_p0, size_ps, alsize_ps;
+ const gchar *id_p0;
+ const gchar *id_p1;
+- volatile guint64 time_p0;
++ guint64 time_p0;
+ gchar *tmp_dir;
+ wchar_t *programdata_dir_w;
+ wchar_t *users_dir_w;
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch
new file mode 100644
index 000000000..78753f821
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch
@@ -0,0 +1,111 @@
+From 33612404397f87f0cd45da90d3aa9ab60df895ee Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:24:28 +0000
+Subject: [PATCH 07/29] gdbusconnection: Drop unnecessary volatile qualifiers
+ from variables
+
+This should introduce no API changes; there are public functions
+exported by `GDBusConnection` which still have some (incorrectly)
+`volatile` arguments, but dropping those qualifiers would be an API
+break.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusconnection.c | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
+index ed8cf6219..91c365e80 100644
+--- a/gio/gdbusconnection.c
++++ b/gio/gdbusconnection.c
+@@ -393,7 +393,7 @@ struct _GDBusConnection
+ * FLAG_CLOSED is the closed property. It may be read at any time, but
+ * may only be written while holding @lock.
+ */
+- volatile gint atomic_flags;
++ gint atomic_flags; /* (atomic) */
+
+ /* If the connection could not be established during initable_init(),
+ * this GError will be set.
+@@ -1596,7 +1596,7 @@ static gboolean
+ g_dbus_connection_send_message_unlocked (GDBusConnection *connection,
+ GDBusMessage *message,
+ GDBusSendMessageFlags flags,
+- volatile guint32 *out_serial,
++ guint32 *out_serial,
+ GError **error)
+ {
+ guchar *blob;
+@@ -1741,7 +1741,7 @@ g_dbus_connection_send_message (GDBusConnection *connection,
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ CONNECTION_LOCK (connection);
+- ret = g_dbus_connection_send_message_unlocked (connection, message, flags, out_serial, error);
++ ret = g_dbus_connection_send_message_unlocked (connection, message, flags, (guint32 *) out_serial, error);
+ CONNECTION_UNLOCK (connection);
+ return ret;
+ }
+@@ -1901,7 +1901,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect
+ GDBusMessage *message,
+ GDBusSendMessageFlags flags,
+ gint timeout_msec,
+- volatile guint32 *out_serial,
++ guint32 *out_serial,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+@@ -1909,7 +1909,7 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect
+ GTask *task;
+ SendMessageData *data;
+ GError *error = NULL;
+- volatile guint32 serial;
++ guint32 serial;
+
+ if (out_serial == NULL)
+ out_serial = &serial;
+@@ -2022,7 +2022,7 @@ g_dbus_connection_send_message_with_reply (GDBusConnection *connection,
+ message,
+ flags,
+ timeout_msec,
+- out_serial,
++ (guint32 *) out_serial,
+ cancellable,
+ callback,
+ user_data);
+@@ -3082,7 +3082,7 @@ g_dbus_connection_get_peer_credentials (GDBusConnection *connection)
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+-static volatile guint _global_filter_id = 1;
++static guint _global_filter_id = 1; /* (atomic) */
+
+ /**
+ * g_dbus_connection_add_filter:
+@@ -3327,9 +3327,9 @@ args_to_rule (const gchar *sender,
+ return g_string_free (rule, FALSE);
+ }
+
+-static volatile guint _global_subscriber_id = 1;
+-static volatile guint _global_registration_id = 1;
+-static volatile guint _global_subtree_registration_id = 1;
++static guint _global_subscriber_id = 1; /* (atomic) */
++static guint _global_registration_id = 1; /* (atomic) */
++static guint _global_subtree_registration_id = 1; /* (atomic) */
+
+ /* ---------------------------------------------------------------------------------------------------- */
+
+@@ -5992,7 +5992,7 @@ g_dbus_connection_call_sync_internal (GDBusConnection *connection,
+ message,
+ send_flags,
+ timeout_msec,
+- NULL, /* volatile guint32 *out_serial */
++ NULL, /* guint32 *out_serial */
+ cancellable,
+ &local_error);
+
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch
new file mode 100644
index 000000000..e947a264c
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch
@@ -0,0 +1,95 @@
+From 7c7623c4a31fb0f2a7176c43acc728093818b58c Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:26:19 +0000
+Subject: [PATCH 08/29] gdbuserror: Drop unnecessary volatile qualifiers from
+ variables
+
+This should introduce no API changes. The
+`g_dbus_error_register_error_domain()` function still (incorrectly) has
+a `volatile` argument, but dropping that qualifier would be an API
+break.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbuserror.c | 28 +++++++++++++++++-----------
+ 1 file changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c
+index 682677354..b03a33f27 100644
+--- a/gio/gdbuserror.c
++++ b/gio/gdbuserror.c
+@@ -84,12 +84,12 @@
+ * GQuark
+ * foo_bar_error_quark (void)
+ * {
+- * static volatile gsize quark_volatile = 0;
++ * static gsize quark = 0;
+ * g_dbus_error_register_error_domain ("foo-bar-error-quark",
+- * &quark_volatile,
++ * &quark,
+ * foo_bar_error_entries,
+ * G_N_ELEMENTS (foo_bar_error_entries));
+- * return (GQuark) quark_volatile;
++ * return (GQuark) quark;
+ * }
+ * ]|
+ * With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and
+@@ -160,12 +160,12 @@ GQuark
+ g_dbus_error_quark (void)
+ {
+ G_STATIC_ASSERT (G_N_ELEMENTS (g_dbus_error_entries) - 1 == G_DBUS_ERROR_PROPERTY_READ_ONLY);
+- static volatile gsize quark_volatile = 0;
++ static gsize quark = 0;
+ g_dbus_error_register_error_domain ("g-dbus-error-quark",
+- &quark_volatile,
++ &quark,
+ g_dbus_error_entries,
+ G_N_ELEMENTS (g_dbus_error_entries));
+- return (GQuark) quark_volatile;
++ return (GQuark) quark;
+ }
+
+ /**
+@@ -185,25 +185,31 @@ g_dbus_error_register_error_domain (const gchar *error_domain_quark_na
+ const GDBusErrorEntry *entries,
+ guint num_entries)
+ {
++ gsize *quark;
++
+ g_return_if_fail (error_domain_quark_name != NULL);
+ g_return_if_fail (quark_volatile != NULL);
+ g_return_if_fail (entries != NULL);
+ g_return_if_fail (num_entries > 0);
+
+- if (g_once_init_enter (quark_volatile))
++ /* Drop the volatile qualifier, which should never have been on the argument
++ * in the first place. */
++ quark = (gsize *) quark_volatile;
++
++ if (g_once_init_enter (quark))
+ {
+ guint n;
+- GQuark quark;
++ GQuark new_quark;
+
+- quark = g_quark_from_static_string (error_domain_quark_name);
++ new_quark = g_quark_from_static_string (error_domain_quark_name);
+
+ for (n = 0; n < num_entries; n++)
+ {
+- g_warn_if_fail (g_dbus_error_register_error (quark,
++ g_warn_if_fail (g_dbus_error_register_error (new_quark,
+ entries[n].error_code,
+ entries[n].dbus_error_name));
+ }
+- g_once_init_leave (quark_volatile, quark);
++ g_once_init_leave (quark, new_quark);
+ }
+ }
+
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch
new file mode 100644
index 000000000..7897d43bb
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch
@@ -0,0 +1,207 @@
+From 74250cd9c9dfd3ad428e445c095ceac88ba18691 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:28:23 +0000
+Subject: [PATCH 09/29] gio: Drop unnecessary volatile qualifiers from internal
+ variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusinterfaceskeleton.c | 2 +-
+ gio/gdbusintrospection.h | 14 +++++++-------
+ gio/gdbusnameowning.c | 4 ++--
+ gio/gdbusnamewatching.c | 4 ++--
+ gio/gdbusprivate.c | 10 +++++-----
+ gio/gnetworking.c | 2 +-
+ 6 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c
+index 243b4a0a4..76398df36 100644
+--- a/gio/gdbusinterfaceskeleton.c
++++ b/gio/gdbusinterfaceskeleton.c
+@@ -458,7 +458,7 @@ dbus_interface_interface_init (GDBusInterfaceIface *iface)
+
+ typedef struct
+ {
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ GDBusInterfaceSkeleton *interface;
+ GDBusInterfaceMethodCallFunc method_call_func;
+ GDBusMethodInvocation *invocation;
+diff --git a/gio/gdbusintrospection.h b/gio/gdbusintrospection.h
+index 14b171055..f2e291787 100644
+--- a/gio/gdbusintrospection.h
++++ b/gio/gdbusintrospection.h
+@@ -43,7 +43,7 @@ G_BEGIN_DECLS
+ struct _GDBusAnnotationInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *key;
+ gchar *value;
+ GDBusAnnotationInfo **annotations;
+@@ -63,7 +63,7 @@ struct _GDBusAnnotationInfo
+ struct _GDBusArgInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *name;
+ gchar *signature;
+ GDBusAnnotationInfo **annotations;
+@@ -84,7 +84,7 @@ struct _GDBusArgInfo
+ struct _GDBusMethodInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *name;
+ GDBusArgInfo **in_args;
+ GDBusArgInfo **out_args;
+@@ -105,7 +105,7 @@ struct _GDBusMethodInfo
+ struct _GDBusSignalInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *name;
+ GDBusArgInfo **args;
+ GDBusAnnotationInfo **annotations;
+@@ -126,7 +126,7 @@ struct _GDBusSignalInfo
+ struct _GDBusPropertyInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *name;
+ gchar *signature;
+ GDBusPropertyInfoFlags flags;
+@@ -149,7 +149,7 @@ struct _GDBusPropertyInfo
+ struct _GDBusInterfaceInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *name;
+ GDBusMethodInfo **methods;
+ GDBusSignalInfo **signals;
+@@ -172,7 +172,7 @@ struct _GDBusInterfaceInfo
+ struct _GDBusNodeInfo
+ {
+ /*< public >*/
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ gchar *path;
+ GDBusInterfaceInfo **interfaces;
+ GDBusNodeInfo **nodes;
+diff --git a/gio/gdbusnameowning.c b/gio/gdbusnameowning.c
+index d20e6ffed..1130d6789 100644
+--- a/gio/gdbusnameowning.c
++++ b/gio/gdbusnameowning.c
+@@ -55,7 +55,7 @@ typedef enum
+
+ typedef struct
+ {
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ guint id;
+ GBusNameOwnerFlags flags;
+ gchar *name;
+@@ -73,7 +73,7 @@ typedef struct
+ guint name_acquired_subscription_id;
+ guint name_lost_subscription_id;
+
+- volatile gboolean cancelled; /* must hold lock when reading or modifying */
++ gboolean cancelled; /* must hold lock when reading or modifying */
+
+ gboolean needs_release;
+ } Client;
+diff --git a/gio/gdbusnamewatching.c b/gio/gdbusnamewatching.c
+index bc2a9119e..8d24700c5 100644
+--- a/gio/gdbusnamewatching.c
++++ b/gio/gdbusnamewatching.c
+@@ -56,7 +56,7 @@ typedef enum
+
+ typedef struct
+ {
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ guint id;
+ gchar *name;
+ GBusNameWatcherFlags flags;
+@@ -78,7 +78,7 @@ typedef struct
+ } Client;
+
+ /* Must be accessed atomically. */
+-static volatile guint next_global_id = 1;
++static guint next_global_id = 1; /* (atomic) */
+
+ /* Must be accessed with @lock held. */
+ static GHashTable *map_id_to_client = NULL;
+diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c
+index 2551e4791..99b37f3eb 100644
+--- a/gio/gdbusprivate.c
++++ b/gio/gdbusprivate.c
+@@ -265,7 +265,7 @@ ensure_required_types (void)
+
+ typedef struct
+ {
+- volatile gint refcount;
++ gint refcount; /* (atomic) */
+ GThread *thread;
+ GMainContext *context;
+ GMainLoop *loop;
+@@ -341,12 +341,12 @@ typedef enum {
+
+ struct GDBusWorker
+ {
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+
+ SharedThreadData *shared_thread_data;
+
+ /* really a boolean, but GLib 2.28 lacks atomic boolean ops */
+- volatile gint stopped;
++ gint stopped; /* (atomic) */
+
+ /* TODO: frozen (e.g. G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING) currently
+ * only affects messages received from the other peer (since GDBusServer is the
+@@ -1941,11 +1941,11 @@ _g_dbus_debug_print_unlock (void)
+ void
+ _g_dbus_initialize (void)
+ {
+- static volatile gsize initialized = 0;
++ static gsize initialized = 0;
+
+ if (g_once_init_enter (&initialized))
+ {
+- volatile GQuark g_dbus_error_domain;
++ GQuark g_dbus_error_domain;
+ const gchar *debug;
+
+ g_dbus_error_domain = G_DBUS_ERROR;
+diff --git a/gio/gnetworking.c b/gio/gnetworking.c
+index 05507fe70..7bc6d73c4 100644
+--- a/gio/gnetworking.c
++++ b/gio/gnetworking.c
+@@ -61,7 +61,7 @@ void
+ g_networking_init (void)
+ {
+ #ifdef G_OS_WIN32
+- static volatile gsize inited = 0;
++ static gsize inited = 0;
+
+ if (g_once_init_enter (&inited))
+ {
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch
new file mode 100644
index 000000000..e52b70942
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0010-kqueue-Fix-unlocked-access-to-shared-variable.patch
@@ -0,0 +1,51 @@
+From e4e88688a0722237effc56cc21438d0c8e82de88 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:29:26 +0000
+Subject: [PATCH 10/29] kqueue: Fix unlocked access to shared variable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier because it doesn’t help.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/kqueue/kqueue-missing.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/gio/kqueue/kqueue-missing.c b/gio/kqueue/kqueue-missing.c
+index 37af82e5b..d1ffdf4bd 100644
+--- a/gio/kqueue/kqueue-missing.c
++++ b/gio/kqueue/kqueue-missing.c
+@@ -34,7 +34,7 @@ static gboolean km_debug_enabled = FALSE;
+ static GSList *missing_subs_list = NULL;
+ G_LOCK_DEFINE_STATIC (missing_lock);
+
+-static volatile gboolean scan_missing_running = FALSE;
++static gboolean scan_missing_running = FALSE; /* must be accessed under @missing_lock */
+
+
+ static gboolean
+@@ -62,7 +62,6 @@ _km_add_missing (kqueue_sub *sub)
+
+ KM_W ("adding %s to missing list\n", sub->filename);
+ missing_subs_list = g_slist_prepend (missing_subs_list, sub);
+- G_UNLOCK (missing_lock);
+
+ if (!scan_missing_running)
+ {
+@@ -73,6 +72,8 @@ _km_add_missing (kqueue_sub *sub)
+ g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ());
+ g_source_unref (source);
+ }
++
++ G_UNLOCK (missing_lock);
+ }
+
+ /**
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 000000000..ea3fd9f6e
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,126 @@
+From 7cdb68713c1863a27ad82d801756ec74097e8e87 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:30:36 +0000
+Subject: [PATCH 11/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ tests/gobject/performance-threaded.c | 2 +-
+ tests/gobject/performance.c | 4 ++--
+ tests/onceinit.c | 16 ++++++++--------
+ 3 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/tests/gobject/performance-threaded.c b/tests/gobject/performance-threaded.c
+index 30ea5bd80..c98541d66 100644
+--- a/tests/gobject/performance-threaded.c
++++ b/tests/gobject/performance-threaded.c
+@@ -52,7 +52,7 @@ static GType liststore_interfaces[6];
+ static gpointer
+ register_types (void)
+ {
+- static volatile gsize inited = 0;
++ static gsize inited = 0;
+ if (g_once_init_enter (&inited))
+ {
+ liststore_interfaces[0] = simple_register_class ("GtkBuildable", G_TYPE_INTERFACE, 0);
+diff --git a/tests/gobject/performance.c b/tests/gobject/performance.c
+index 236ffaed0..163be58b4 100644
+--- a/tests/gobject/performance.c
++++ b/tests/gobject/performance.c
+@@ -575,8 +575,8 @@ test_type_check_run (PerformanceTest *test,
+ gpointer _data)
+ {
+ struct TypeCheckTest *data = _data;
+- volatile GObject *object = data->object;
+- volatile GType type, types[5];
++ GObject *object = data->object;
++ GType type, types[5];
+ int i, j;
+
+ types[0] = test_iface1_get_type ();
+diff --git a/tests/onceinit.c b/tests/onceinit.c
+index 89ba6a136..9788efcbd 100644
+--- a/tests/onceinit.c
++++ b/tests/onceinit.c
+@@ -25,13 +25,13 @@
+
+ static GMutex tmutex;
+ static GCond tcond;
+-static volatile int thread_call_count = 0;
++static int thread_call_count = 0; /* (atomic) */
+ static char dummy_value = 'x';
+
+ static void
+ assert_singleton_execution1 (void)
+ {
+- static volatile int seen_execution = 0;
++ static int seen_execution = 0; /* (atomic) */
+ int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+ if (old_seen_execution != 0)
+ g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -40,7 +40,7 @@ assert_singleton_execution1 (void)
+ static void
+ assert_singleton_execution2 (void)
+ {
+- static volatile int seen_execution = 0;
++ static int seen_execution = 0; /* (atomic) */
+ int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+ if (old_seen_execution != 0)
+ g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -49,7 +49,7 @@ assert_singleton_execution2 (void)
+ static void
+ assert_singleton_execution3 (void)
+ {
+- static volatile int seen_execution = 0;
++ static int seen_execution = 0; /* (atomic) */
+ int old_seen_execution = g_atomic_int_add (&seen_execution, 1);
+ if (old_seen_execution != 0)
+ g_error ("%s: function executed more than once", G_STRFUNC);
+@@ -58,7 +58,7 @@ assert_singleton_execution3 (void)
+ static void
+ initializer1 (void)
+ {
+- static volatile gsize initialized = 0;
++ static gsize initialized = 0;
+ if (g_once_init_enter (&initialized))
+ {
+ gsize initval = 42;
+@@ -70,7 +70,7 @@ initializer1 (void)
+ static gpointer
+ initializer2 (void)
+ {
+- static volatile gsize initialized = 0;
++ static gsize initialized = 0;
+ if (g_once_init_enter (&initialized))
+ {
+ void *pointer_value = &dummy_value;
+@@ -83,7 +83,7 @@ initializer2 (void)
+ static void
+ initializer3 (void)
+ {
+- static volatile gsize initialized = 0;
++ static gsize initialized = 0;
+ if (g_once_init_enter (&initialized))
+ {
+ gsize initval = 42;
+@@ -163,7 +163,7 @@ main (int argc,
+ static void \
+ test_initializer_##N (void) \
+ { \
+- static volatile gsize initialized = 0; \
++ static gsize initialized = 0; \
+ if (g_once_init_enter (&initialized)) \
+ { \
+ g_free (g_strdup_printf ("cpuhog%5d", 1)); \
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch
new file mode 100644
index 000000000..be7fcba8c
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch
@@ -0,0 +1,103 @@
+From 1a7f0002a052725fb646e136fadd5dad66222d7f Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:31:01 +0000
+Subject: [PATCH 12/29] tests: Fix non-atomic access to some shared variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And drop the `volatile` qualifier from the variables, as that doesn’t
+help with thread safety.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ tests/refcount/objects.c | 8 ++++----
+ tests/refcount/properties3.c | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/tests/refcount/objects.c b/tests/refcount/objects.c
+index 963766d00..0c471a42b 100644
+--- a/tests/refcount/objects.c
++++ b/tests/refcount/objects.c
+@@ -26,7 +26,7 @@ struct _GTestClass
+ };
+
+ static GType my_test_get_type (void);
+-static volatile gboolean stopping;
++static gint stopping; /* (atomic) */
+
+ static void my_test_class_init (GTestClass * klass);
+ static void my_test_init (GTest * test);
+@@ -101,7 +101,7 @@ run_thread (GTest * test)
+ {
+ gint i = 1;
+
+- while (!stopping) {
++ while (!g_atomic_int_get (&stopping)) {
+ my_test_do_refcount (test);
+ if ((i++ % 10000) == 0) {
+ g_print (".");
+@@ -128,7 +128,7 @@ main (int argc, char **argv)
+
+ test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *));
+
+- stopping = FALSE;
++ g_atomic_int_set (&stopping, 0);
+
+ for (i = 0; i < n_threads; i++) {
+ GThread *thread;
+@@ -141,7 +141,7 @@ main (int argc, char **argv)
+ }
+ g_usleep (5000000);
+
+- stopping = TRUE;
++ g_atomic_int_set (&stopping, 1);
+
+ g_print ("\nstopping\n");
+
+diff --git a/tests/refcount/properties3.c b/tests/refcount/properties3.c
+index bc8820661..31f26a46e 100644
+--- a/tests/refcount/properties3.c
++++ b/tests/refcount/properties3.c
+@@ -34,7 +34,7 @@ struct _GTestClass
+ static GType my_test_get_type (void);
+ G_DEFINE_TYPE (GTest, my_test, G_TYPE_OBJECT)
+
+-static volatile gboolean stopping;
++static gint stopping; /* (atomic) */
+
+ static void my_test_get_property (GObject *object,
+ guint prop_id,
+@@ -140,7 +140,7 @@ run_thread (GTest * test)
+ {
+ gint i = 1;
+
+- while (!stopping) {
++ while (!g_atomic_int_get (&stopping)) {
+ my_test_do_property (test);
+ if ((i++ % 10000) == 0)
+ {
+@@ -170,7 +170,7 @@ main (int argc, char **argv)
+
+ test_threads = g_array_new (FALSE, FALSE, sizeof (GThread *));
+
+- stopping = FALSE;
++ g_atomic_int_set (&stopping, 0);
+
+ for (i = 0; i < n_threads; i++) {
+ GThread *thread;
+@@ -180,7 +180,7 @@ main (int argc, char **argv)
+ }
+ g_usleep (30000000);
+
+- stopping = TRUE;
++ g_atomic_int_set (&stopping, 1);
+ g_print ("\nstopping\n");
+
+ /* join all threads */
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch
new file mode 100644
index 000000000..efc6817bd
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch
@@ -0,0 +1,180 @@
+From 3c648457c284b4ba313b8591008d2e18ae4335eb Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:36:37 +0000
+Subject: [PATCH 13/29] gatomic: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+The `volatile` qualifiers on the function arguments have to be kept, as
+they are (unfortunately) part of the API.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gatomic.c | 34 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/glib/gatomic.c b/glib/gatomic.c
+index 8b8c6453d..67f5ba6b4 100644
+--- a/glib/gatomic.c
++++ b/glib/gatomic.c
+@@ -316,7 +316,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+- return g_atomic_pointer_get ((const volatile gpointer *) atomic);
++ return g_atomic_pointer_get ((gpointer *) atomic);
+ }
+
+ /**
+@@ -335,7 +335,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+ gpointer newval)
+ {
+- g_atomic_pointer_set ((volatile gpointer *) atomic, newval);
++ g_atomic_pointer_set ((gpointer *) atomic, newval);
+ }
+
+ /**
+@@ -363,7 +363,7 @@ gboolean
+ gpointer oldval,
+ gpointer newval)
+ {
+- return g_atomic_pointer_compare_and_exchange ((volatile gpointer *) atomic,
++ return g_atomic_pointer_compare_and_exchange ((gpointer *) atomic,
+ oldval, newval);
+ }
+
+@@ -387,7 +387,7 @@ gssize
+ (g_atomic_pointer_add) (volatile void *atomic,
+ gssize val)
+ {
+- return g_atomic_pointer_add ((volatile gpointer *) atomic, val);
++ return g_atomic_pointer_add ((gpointer *) atomic, val);
+ }
+
+ /**
+@@ -411,7 +411,7 @@ gsize
+ (g_atomic_pointer_and) (volatile void *atomic,
+ gsize val)
+ {
+- return g_atomic_pointer_and ((volatile gpointer *) atomic, val);
++ return g_atomic_pointer_and ((gpointer *) atomic, val);
+ }
+
+ /**
+@@ -435,7 +435,7 @@ gsize
+ (g_atomic_pointer_or) (volatile void *atomic,
+ gsize val)
+ {
+- return g_atomic_pointer_or ((volatile gpointer *) atomic, val);
++ return g_atomic_pointer_or ((gpointer *) atomic, val);
+ }
+
+ /**
+@@ -459,7 +459,7 @@ gsize
+ (g_atomic_pointer_xor) (volatile void *atomic,
+ gsize val)
+ {
+- return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
++ return g_atomic_pointer_xor ((gpointer *) atomic, val);
+ }
+
+ #elif defined (G_PLATFORM_WIN32)
+@@ -591,7 +591,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+- const volatile gpointer *ptr = atomic;
++ const gpointer *ptr = atomic;
+
+ MemoryBarrier ();
+ return *ptr;
+@@ -601,7 +601,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+ gpointer newval)
+ {
+- volatile gpointer *ptr = atomic;
++ gpointer *ptr = atomic;
+
+ *ptr = newval;
+ MemoryBarrier ();
+@@ -797,7 +797,7 @@ guint
+ gpointer
+ (g_atomic_pointer_get) (const volatile void *atomic)
+ {
+- const volatile gpointer *ptr = atomic;
++ const gpointer *ptr = atomic;
+ gpointer value;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -811,7 +811,7 @@ void
+ (g_atomic_pointer_set) (volatile void *atomic,
+ gpointer newval)
+ {
+- volatile gpointer *ptr = atomic;
++ gpointer *ptr = atomic;
+
+ pthread_mutex_lock (&g_atomic_lock);
+ *ptr = newval;
+@@ -823,7 +823,7 @@ gboolean
+ gpointer oldval,
+ gpointer newval)
+ {
+- volatile gpointer *ptr = atomic;
++ gpointer *ptr = atomic;
+ gboolean success;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -840,7 +840,7 @@ gssize
+ (g_atomic_pointer_add) (volatile void *atomic,
+ gssize val)
+ {
+- volatile gssize *ptr = atomic;
++ gssize *ptr = atomic;
+ gssize oldval;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -855,7 +855,7 @@ gsize
+ (g_atomic_pointer_and) (volatile void *atomic,
+ gsize val)
+ {
+- volatile gsize *ptr = atomic;
++ gsize *ptr = atomic;
+ gsize oldval;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -870,7 +870,7 @@ gsize
+ (g_atomic_pointer_or) (volatile void *atomic,
+ gsize val)
+ {
+- volatile gsize *ptr = atomic;
++ gsize *ptr = atomic;
+ gsize oldval;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -885,7 +885,7 @@ gsize
+ (g_atomic_pointer_xor) (volatile void *atomic,
+ gsize val)
+ {
+- volatile gsize *ptr = atomic;
++ gsize *ptr = atomic;
+ gsize oldval;
+
+ pthread_mutex_lock (&g_atomic_lock);
+@@ -915,5 +915,5 @@ gint
+ g_atomic_int_exchange_and_add (volatile gint *atomic,
+ gint val)
+ {
+- return (g_atomic_int_add) (atomic, val);
++ return (g_atomic_int_add) ((gint *) atomic, val);
+ }
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch
new file mode 100644
index 000000000..bcc06e05c
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch
@@ -0,0 +1,56 @@
+From 9474655eb21d64519b293e780bb686976cbdb790 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:38:36 +0000
+Subject: [PATCH 14/29] gatomic: Drop unnecessary volatile qualifiers from
+ macro variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+The `volatile` qualifiers on the function arguments have to be kept, as
+they are (unfortunately) part of the API.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gatomic.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/glib/gatomic.h b/glib/gatomic.h
+index bb1435c70..e6eccfada 100644
+--- a/glib/gatomic.h
++++ b/glib/gatomic.h
+@@ -211,7 +211,7 @@ G_END_DECLS
+ }))
+ #define g_atomic_pointer_and(atomic, val) \
+ (G_GNUC_EXTENSION ({ \
+- volatile gsize *gapa_atomic = (volatile gsize *) (atomic); \
++ gsize *gapa_atomic = (gsize *) (atomic); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \
+ (void) (0 ? (gpointer) *(atomic) : NULL); \
+@@ -220,7 +220,7 @@ G_END_DECLS
+ }))
+ #define g_atomic_pointer_or(atomic, val) \
+ (G_GNUC_EXTENSION ({ \
+- volatile gsize *gapo_atomic = (volatile gsize *) (atomic); \
++ gsize *gapo_atomic = (gsize *) (atomic); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \
+ (void) (0 ? (gpointer) *(atomic) : NULL); \
+@@ -229,7 +229,7 @@ G_END_DECLS
+ }))
+ #define g_atomic_pointer_xor(atomic, val) \
+ (G_GNUC_EXTENSION ({ \
+- volatile gsize *gapx_atomic = (volatile gsize *) (atomic); \
++ gsize *gapx_atomic = (gsize *) (atomic); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer)); \
+ G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gsize)); \
+ (void) (0 ? (gpointer) *(atomic) : NULL); \
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch
new file mode 100644
index 000000000..9468548e3
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch
@@ -0,0 +1,169 @@
+From 1314ff93fc4d3379483c33da6a7deff27f71ed95 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:40:56 +0000
+Subject: [PATCH 15/29] glib: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gdatetime.c | 2 +-
+ glib/gkeyfile.c | 2 +-
+ glib/gmain.c | 8 ++++----
+ glib/gmarkup.c | 2 +-
+ glib/gregex.c | 6 +++---
+ glib/gthread.c | 6 +++---
+ 6 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/glib/gdatetime.c b/glib/gdatetime.c
+index 1755257be..453077f6d 100644
+--- a/glib/gdatetime.c
++++ b/glib/gdatetime.c
+@@ -126,7 +126,7 @@ struct _GDateTime
+ /* 1 is 0001-01-01 in Proleptic Gregorian */
+ gint32 days;
+
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ };
+
+ /* Time conversion {{{1 */
+diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c
+index 9d0215331..bbe638b74 100644
+--- a/glib/gkeyfile.c
++++ b/glib/gkeyfile.c
+@@ -512,7 +512,7 @@ struct _GKeyFile
+
+ gchar **locales;
+
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ };
+
+ typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair;
+diff --git a/glib/gmain.c b/glib/gmain.c
+index 772b8ecfc..9c5f0ef1e 100644
+--- a/glib/gmain.c
++++ b/glib/gmain.c
+@@ -272,7 +272,7 @@ struct _GMainContext
+ guint owner_count;
+ GSList *waiters;
+
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+
+ GHashTable *sources; /* guint -> GSource */
+
+@@ -303,7 +303,7 @@ struct _GMainContext
+
+ struct _GSourceCallback
+ {
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ GSourceFunc func;
+ gpointer data;
+ GDestroyNotify notify;
+@@ -313,7 +313,7 @@ struct _GMainLoop
+ {
+ GMainContext *context;
+ gboolean is_running; /* (atomic) */
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+ };
+
+ struct _GTimeoutSource
+@@ -4749,7 +4749,7 @@ g_main_context_get_poll_func (GMainContext *context)
+ *
+ * |[<!-- language="C" -->
+ * #define NUM_TASKS 10
+- * static volatile gint tasks_remaining = NUM_TASKS;
++ * static gint tasks_remaining = NUM_TASKS; // (atomic)
+ * ...
+ *
+ * while (g_atomic_int_get (&tasks_remaining) != 0)
+diff --git a/glib/gmarkup.c b/glib/gmarkup.c
+index ba4dfd2e4..b8327fb6d 100644
+--- a/glib/gmarkup.c
++++ b/glib/gmarkup.c
+@@ -119,7 +119,7 @@ struct _GMarkupParseContext
+ {
+ const GMarkupParser *parser;
+
+- volatile gint ref_count;
++ gint ref_count; /* (atomic) */
+
+ GMarkupParseFlags flags;
+
+diff --git a/glib/gregex.c b/glib/gregex.c
+index 52416bbb9..5e6ddfb46 100644
+--- a/glib/gregex.c
++++ b/glib/gregex.c
+@@ -203,7 +203,7 @@ G_STATIC_ASSERT (G_REGEX_RAW == PCRE_UTF8);
+
+ struct _GMatchInfo
+ {
+- volatile gint ref_count; /* the ref count */
++ gint ref_count; /* the ref count (atomic) */
+ GRegex *regex; /* the regex */
+ GRegexMatchFlags match_opts; /* options used at match time on the regex */
+ gint matches; /* number of matching sub patterns */
+@@ -218,7 +218,7 @@ struct _GMatchInfo
+
+ struct _GRegex
+ {
+- volatile gint ref_count; /* the ref count for the immutable part */
++ gint ref_count; /* the ref count for the immutable part (atomic) */
+ gchar *pattern; /* the pattern */
+ pcre *pcre_re; /* compiled form of the pattern */
+ GRegexCompileFlags compile_opts; /* options used at compile time on the pattern */
+@@ -1300,7 +1300,7 @@ g_regex_new (const gchar *pattern,
+ pcre *re;
+ const gchar *errmsg;
+ gboolean optimize = FALSE;
+- static volatile gsize initialised = 0;
++ static gsize initialised = 0;
+
+ g_return_val_if_fail (pattern != NULL, NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+diff --git a/glib/gthread.c b/glib/gthread.c
+index 53f3a0848..612a9739f 100644
+--- a/glib/gthread.c
++++ b/glib/gthread.c
+@@ -513,7 +513,7 @@ static GMutex g_once_mutex;
+ static GCond g_once_cond;
+ static GSList *g_once_init_list = NULL;
+
+-static volatile guint g_thread_n_created_counter = 0;
++static guint g_thread_n_created_counter = 0; /* (atomic) */
+
+ static void g_thread_cleanup (gpointer data);
+ static GPrivate g_thread_specific_private = G_PRIVATE_INIT (g_thread_cleanup);
+@@ -694,7 +694,7 @@ g_once_impl (GOnce *once,
+ gboolean
+ (g_once_init_enter) (volatile void *location)
+ {
+- volatile gsize *value_location = location;
++ gsize *value_location = (gsize *) location;
+ gboolean need_init = FALSE;
+ g_mutex_lock (&g_once_mutex);
+ if (g_atomic_pointer_get (value_location) == 0)
+@@ -731,7 +731,7 @@ void
+ (g_once_init_leave) (volatile void *location,
+ gsize result)
+ {
+- volatile gsize *value_location = location;
++ gsize *value_location = (gsize *) location;
+
+ g_return_if_fail (g_atomic_pointer_get (value_location) == 0);
+ g_return_if_fail (result != 0);
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch
new file mode 100644
index 000000000..8111b3b51
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch
@@ -0,0 +1,126 @@
+From 08d04d0428cc26935a2d42083f1710432465c98a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 18:42:43 +0000
+Subject: [PATCH 16/29] gobject: Drop unnecessary volatile qualifiers from
+ internal variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gclosure.c | 2 +-
+ gobject/gclosure.h | 20 ++++++++++----------
+ gobject/gobject.c | 4 ++--
+ gobject/gtype.c | 10 +++++-----
+ 4 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/gobject/gclosure.c b/gobject/gclosure.c
+index 1d1f2f48a..6d41e6d8a 100644
+--- a/gobject/gclosure.c
++++ b/gobject/gclosure.c
+@@ -98,7 +98,7 @@
+
+ typedef union {
+ GClosure closure;
+- volatile gint vint;
++ gint vint;
+ } ClosureInt;
+
+ #define CHANGE_FIELD(_closure, _field, _OP, _value, _must_set, _SET_OLD, _SET_NEW) \
+diff --git a/gobject/gclosure.h b/gobject/gclosure.h
+index a0f91f538..884e403a8 100644
+--- a/gobject/gclosure.h
++++ b/gobject/gclosure.h
+@@ -175,20 +175,20 @@ struct _GClosureNotifyData
+ struct _GClosure
+ {
+ /*< private >*/
+- volatile guint ref_count : 15;
++ guint ref_count : 15; /* (atomic) */
+ /* meta_marshal is not used anymore but must be zero for historical reasons
+ as it was exposed in the G_CLOSURE_N_NOTIFIERS macro */
+- volatile guint meta_marshal_nouse : 1;
+- volatile guint n_guards : 1;
+- volatile guint n_fnotifiers : 2; /* finalization notifiers */
+- volatile guint n_inotifiers : 8; /* invalidation notifiers */
+- volatile guint in_inotify : 1;
+- volatile guint floating : 1;
++ guint meta_marshal_nouse : 1; /* (atomic) */
++ guint n_guards : 1; /* (atomic) */
++ guint n_fnotifiers : 2; /* finalization notifiers (atomic) */
++ guint n_inotifiers : 8; /* invalidation notifiers (atomic) */
++ guint in_inotify : 1; /* (atomic) */
++ guint floating : 1; /* (atomic) */
+ /*< protected >*/
+- volatile guint derivative_flag : 1;
++ guint derivative_flag : 1; /* (atomic) */
+ /*< public >*/
+- volatile guint in_marshal : 1;
+- volatile guint is_invalid : 1;
++ guint in_marshal : 1; /* (atomic) */
++ guint is_invalid : 1; /* (atomic) */
+
+ /*< private >*/ void (*marshal) (GClosure *closure,
+ GValue /*out*/ *return_value,
+diff --git a/gobject/gobject.c b/gobject/gobject.c
+index 6e9c44a1e..a3a32be9f 100644
+--- a/gobject/gobject.c
++++ b/gobject/gobject.c
+@@ -174,9 +174,9 @@ typedef struct
+ GTypeInstance g_type_instance;
+
+ /*< private >*/
+- volatile guint ref_count;
++ guint ref_count; /* (atomic) */
+ #ifdef HAVE_OPTIONAL_FLAGS
+- volatile guint optional_flags;
++ guint optional_flags; /* (atomic) */
+ #endif
+ GData *qdata;
+ } GObjectReal;
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index 51dad7690..be5989a3e 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -221,9 +221,9 @@ typedef enum
+ /* --- structures --- */
+ struct _TypeNode
+ {
+- guint volatile ref_count;
++ guint ref_count; /* (atomic) */
+ #ifdef G_ENABLE_DEBUG
+- guint volatile instance_count;
++ guint instance_count; /* (atomic) */
+ #endif
+ GTypePlugin *plugin;
+ guint n_children; /* writable with lock */
+@@ -233,7 +233,7 @@ struct _TypeNode
+ guint is_instantiatable : 1;
+ guint mutatable_check_cache : 1; /* combines some common path checks */
+ GType *children; /* writable with lock */
+- TypeData * volatile data;
++ TypeData *data;
+ GQuark qname;
+ GData *global_gdata;
+ union {
+@@ -569,8 +569,8 @@ type_node_new_W (TypeNode *pnode,
+ }
+
+ static inline IFaceEntry*
+-lookup_iface_entry_I (volatile IFaceEntries *entries,
+- TypeNode *iface_node)
++lookup_iface_entry_I (IFaceEntries *entries,
++ TypeNode *iface_node)
+ {
+ guint8 *offsets;
+ guint offset_index;
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch
new file mode 100644
index 000000000..02816a887
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch
@@ -0,0 +1,44 @@
+From eee7e3c6688f2f1ee9beed5d6d209973c1df387e Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:14:25 +0000
+Subject: [PATCH 17/29] gmessages: Drop unnecessary volatile qualifiers from
+ macro variables
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It’s not necessary and provides no thread safety guarantees.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gmessages.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/gmessages.h b/glib/gmessages.h
+index 6a28443b4..2e3650baf 100644
+--- a/glib/gmessages.h
++++ b/glib/gmessages.h
+@@ -478,7 +478,7 @@ g_debug (const gchar *format,
+ #if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
+ #define g_warning_once(...) \
+ G_STMT_START { \
+- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
++ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \
+ if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+ 0, 1)) \
+ g_warning (__VA_ARGS__); \
+@@ -487,7 +487,7 @@ g_debug (const gchar *format,
+ #elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING
+ #define g_warning_once(format...) \
+ G_STMT_START { \
+- static volatile int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; \
++ static int G_PASTE (_GWarningOnceBoolean, __LINE__) = 0; /* (atomic) */ \
+ if (g_atomic_int_compare_and_exchange (&G_PASTE (_GWarningOnceBoolean, __LINE__), \
+ 0, 1)) \
+ g_warning (format); \
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch
new file mode 100644
index 000000000..50cb3c470
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch
@@ -0,0 +1,35 @@
+From 8a87069ff42a0631dce153701cb2ec5e343a958c Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:16:30 +0000
+Subject: [PATCH 18/29] gtypes: Drop volatile qualifier from gatomicrefcount
+
+This is technically an API break, but since the type is meant to be
+opaque (third party code is not meant to treat it like an integer) it
+should not cause problems.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gtypes.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/glib/gtypes.h b/glib/gtypes.h
+index 23c5a1295..2c4825582 100644
+--- a/glib/gtypes.h
++++ b/glib/gtypes.h
+@@ -550,8 +550,8 @@ struct _GTimeVal
+ glong tv_usec;
+ } GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
+
+-typedef gint grefcount;
+-typedef volatile gint gatomicrefcount;
++typedef gint grefcount;
++typedef gint gatomicrefcount; /* should be accessed only using atomics */
+
+ G_END_DECLS
+
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch
new file mode 100644
index 000000000..be3211664
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch
@@ -0,0 +1,44 @@
+From 46bae4f18dfec8fedda82648091752d270b2dff8 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:19:20 +0000
+Subject: [PATCH 19/29] gatomicarray: Drop volatile qualifier from GAtomicArray
+ API
+
+This is an API break, but it should not affect third party code since
+that code should not be interacting with the `data` member in a way that
+invokes its `volatile` qualifier (such as copying to an intermediate
+variable).
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gatomicarray.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/gobject/gatomicarray.h b/gobject/gatomicarray.h
+index 9550fa396..89043c5e4 100644
+--- a/gobject/gatomicarray.h
++++ b/gobject/gatomicarray.h
+@@ -29,7 +29,7 @@ G_BEGIN_DECLS
+
+ typedef struct _GAtomicArray GAtomicArray;
+ struct _GAtomicArray {
+- volatile gpointer data; /* elements - atomic */
++ gpointer data; /* elements - atomic */
+ };
+
+ void _g_atomic_array_init (GAtomicArray *array);
+@@ -42,7 +42,7 @@ void _g_atomic_array_update (GAtomicArray *array,
+ #define G_ATOMIC_ARRAY_GET_LOCKED(_array, _type) ((_type *)((_array)->data))
+
+ #define G_ATOMIC_ARRAY_DO_TRANSACTION(_array, _type, _C_) G_STMT_START { \
+- volatile gpointer *_datap = &(_array)->data; \
++ gpointer *_datap = &(_array)->data; \
+ _type *transaction_data, *__check; \
+ \
+ __check = g_atomic_pointer_get (_datap); \
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch
new file mode 100644
index 000000000..ae024a9af
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch
@@ -0,0 +1,33 @@
+From 334f6953364680ddc6c0d3da13fda1d92bf5379d Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:21:07 +0000
+Subject: [PATCH 20/29] gobject: Drop volatile qualifier from GObject.ref_count
+
+This is an API break, but no third party code should be touching
+`GObject.ref_count`, let alone in a way which would be changed by the
+removal of the `volatile` qualifier.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gobject.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gobject/gobject.h b/gobject/gobject.h
+index 7f55e1976..a84c183f8 100644
+--- a/gobject/gobject.h
++++ b/gobject/gobject.h
+@@ -247,7 +247,7 @@ struct _GObject
+ GTypeInstance g_type_instance;
+
+ /*< private >*/
+- volatile guint ref_count;
++ guint ref_count; /* (atomic) */
+ GData *qdata;
+ };
+ /**
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
new file mode 100644
index 000000000..b8ed99ce1
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch
@@ -0,0 +1,51 @@
+From 8a112c3c6e5fe6838ee29eec7caa62ba32d9bc40 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:22:49 +0000
+Subject: [PATCH 21/29] tests: Drop unnecessary volatile qualifiers from tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These variables were already (correctly) accessed atomically. The
+`volatile` qualifier doesn’t help with that.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/tests/qdata.c | 2 +-
+ gobject/tests/threadtests.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/gobject/tests/qdata.c b/gobject/tests/qdata.c
+index 528bdc68e..7d46efb15 100644
+--- a/gobject/tests/qdata.c
++++ b/gobject/tests/qdata.c
+@@ -17,7 +17,7 @@ gboolean fail;
+ #define ROUNDS 10000
+
+ GObject *object;
+-volatile gint bucket[THREADS];
++gint bucket[THREADS]; /* accessed from multiple threads, but should never be contested due to the sequence of thread operations */
+
+ static gpointer
+ thread_func (gpointer data)
+diff --git a/gobject/tests/threadtests.c b/gobject/tests/threadtests.c
+index e341a9d67..b6f9e17fa 100644
+--- a/gobject/tests/threadtests.c
++++ b/gobject/tests/threadtests.c
+@@ -27,8 +27,8 @@
+ #include <glib.h>
+ #include <glib-object.h>
+
+-static volatile int mtsafe_call_counter = 0; /* multi thread safe call counter */
+-static int unsafe_call_counter = 0; /* single-threaded call counter */
++static int mtsafe_call_counter = 0; /* multi thread safe call counter, must be accessed atomically */
++static int unsafe_call_counter = 0; /* single-threaded call counter */
+ static GCond sync_cond;
+ static GMutex sync_mutex;
+
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch
new file mode 100644
index 000000000..5da509d17
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch
@@ -0,0 +1,38 @@
+From daf90bfa99fc02a253d538c65fbaa12f2e6c1c45 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Wed, 11 Nov 2020 19:23:18 +0000
+Subject: [PATCH 22/29] build: Drop unnecessary volatile qualifiers from
+ configure tests
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ meson.build | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index e0b308a25..ad7f887fb 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1773,7 +1773,7 @@ endforeach
+ # that then to silently fall back on emulated atomic ops just because
+ # the user had the wrong build environment.
+ atomictest = '''int main() {
+- volatile int atomic = 2;
++ int atomic = 2;
+ __sync_bool_compare_and_swap (&atomic, 2, 3);
+ return 0;
+ }
+@@ -1883,6 +1883,7 @@ endif
+
+ # FIXME: we should make it print the result and always return 0, so that
+ # the output in meson shows up as green
++# volatile is needed here to avoid optimisations in the test
+ stack_grows_check_prog = '''
+ volatile int *a = 0, *b = 0;
+ void f (int i) {
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch
new file mode 100644
index 000000000..012f9ca87
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch
@@ -0,0 +1,33 @@
+From 0604f5858259c32744e6fc912ed4feb308651a3a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 14:47:23 +0000
+Subject: [PATCH 23/29] gdbusprivate: Avoid a warning about a statement with no
+ effect
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusprivate.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c
+index 99b37f3eb..4e42c1a4d 100644
+--- a/gio/gdbusprivate.c
++++ b/gio/gdbusprivate.c
+@@ -1945,11 +1945,10 @@ _g_dbus_initialize (void)
+
+ if (g_once_init_enter (&initialized))
+ {
+- GQuark g_dbus_error_domain;
+ const gchar *debug;
+
+- g_dbus_error_domain = G_DBUS_ERROR;
+- (g_dbus_error_domain); /* To avoid -Wunused-but-set-variable */
++ /* Ensure the domain is registered. */
++ g_dbus_error_quark ();
+
+ debug = g_getenv ("G_DBUS_DEBUG");
+ if (debug != NULL)
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch
new file mode 100644
index 000000000..7350803c6
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0024-tests-Add-comment-to-volatile-atomic-tests.patch
@@ -0,0 +1,49 @@
+From 2d03f99ae4de394cac0690717d96c2d884ccdae2 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 14:47:47 +0000
+Subject: [PATCH 24/29] tests: Add comment to volatile atomic tests
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+`volatile` should not be used to indicate atomic variables, and we
+shouldn’t encourage its use. Keep the tests, since they check that we
+don’t emit warnings when built against incorrect old code which uses
+`volatile`. But add a comment to stop copy/paste use of `volatile`
+in the future.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/tests/atomic.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c
+index 7d2459f3a..14e6e454e 100644
+--- a/glib/tests/atomic.c
++++ b/glib/tests/atomic.c
+@@ -94,6 +94,9 @@ test_types (void)
+ res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, str);
+ g_assert_true (res);
+
++ /* Note that atomic variables should almost certainly not be marked as
++ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists
++ * to make sure that we don’t warn when built against older third party code. */
+ g_atomic_pointer_set (&vp_str_vol, NULL);
+ res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, str);
+ g_assert_true (res);
+@@ -210,6 +213,9 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ res = g_atomic_pointer_compare_and_exchange (&vp_str, NULL, (char *) str);
+ g_assert_true (res);
+
++ /* Note that atomic variables should almost certainly not be marked as
++ * `volatile` — see http://isvolatileusefulwiththreads.in/c/. This test exists
++ * to make sure that we don’t warn when built against older third party code. */
+ g_atomic_pointer_set (&vp_str_vol, NULL);
+ res = g_atomic_pointer_compare_and_exchange (&vp_str_vol, NULL, (char *) str);
+ g_assert_true (res);
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch
new file mode 100644
index 000000000..c15a3b8a5
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch
@@ -0,0 +1,77 @@
+From 6bd0a4b29753570a2c20b61b5ad2c0068567b7b6 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:44:29 +0000
+Subject: [PATCH 25/29] gthread: Use g_atomic() primitives correctly in
+ destructor list
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In the Windows destructor list, consistently access
+`g_private_destructors` using atomic primitives.
+
+`g_atomic_pointer_compare_and_exchange()` should be equivalent to
+`InterlockedCompareExchangePointer()`, but is a bit more understandable
+in a general GLib context, and pairs with `g_atomic_pointer_get()`. (I
+can’t find a Windows API equivalent for that.)
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ glib/gthread-win32.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c
+index 0c37dc6c1..20aca6fa1 100644
+--- a/glib/gthread-win32.c
++++ b/glib/gthread-win32.c
+@@ -301,7 +301,7 @@ struct _GPrivateDestructor
+ GPrivateDestructor *next;
+ };
+
+-static GPrivateDestructor * volatile g_private_destructors;
++static GPrivateDestructor *g_private_destructors; /* (atomic) prepend-only */
+ static CRITICAL_SECTION g_private_lock;
+
+ static DWORD
+@@ -329,7 +329,7 @@ g_private_get_impl (GPrivate *key)
+ g_thread_abort (errno, "malloc");
+ destructor->index = impl;
+ destructor->notify = key->notify;
+- destructor->next = g_private_destructors;
++ destructor->next = g_atomic_pointer_get (&g_private_destructors);
+
+ /* We need to do an atomic store due to the unlocked
+ * access to the destructor list from the thread exit
+@@ -337,13 +337,14 @@ g_private_get_impl (GPrivate *key)
+ *
+ * It can double as a sanity check...
+ */
+- if (InterlockedCompareExchangePointer (&g_private_destructors, destructor,
+- destructor->next) != destructor->next)
++ if (!g_atomic_pointer_compare_and_exchange (&g_private_destructors,
++ destructor->next,
++ destructor))
+ g_thread_abort (0, "g_private_get_impl(1)");
+ }
+
+ /* Ditto, due to the unlocked access on the fast path */
+- if (InterlockedCompareExchangePointer (&key->p, impl, NULL) != NULL)
++ if (!g_atomic_pointer_compare_and_exchange (&key->p, NULL, impl))
+ g_thread_abort (0, "g_private_get_impl(2)");
+ }
+ LeaveCriticalSection (&g_private_lock);
+@@ -635,7 +636,7 @@ g_thread_win32_thread_detach (void)
+ */
+ dtors_called = FALSE;
+
+- for (dtor = g_private_destructors; dtor; dtor = dtor->next)
++ for (dtor = g_atomic_pointer_get (&g_private_destructors); dtor; dtor = dtor->next)
+ {
+ gpointer value;
+
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch
new file mode 100644
index 000000000..7090a12a8
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0026-gtype-Fix-some-typos-in-comments.patch
@@ -0,0 +1,47 @@
+From 041dd8b70bd14b041d6a495492eb7a5fc7568bb7 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:47:54 +0000
+Subject: [PATCH 26/29] gtype: Fix some typos in comments
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+---
+ gobject/gtype.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index be5989a3e..ae1af8a05 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -2290,7 +2290,7 @@ type_class_init_Wm (TypeNode *node,
+ * inherited interfaces are already init_state == INITIALIZED, because
+ * they either got setup in the above base_init loop, or during
+ * class_init from within type_add_interface_Wm() for this or
+- * an anchestor type.
++ * an ancestor type.
+ */
+ i = 0;
+ while ((entries = CLASSED_NODE_IFACES_ENTRIES_LOCKED (node)) != NULL)
+@@ -3462,7 +3462,7 @@ g_type_depth (GType type)
+ * be used to determine the types and order in which the leaf type is
+ * descended from the root type.
+ *
+- * Returns: immediate child of @root_type and anchestor of @leaf_type
++ * Returns: immediate child of @root_type and ancestor of @leaf_type
+ */
+ GType
+ g_type_next_base (GType type,
+@@ -3549,8 +3549,8 @@ type_node_conforms_to_U (TypeNode *node,
+
+ /**
+ * g_type_is_a:
+- * @type: type to check anchestry for
+- * @is_a_type: possible anchestor of @type or interface that @type
++ * @type: type to check ancestry for
++ * @is_a_type: possible ancestor of @type or interface that @type
+ * could conform to
+ *
+ * If @is_a_type is a derivable type, check whether @type is a
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch
new file mode 100644
index 000000000..9c4e45ff4
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch
@@ -0,0 +1,76 @@
+From 47da8ec5d9a284e07f77c7d59fc8eacf3ebf188a Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 16:57:22 +0000
+Subject: [PATCH 27/29] gtype: Add some missing atomic accesses to init_state
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Half of the references to `init_state` in `gtype.c` already correctly
+accessed it atomically, but a couple didn’t. Drop the `volatile`
+qualifier from its declaration, as that’s not necessary for atomic
+access.
+
+Note that this is the `init_state` in `TypeData`, *not* the `init_state`
+in `IFaceEntry`.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Helps: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gobject/gtype.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index ae1af8a05..909faf138 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -322,7 +322,7 @@ struct _ClassData
+ CommonData common;
+ guint16 class_size;
+ guint16 class_private_size;
+- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */
++ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */
+ GBaseInitFunc class_init_base;
+ GBaseFinalizeFunc class_finalize_base;
+ GClassInitFunc class_init;
+@@ -336,7 +336,7 @@ struct _InstanceData
+ CommonData common;
+ guint16 class_size;
+ guint16 class_private_size;
+- int volatile init_state; /* atomic - g_type_class_ref reads it unlocked */
++ int init_state; /* (atomic) - g_type_class_ref reads it unlocked */
+ GBaseInitFunc class_init_base;
+ GBaseFinalizeFunc class_finalize_base;
+ GClassInitFunc class_init;
+@@ -1415,7 +1415,7 @@ type_node_add_iface_entry_W (TypeNode *node,
+
+ if (parent_entry)
+ {
+- if (node->data && node->data->class.init_state >= BASE_IFACE_INIT)
++ if (node->data && g_atomic_int_get (&node->data->class.init_state) >= BASE_IFACE_INIT)
+ {
+ entries->entry[i].init_state = INITIALIZED;
+ entries->entry[i].vtable = parent_entry->vtable;
+@@ -1481,7 +1481,7 @@ type_add_interface_Wm (TypeNode *node,
+ */
+ if (node->data)
+ {
+- InitState class_state = node->data->class.init_state;
++ InitState class_state = g_atomic_int_get (&node->data->class.init_state);
+
+ if (class_state >= BASE_IFACE_INIT)
+ type_iface_vtable_base_init_Wm (iface, node);
+@@ -2175,7 +2175,7 @@ type_class_init_Wm (TypeNode *node,
+ g_assert (node->is_classed && node->data &&
+ node->data->class.class_size &&
+ !node->data->class.class &&
+- node->data->class.init_state == UNINITIALIZED);
++ g_atomic_int_get (&node->data->class.init_state) == UNINITIALIZED);
+ if (node->data->class.class_private_size)
+ class = g_malloc0 (ALIGN_STRUCT (node->data->class.class_size) + node->data->class.class_private_size);
+ else
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch
new file mode 100644
index 000000000..e03fac19f
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch
@@ -0,0 +1,29 @@
+From 7d417f8406b8fa32a25659120738d22be6a1b482 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 16 Nov 2020 17:17:21 +0000
+Subject: [PATCH 28/29] gresource: Fix a pointer mismatch with an atomic load
+
+This squashes a warning when compiling with Clang.
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+---
+ gio/gresource.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/gresource.c b/gio/gresource.c
+index 79a49d33d..b495d12ac 100644
+--- a/gio/gresource.c
++++ b/gio/gresource.c
+@@ -1398,7 +1398,7 @@ register_lazy_static_resources (void)
+ void
+ g_static_resource_init (GStaticResource *static_resource)
+ {
+- gpointer next;
++ GStaticResource *next;
+
+ do
+ {
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch
new file mode 100644
index 000000000..3311ad65d
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/0029-docs-Document-not-to-use-volatile-qualifiers.patch
@@ -0,0 +1,258 @@
+From 83e48d8ac1fee98059e2305d8909dca26190bddc Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Tue, 17 Nov 2020 10:15:15 +0000
+Subject: [PATCH 29/29] docs: Document not to use `volatile` qualifiers
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Fixes: #600
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719]
+---
+ gio/gdbusconnection.c | 12 ++++++++---
+ gio/gdbuserror.c | 3 +++
+ glib/gatomic.c | 48 +++++++++++++++++++++++++++++++++++++++++++
+ glib/gthread.c | 6 ++++++
+ 4 files changed, 66 insertions(+), 3 deletions(-)
+
+diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
+index 91c365e80..65939a4d2 100644
+--- a/gio/gdbusconnection.c
++++ b/gio/gdbusconnection.c
+@@ -1708,7 +1708,9 @@ g_dbus_connection_send_message_unlocked (GDBusConnection *connection,
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+ *
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @message is not well-formed,
+@@ -1979,7 +1981,9 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+ *
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+@@ -2105,7 +2109,9 @@ send_message_with_reply_sync_cb (GDBusConnection *connection,
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+- * submitting the message to the underlying transport.
++ * submitting the message to the underlying transport. While it has a `volatile`
++ * qualifier, this is a historical artifact and the argument passed to it should
++ * not be `volatile`.
+ *
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+diff --git a/gio/gdbuserror.c b/gio/gdbuserror.c
+index b03a33f27..4ad97bb6e 100644
+--- a/gio/gdbuserror.c
++++ b/gio/gdbuserror.c
+@@ -177,6 +177,9 @@ g_dbus_error_quark (void)
+ *
+ * Helper function for associating a #GError error domain with D-Bus error names.
+ *
++ * While @quark_volatile has a `volatile` qualifier, this is a historical
++ * artifact and the argument passed to it should not be `volatile`.
++ *
+ * Since: 2.26
+ */
+ void
+diff --git a/glib/gatomic.c b/glib/gatomic.c
+index 67f5ba6b4..0bc67aa35 100644
+--- a/glib/gatomic.c
++++ b/glib/gatomic.c
+@@ -105,6 +105,9 @@
+ * This call acts as a full compiler and hardware
+ * memory barrier (before the get).
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of the integer
+ *
+ * Since: 2.4
+@@ -125,6 +128,9 @@ gint
+ * This call acts as a full compiler and hardware
+ * memory barrier (after the set).
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Since: 2.4
+ */
+ void
+@@ -144,6 +150,9 @@ void
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Since: 2.4
+ **/
+ void
+@@ -163,6 +172,9 @@ void
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: %TRUE if the resultant value is zero
+ *
+ * Since: 2.4
+@@ -189,6 +201,9 @@ gboolean
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: %TRUE if the exchange took place
+ *
+ * Since: 2.4
+@@ -216,6 +231,9 @@ gboolean
+ * Before version 2.30, this function did not return a value
+ * (but g_atomic_int_exchange_and_add() did, and had the same meaning).
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the add, signed
+ *
+ * Since: 2.4
+@@ -240,6 +258,9 @@ gint
+ * Think of this operation as an atomic version of
+ * `{ tmp = *atomic; *atomic &= val; return tmp; }`.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+@@ -264,6 +285,9 @@ guint
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+@@ -288,6 +312,9 @@ guint
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+@@ -309,6 +336,9 @@ guint
+ * This call acts as a full compiler and hardware
+ * memory barrier (before the get).
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of the pointer
+ *
+ * Since: 2.4
+@@ -329,6 +359,9 @@ gpointer
+ * This call acts as a full compiler and hardware
+ * memory barrier (after the set).
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Since: 2.4
+ **/
+ void
+@@ -354,6 +387,9 @@ void
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: %TRUE if the exchange took place
+ *
+ * Since: 2.4
+@@ -379,6 +415,9 @@ gboolean
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the add, signed
+ *
+ * Since: 2.30
+@@ -403,6 +442,9 @@ gssize
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+@@ -427,6 +469,9 @@ gsize
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+@@ -451,6 +496,9 @@ gsize
+ *
+ * This call acts as a full compiler and hardware memory barrier.
+ *
++ * While @atomic has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: the value of @atomic before the operation, unsigned
+ *
+ * Since: 2.30
+diff --git a/glib/gthread.c b/glib/gthread.c
+index 612a9739f..29216d7fd 100644
+--- a/glib/gthread.c
++++ b/glib/gthread.c
+@@ -686,6 +686,9 @@ g_once_impl (GOnce *once,
+ * // use initialization_value here
+ * ]|
+ *
++ * While @location has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Returns: %TRUE if the initialization section should be entered,
+ * %FALSE and blocks otherwise
+ *
+@@ -725,6 +728,9 @@ gboolean
+ * releases concurrent threads blocking in g_once_init_enter() on this
+ * initialization variable.
+ *
++ * While @location has a `volatile` qualifier, this is a historical artifact and
++ * the pointer passed to it should not be `volatile`.
++ *
+ * Since: 2.14
+ */
+ void
+--
+2.30.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
index 882a89da7..3909b76dd 100644
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.66.7.bb
@@ -19,7 +19,37 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \
file://0001-tests-codegen.py-removing-unecessary-print-statement.patch \
"
-
+SRC_URI += "\
+ file://0001-gobject-Drop-use-of-volatile-from-get_type-macros.patch \
+ file://0002-tests-Fix-non-atomic-access-to-a-shared-variable.patch \
+ file://0003-tests-Fix-non-atomic-access-to-a-shared-variable.patch \
+ file://0004-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+ file://0005-tests-Fix-non-atomic-access-to-some-shared-variables.patch \
+ file://0006-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+ file://0007-gdbusconnection-Drop-unnecessary-volatile-qualifiers.patch \
+ file://0008-gdbuserror-Drop-unnecessary-volatile-qualifiers-from.patch \
+ file://0009-gio-Drop-unnecessary-volatile-qualifiers-from-intern.patch \
+ file://0010-kqueue-Fix-unlocked-access-to-shared-variable.patch \
+ file://0011-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+ file://0012-tests-Fix-non-atomic-access-to-some-shared-variables.patch \
+ file://0013-gatomic-Drop-unnecessary-volatile-qualifiers-from-in.patch \
+ file://0014-gatomic-Drop-unnecessary-volatile-qualifiers-from-ma.patch \
+ file://0015-glib-Drop-unnecessary-volatile-qualifiers-from-inter.patch \
+ file://0016-gobject-Drop-unnecessary-volatile-qualifiers-from-in.patch \
+ file://0017-gmessages-Drop-unnecessary-volatile-qualifiers-from-.patch \
+ file://0018-gtypes-Drop-volatile-qualifier-from-gatomicrefcount.patch \
+ file://0019-gatomicarray-Drop-volatile-qualifier-from-GAtomicArr.patch \
+ file://0020-gobject-Drop-volatile-qualifier-from-GObject.ref_cou.patch \
+ file://0021-tests-Drop-unnecessary-volatile-qualifiers-from-test.patch \
+ file://0022-build-Drop-unnecessary-volatile-qualifiers-from-conf.patch \
+ file://0023-gdbusprivate-Avoid-a-warning-about-a-statement-with-.patch \
+ file://0024-tests-Add-comment-to-volatile-atomic-tests.patch \
+ file://0025-gthread-Use-g_atomic-primitives-correctly-in-destruc.patch \
+ file://0026-gtype-Fix-some-typos-in-comments.patch \
+ file://0027-gtype-Add-some-missing-atomic-accesses-to-init_state.patch \
+ file://0028-gresource-Fix-a-pointer-mismatch-with-an-atomic-load.patch \
+ file://0029-docs-Document-not-to-use-volatile-qualifiers.patch \
+"
SRC_URI_append_class-native = " file://relocate-modules.patch"
SRC_URI[sha256sum] = "09f158769f6f26b31074e15b1ac80ec39b13b53102dfae66cfe826fb2cc65502"
@@ -31,7 +61,7 @@ def find_meson_cross_files(d):
if bb.data.inherits_class('native', d):
return ""
- thisdir = d.getVar("THISDIR")
+ thisdir = os.path.normpath(d.getVar("THISDIR"))
import collections
sitedata = siteinfo_data(d)
# filename -> found
@@ -41,7 +71,8 @@ def find_meson_cross_files(d):
filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
sanitized_path = filename.replace(thisdir, "${THISDIR}")
if sanitized_path == filename:
- bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
+ if os.path.exists(filename):
+ bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
continue
files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename)
diff --git a/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch
new file mode 100644
index 000000000..39fde5b78
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/0001-nptl-Remove-private-futex-optimization-BZ-27304.patch
@@ -0,0 +1,49 @@
+From c4ad832276f4dadfa40904109b26a521468f66bc Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Thu, 4 Feb 2021 15:00:20 +0100
+Subject: [PATCH] nptl: Remove private futex optimization [BZ #27304]
+
+It is effectively used, unexcept for pthread_cond_destroy, where we do
+not want it; see bug 27304. The internal locks do not support a
+process-shared mode.
+
+This fixes commit dc6cfdc934db9997c33728082d63552b9eee4563 ("nptl:
+Move pthread_cond_destroy implementation into libc").
+
+Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27304]
+Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
+---
+ sysdeps/nptl/lowlevellock-futex.h | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h
+index ecb729da6b..ca96397a4a 100644
+--- a/sysdeps/nptl/lowlevellock-futex.h
++++ b/sysdeps/nptl/lowlevellock-futex.h
+@@ -50,20 +50,8 @@
+ #define LLL_SHARED FUTEX_PRIVATE_FLAG
+
+ #ifndef __ASSEMBLER__
+-
+-# if IS_IN (libc) || IS_IN (rtld)
+-/* In libc.so or ld.so all futexes are private. */
+-# define __lll_private_flag(fl, private) \
+- ({ \
+- /* Prevent warnings in callers of this macro. */ \
+- int __lll_private_flag_priv __attribute__ ((unused)); \
+- __lll_private_flag_priv = (private); \
+- ((fl) | FUTEX_PRIVATE_FLAG); \
+- })
+-# else
+-# define __lll_private_flag(fl, private) \
++# define __lll_private_flag(fl, private) \
+ (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
+-# endif
+
+ # define lll_futex_syscall(nargs, futexp, op, ...) \
+ ({ \
+--
+2.27.0
+
diff --git a/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch
new file mode 100644
index 000000000..3a004e227
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch
@@ -0,0 +1,185 @@
+From 750b00a1ddae220403fd892a6fd4e0791ffd154a Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 18 Sep 2020 07:55:14 -0700
+Subject: [PATCH] x86: Handle _SC_LEVEL1_ICACHE_LINESIZE [BZ #27444]
+
+ x86: Move x86 processor cache info to cpu_features
+
+missed _SC_LEVEL1_ICACHE_LINESIZE.
+
+1. Add level1_icache_linesize to struct cpu_features.
+2. Initialize level1_icache_linesize by calling handle_intel,
+handle_zhaoxin and handle_amd with _SC_LEVEL1_ICACHE_LINESIZE.
+3. Return level1_icache_linesize for _SC_LEVEL1_ICACHE_LINESIZE.
+
+Upstream-Status: Backport [https://sourceware.org/bugzilla/show_bug.cgi?id=27444]
+Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
+---
+ sysdeps/x86/Makefile | 8 +++
+ sysdeps/x86/cacheinfo.c | 3 +
+ sysdeps/x86/dl-cacheinfo.h | 6 ++
+ sysdeps/x86/include/cpu-features.h | 2 +
+ .../x86/tst-sysconf-cache-linesize-static.c | 1 +
+ sysdeps/x86/tst-sysconf-cache-linesize.c | 57 +++++++++++++++++++
+ 6 files changed, 77 insertions(+)
+ create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize-static.c
+ create mode 100644 sysdeps/x86/tst-sysconf-cache-linesize.c
+
+diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
+index dd82674342..d231263051 100644
+--- a/sysdeps/x86/Makefile
++++ b/sysdeps/x86/Makefile
+@@ -208,3 +208,11 @@ $(objpfx)check-cet.out: $(..)sysdeps/x86/check-cet.awk \
+ generated += check-cet.out
+ endif
+ endif
++
++ifeq ($(subdir),posix)
++tests += \
++ tst-sysconf-cache-linesize \
++ tst-sysconf-cache-linesize-static
++tests-static += \
++ tst-sysconf-cache-linesize-static
++endif
+diff --git a/sysdeps/x86/cacheinfo.c b/sysdeps/x86/cacheinfo.c
+index 7b8df45e3b..5ea4723ca6 100644
+--- a/sysdeps/x86/cacheinfo.c
++++ b/sysdeps/x86/cacheinfo.c
+@@ -32,6 +32,9 @@ __cache_sysconf (int name)
+ case _SC_LEVEL1_ICACHE_SIZE:
+ return cpu_features->level1_icache_size;
+
++ case _SC_LEVEL1_ICACHE_LINESIZE:
++ return cpu_features->level1_icache_linesize;
++
+ case _SC_LEVEL1_DCACHE_SIZE:
+ return cpu_features->level1_dcache_size;
+
+diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
+index a31fa0783a..7cd00b92f1 100644
+--- a/sysdeps/x86/dl-cacheinfo.h
++++ b/sysdeps/x86/dl-cacheinfo.h
+@@ -707,6 +707,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ long int core;
+ unsigned int threads = 0;
+ unsigned long int level1_icache_size = -1;
++ unsigned long int level1_icache_linesize = -1;
+ unsigned long int level1_dcache_size = -1;
+ unsigned long int level1_dcache_assoc = -1;
+ unsigned long int level1_dcache_linesize = -1;
+@@ -726,6 +727,8 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+
+ level1_icache_size
+ = handle_intel (_SC_LEVEL1_ICACHE_SIZE, cpu_features);
++ level1_icache_linesize
++ = handle_intel (_SC_LEVEL1_ICACHE_LINESIZE, cpu_features);
+ level1_dcache_size = data;
+ level1_dcache_assoc
+ = handle_intel (_SC_LEVEL1_DCACHE_ASSOC, cpu_features);
+@@ -753,6 +756,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ shared = handle_zhaoxin (_SC_LEVEL3_CACHE_SIZE);
+
+ level1_icache_size = handle_zhaoxin (_SC_LEVEL1_ICACHE_SIZE);
++ level1_icache_linesize = handle_zhaoxin (_SC_LEVEL1_ICACHE_LINESIZE);
+ level1_dcache_size = data;
+ level1_dcache_assoc = handle_zhaoxin (_SC_LEVEL1_DCACHE_ASSOC);
+ level1_dcache_linesize = handle_zhaoxin (_SC_LEVEL1_DCACHE_LINESIZE);
+@@ -772,6 +776,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ shared = handle_amd (_SC_LEVEL3_CACHE_SIZE);
+
+ level1_icache_size = handle_amd (_SC_LEVEL1_ICACHE_SIZE);
++ level1_icache_linesize = handle_amd (_SC_LEVEL1_ICACHE_LINESIZE);
+ level1_dcache_size = data;
+ level1_dcache_assoc = handle_amd (_SC_LEVEL1_DCACHE_ASSOC);
+ level1_dcache_linesize = handle_amd (_SC_LEVEL1_DCACHE_LINESIZE);
+@@ -833,6 +838,7 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
+ }
+
+ cpu_features->level1_icache_size = level1_icache_size;
++ cpu_features->level1_icache_linesize = level1_icache_linesize;
+ cpu_features->level1_dcache_size = level1_dcache_size;
+ cpu_features->level1_dcache_assoc = level1_dcache_assoc;
+ cpu_features->level1_dcache_linesize = level1_dcache_linesize;
+diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h
+index 624736b40e..39a3f4f311 100644
+--- a/sysdeps/x86/include/cpu-features.h
++++ b/sysdeps/x86/include/cpu-features.h
+@@ -874,6 +874,8 @@ struct cpu_features
+ unsigned long int rep_stosb_threshold;
+ /* _SC_LEVEL1_ICACHE_SIZE. */
+ unsigned long int level1_icache_size;
++ /* _SC_LEVEL1_ICACHE_LINESIZE. */
++ unsigned long int level1_icache_linesize;
+ /* _SC_LEVEL1_DCACHE_SIZE. */
+ unsigned long int level1_dcache_size;
+ /* _SC_LEVEL1_DCACHE_ASSOC. */
+diff --git a/sysdeps/x86/tst-sysconf-cache-linesize-static.c b/sysdeps/x86/tst-sysconf-cache-linesize-static.c
+new file mode 100644
+index 0000000000..152ae68821
+--- /dev/null
++++ b/sysdeps/x86/tst-sysconf-cache-linesize-static.c
+@@ -0,0 +1 @@
++#include "tst-sysconf-cache-linesize.c"
+diff --git a/sysdeps/x86/tst-sysconf-cache-linesize.c b/sysdeps/x86/tst-sysconf-cache-linesize.c
+new file mode 100644
+index 0000000000..642dbde5d2
+--- /dev/null
++++ b/sysdeps/x86/tst-sysconf-cache-linesize.c
+@@ -0,0 +1,57 @@
++/* Test system cache line sizes.
++ Copyright (C) 2021 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <array_length.h>
++
++static struct
++{
++ const char *name;
++ int _SC_val;
++} sc_options[] =
++ {
++#define N(name) { "_SC_"#name, _SC_##name }
++ N (LEVEL1_ICACHE_LINESIZE),
++ N (LEVEL1_DCACHE_LINESIZE),
++ N (LEVEL2_CACHE_LINESIZE)
++ };
++
++static int
++do_test (void)
++{
++ int result = EXIT_SUCCESS;
++
++ for (int i = 0; i < array_length (sc_options); ++i)
++ {
++ long int scret = sysconf (sc_options[i]._SC_val);
++ if (scret < 0)
++ {
++ printf ("sysconf (%s) returned < 0 (%ld)\n",
++ sc_options[i].name, scret);
++ result = EXIT_FAILURE;
++ }
++ else
++ printf ("sysconf (%s): %ld\n", sc_options[i].name, scret);
++ }
++
++ return result;
++}
++
++#include <support/test-driver.c>
diff --git a/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch
new file mode 100644
index 000000000..26c5c0d2a
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/CVE-2021-27645.patch
@@ -0,0 +1,51 @@
+From dca565886b5e8bd7966e15f0ca42ee5cff686673 Mon Sep 17 00:00:00 2001
+From: DJ Delorie <dj@redhat.com>
+Date: Thu, 25 Feb 2021 16:08:21 -0500
+Subject: [PATCH] nscd: Fix double free in netgroupcache [BZ #27462]
+
+In commit 745664bd798ec8fd50438605948eea594179fba1 a use-after-free
+was fixed, but this led to an occasional double-free. This patch
+tracks the "live" allocation better.
+
+Tested manually by a third party.
+
+Related: RHBZ 1927877
+
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=dca565886b5e8bd7966e15f0ca42ee5cff686673]
+
+CVE: CVE-2021-27645
+
+Reviewed-by: Carlos O'Donell <carlos@redhat.com>
+Signed-off-by: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
+---
+ nscd/netgroupcache.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c
+index dba6ceec1b..ad2daddafd 100644
+--- a/nscd/netgroupcache.c
++++ b/nscd/netgroupcache.c
+@@ -248,7 +248,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ : NULL);
+ ndomain = (ndomain ? newbuf + ndomaindiff
+ : NULL);
+- buffer = newbuf;
++ *tofreep = buffer = newbuf;
+ }
+
+ nhost = memcpy (buffer + bufused,
+@@ -319,7 +319,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req,
+ else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE)
+ {
+ buflen *= 2;
+- buffer = xrealloc (buffer, buflen);
++ *tofreep = buffer = xrealloc (buffer, buflen);
+ }
+ else if (status == NSS_STATUS_RETURN
+ || status == NSS_STATUS_NOTFOUND
+--
+2.27.0
+
diff --git a/poky/meta/recipes-core/glibc/glibc_2.33.bb b/poky/meta/recipes-core/glibc/glibc_2.33.bb
index c47826a51..5e0baa53e 100644
--- a/poky/meta/recipes-core/glibc/glibc_2.33.bb
+++ b/poky/meta/recipes-core/glibc/glibc_2.33.bb
@@ -45,6 +45,9 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \
file://0031-x86-Require-full-ISA-support-for-x86-64-level-marker.patch \
file://0032-string-Work-around-GCC-PR-98512-in-rawmemchr.patch \
+ file://0033-x86-Handle-_SC_LEVEL1_ICACHE_LINESIZE-BZ-27444.patch \
+ file://CVE-2021-27645.patch \
+ file://0001-nptl-Remove-private-futex-optimization-BZ-27304.patch \
"
S = "${WORKDIR}/git"
B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 705ff63cf..925235db6 100644
--- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -22,9 +22,9 @@ APPEND += "rootfstype=ext4 quiet"
DEPENDS = "zip-native python3-pip-native"
IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
-inherit core-image module-base setuptools3
+inherit core-image setuptools3
-SRCREV ?= "e56305dd709ae2af2da7a7599984b3ad18c4970f"
+SRCREV ?= "c6483187f96c6d21b7129ad78de3ff976fbe5970"
SRC_URI = "git://git.yoctoproject.org/poky \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \
@@ -61,12 +61,6 @@ fakeroot do_populate_poky_src () {
# Place the README_VirtualBox_Toaster file in builders home folder.
cp ${WORKDIR}/README_VirtualBox_Toaster.txt ${IMAGE_ROOTFS}/home/builder/
- # Create a symlink, needed for out-of-tree kernel modules build
- if [ ! -e ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build ]; then
- rm -f ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
- lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
- fi
-
echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf
echo "export LC_ALL=en_US.utf8" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
index ee24e82af..10b958317 100644
--- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
+++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -24,24 +24,13 @@ rootfs_run() {
if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
root_uuid=`echo $bootparam_root | cut -c6-`
bootparam_root="/dev/disk/by-uuid/$root_uuid"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
root_partuuid=`echo $bootparam_root | cut -c10-`
bootparam_root="/dev/disk/by-partuuid/$root_partuuid"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
- root_partlabel=`echo $bootparam_root | cut -c11-`
- bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
root_partlabel=`echo $bootparam_root | cut -c11-`
bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
root_label=`echo $bootparam_root | cut -c7-`
bootparam_root="/dev/disk/by-label/$root_label"
fi
diff --git a/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch
new file mode 100644
index 000000000..4e6b42710
--- /dev/null
+++ b/poky/meta/recipes-core/libxcrypt/files/0001-configure.ac-do-not-use-compute-symver-floor.patch
@@ -0,0 +1,32 @@
+From b28bb856ccebe8fded51d11362bf5920699eed59 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 18 Mar 2021 10:52:13 +0000
+Subject: [PATCH] configure.ac: do not use compute-symver-floor
+
+This script (newly introduced in 4.4.18) sporadically fails, without
+failing configure(), which has been reported at
+https://github.com/besser82/libxcrypt/issues/123
+
+Upstream-Status: Inappropriate
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 45b91b4..f3ba945 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -426,11 +426,7 @@ if test x$enable_shared != xyes; then enable_obsolete_api=0; fi
+ # need to be binary backward compatible with.
+ if test $enable_obsolete_api = 1; then
+ AC_MSG_CHECKING([minimum symbol version to use for compatibility symbols])
+- SYMVER_FLOOR=$(
+- $PERL ${srcdir}/build-aux/compute-symver-floor \
+- ${srcdir}/lib/libcrypt.minver $host_os $host_cpu \
+- 2>&AS_MESSAGE_LOG_FD
+- )
++ SYMVER_FLOOR=GLIBC_2.0
+ AC_MSG_RESULT([$SYMVER_FLOOR])
+ case "$SYMVER_FLOOR" in
+ ERROR)
diff --git a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
index e9f968b55..b5ca863d5 100644
--- a/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
+++ b/poky/meta/recipes-core/libxcrypt/libxcrypt.inc
@@ -9,7 +9,9 @@ LIC_FILES_CHKSUM = "file://LICENSING;md5=bd5d9777dfe7076c4f2928f12fed226a \
inherit autotools pkgconfig
-SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
+SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH} \
+ file://0001-configure.ac-do-not-use-compute-symver-floor.patch \
+ "
SRCREV = "94d84f92ca123d851586016c4678eb1f21c19029"
SRCBRANCH ?= "develop"
diff --git a/poky/meta/recipes-core/meta/cve-update-db-native.bb b/poky/meta/recipes-core/meta/cve-update-db-native.bb
index cf62e1e32..25ec6bac7 100644
--- a/poky/meta/recipes-core/meta/cve-update-db-native.bb
+++ b/poky/meta/recipes-core/meta/cve-update-db-native.bb
@@ -12,6 +12,8 @@ deltask do_compile
deltask do_install
deltask do_populate_sysroot
+NVDCVE_URL ?= "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
+
python () {
if not bb.data.inherits_class("cve-check", d):
raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
@@ -28,7 +30,6 @@ python do_fetch() {
bb.utils.export_proxies(d)
- BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
YEAR_START = 2002
db_file = d.getVar("CVE_CHECK_DB_FILE")
@@ -64,7 +65,7 @@ python do_fetch() {
for i, year in enumerate(range(YEAR_START, date.today().year + 1)):
bb.debug(2, "Updating %d" % year)
ph.update((float(i + 1) / total_years) * 100)
- year_url = BASE_URL + str(year)
+ year_url = (d.getVar('NVDCVE_URL')) + str(year)
meta_url = year_url + ".meta"
json_url = year_url + ".json.gz"
@@ -143,9 +144,14 @@ def parse_node_and_insert(c, node, cveId):
product = cpe23[4]
version = cpe23[5]
+ if cpe23[6] == '*' or cpe23[6] == '-':
+ version_suffix = ""
+ else:
+ version_suffix = "_" + cpe23[6]
+
if version != '*' and version != '-':
# Version is defined, this is a '=' match
- yield [cveId, vendor, product, version, '=', '', '']
+ yield [cveId, vendor, product, version + version_suffix, '=', '', '']
elif version == '-':
# no version information is available
yield [cveId, vendor, product, version, '', '', '']
diff --git a/poky/meta/recipes-core/meta/uninative-tarball.bb b/poky/meta/recipes-core/meta/uninative-tarball.bb
index c4a6c96b4..bbdaebad9 100644
--- a/poky/meta/recipes-core/meta/uninative-tarball.bb
+++ b/poky/meta/recipes-core/meta/uninative-tarball.bb
@@ -8,6 +8,7 @@ TOOLCHAIN_TARGET_TASK = ""
# utf-16, cp1252 - binutils-windres
TOOLCHAIN_HOST_TASK = "\
nativesdk-glibc \
+ nativesdk-glibc-dbg \
nativesdk-glibc-gconv-ibm850 \
nativesdk-glibc-gconv-iso8859-1 \
nativesdk-glibc-gconv-utf-16 \
diff --git a/poky/meta/recipes-core/musl/libucontext_git.bb b/poky/meta/recipes-core/musl/libucontext_git.bb
index 734ad9c95..11affebb4 100644
--- a/poky/meta/recipes-core/musl/libucontext_git.bb
+++ b/poky/meta/recipes-core/musl/libucontext_git.bb
@@ -40,8 +40,8 @@ def map_kernel_arch(a, d):
elif re.match('aarch64_be_ilp32$', a): return 'aarch64'
elif re.match('mips(isa|)(32|)(r6|)(el|)$', a): return 'mips'
elif re.match('mips(isa|)64(r6|)(el|)$', a): return 'mips64'
+ elif re.match('p(pc64|owerpc64)(le)', a): return 'ppc64'
elif re.match('p(pc|owerpc)', a): return 'ppc'
- elif re.match('p(pc64|owerpc64)', a): return 'ppc64'
elif re.match('riscv64$', a): return 'riscv64'
elif re.match('riscv32$', a): return 'riscv32'
else:
diff --git a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch b/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
deleted file mode 100644
index df1d15901..000000000
--- a/poky/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e19481e5a64f8915ac118899b10c40d12c0f9daa Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Mon, 11 Sep 2017 02:21:55 -0400
-Subject: [PATCH 3/4] ovmf: enable long path file
-
-Upstream-Status: Pending
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
-
----
- BaseTools/Source/C/Common/CommonLib.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/BaseTools/Source/C/Common/CommonLib.h b/BaseTools/Source/C/Common/CommonLib.h
-index e1cce985f7..d67d03c70c 100644
---- a/BaseTools/Source/C/Common/CommonLib.h
-+++ b/BaseTools/Source/C/Common/CommonLib.h
-@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
- #include <assert.h>
- #define PRINTED_GUID_BUFFER_SIZE 37 // including null-termination
-
--#define MAX_LONG_FILE_PATH 500
-+#define MAX_LONG_FILE_PATH 1023
-
- #define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
- #define MAX_UINT32 ((UINT32)0xFFFFFFFF)
---
-2.28.0
-
diff --git a/poky/meta/recipes-core/ovmf/ovmf/zero.patch b/poky/meta/recipes-core/ovmf/ovmf/zero.patch
new file mode 100644
index 000000000..af7a9d31f
--- /dev/null
+++ b/poky/meta/recipes-core/ovmf/ovmf/zero.patch
@@ -0,0 +1,84 @@
+Pass --zero to GenFw in release builds so that the sections that link back to
+the intermediate binaries (containing build paths) are removed.
+
+Upstream-Status: Pending (discussion at https://bugzilla.tianocore.org/show_bug.cgi?id=3256)
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 6303b065802c9427c718fda129360189b79316e7 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 16 Mar 2021 16:49:49 +0000
+Subject: [PATCH] Strip build paths
+
+---
+ OvmfPkg/AmdSev/AmdSevX64.dsc | 1 +
+ OvmfPkg/Bhyve/BhyveX64.dsc | 1 +
+ OvmfPkg/OvmfPkgIa32.dsc | 2 ++
+ OvmfPkg/OvmfPkgIa32X64.dsc | 1 +
+ OvmfPkg/OvmfPkgX64.dsc | 1 +
+ OvmfPkg/OvmfXen.dsc | 1 +
+ 6 files changed, 7 insertions(+)
+
+diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc
+index 4a1cdf5aca..132f55cf69 100644
+--- a/OvmfPkg/Bhyve/BhyveX64.dsc
++++ b/OvmfPkg/Bhyve/BhyveX64.dsc
+@@ -76,6 +76,7 @@
+ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++ RELEASE_*_*_GENFW_FLAGS = --zero
+
+ #
+ # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc
+index 1eaf3e99c6..ce20f09df8 100644
+--- a/OvmfPkg/OvmfPkgIa32.dsc
++++ b/OvmfPkg/OvmfPkgIa32.dsc
+@@ -90,6 +90,8 @@
+
+ !include NetworkPkg/NetworkBuildOptions.dsc.inc
+
++ RELEASE_*_*_GENFW_FLAGS = --zero
++
+ [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
+ GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
+ XCODE:*_*_*_DLINK_FLAGS = -seg1addr 0x1000 -segalign 0x1000
+diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc
+index 4a5a430147..97cc438250 100644
+--- a/OvmfPkg/OvmfPkgIa32X64.dsc
++++ b/OvmfPkg/OvmfPkgIa32X64.dsc
+@@ -84,6 +84,7 @@
+ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++ RELEASE_*_*_GENFW_FLAGS = --zero
+
+ #
+ # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
+index d4d601b444..f544fb04bf 100644
+--- a/OvmfPkg/OvmfPkgX64.dsc
++++ b/OvmfPkg/OvmfPkgX64.dsc
+@@ -84,6 +84,7 @@
+ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++ RELEASE_*_*_GENFW_FLAGS = --zero
+
+ #
+ # Disable deprecated APIs.
+diff --git a/OvmfPkg/OvmfXen.dsc b/OvmfPkg/OvmfXen.dsc
+index 507029404f..fcaa35acf1 100644
+--- a/OvmfPkg/OvmfXen.dsc
++++ b/OvmfPkg/OvmfXen.dsc
+@@ -74,6 +74,7 @@
+ GCC:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ INTEL:*_*_X64_GENFW_FLAGS = --keepexceptiontable
+ !endif
++ RELEASE_*_*_GENFW_FLAGS = --zero
+
+ #
+ # Disable deprecated APIs.
+--
+2.25.1
+
diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb
index d785ff670..896b3b632 100644
--- a/poky/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb
@@ -15,12 +15,12 @@ PACKAGECONFIG[secureboot] = ",,,"
SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
file://0001-ovmf-update-path-to-native-BaseTools.patch \
file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \
- file://0003-ovmf-enable-long-path-file.patch \
file://0004-ovmf-Update-to-latest.patch \
+ file://zero.patch \
"
-PV = "edk2-stable202011"
-SRCREV = "872f953262d68a11da7bc2fb3ded16df234b8700"
+PV = "edk2-stable202102"
+SRCREV = "ef91b07388e1c0a50c604e5350eeda98428ccea6"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
inherit deploy
diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
index c882e1526..6d4d7e6f7 100644
--- a/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/poky/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -8,7 +8,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit packagegroup
-PROVIDES = "${PACKAGES}"
PACKAGES = ' \
packagegroup-base \
packagegroup-base-extended \
diff --git a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
index b345e314a..20fe6fc09 100644
--- a/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
+++ b/poky/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
@@ -7,7 +7,6 @@ PR = "r2"
inherit packagegroup
-PROVIDES = "${PACKAGES}"
PACKAGES = "${PN}-server ${PN}-client"
SUMMARY_${PN}-client = "NFS client"
diff --git a/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb b/poky/meta/recipes-core/systemd/systemd-boot_247.4.bb
index 249e620f4..249e620f4 100644
--- a/poky/meta/recipes-core/systemd/systemd-boot_247.3.bb
+++ b/poky/meta/recipes-core/systemd/systemd-boot_247.4.bb
diff --git a/poky/meta/recipes-core/systemd/systemd-conf/wired.network b/poky/meta/recipes-core/systemd/systemd-conf/wired.network
index 09367edb1..e7b69970d 100644
--- a/poky/meta/recipes-core/systemd/systemd-conf/wired.network
+++ b/poky/meta/recipes-core/systemd/systemd-conf/wired.network
@@ -1,6 +1,7 @@
[Match]
Type=ether
KernelCommandLine=!nfsroot
+KernelCommandLine=!ip
[Network]
DHCP=yes
diff --git a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb b/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
index 944b56ff8..ea35e83f4 100644
--- a/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
+++ b/poky/meta/recipes-core/systemd/systemd-conf_247.3.bb
@@ -29,9 +29,6 @@ do_install() {
# Based on change from YP bug 8141, OE commit 5196d7bacaef1076c361adaa2867be31759c1b52
do_install_append_qemuall() {
install -D -m0644 ${WORKDIR}/system.conf-qemuall ${D}${systemd_unitdir}/system.conf.d/01-${PN}.conf
-
- # Do not install wired.network for qemu bsps
- rm -rf ${D}${systemd_unitdir}/network
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/poky/meta/recipes-core/systemd/systemd.inc b/poky/meta/recipes-core/systemd/systemd.inc
index ccff8c8b9..098bca98f 100644
--- a/poky/meta/recipes-core/systemd/systemd.inc
+++ b/poky/meta/recipes-core/systemd/systemd.inc
@@ -14,7 +14,7 @@ LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-SRCREV = "551dd873b0bdfb9e7e47431b2933c8b910228f0c"
+SRCREV = "069525e84a67375e27429cb490e8d28af78e673a"
SRCBRANCH = "v247-stable"
SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
diff --git a/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch b/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
index e49e06672..752824688 100644
--- a/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
@@ -12,10 +12,12 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
src/core/systemd.pc.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
+diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
+index b5cc8f9..21dbf30 100644
--- a/src/core/systemd.pc.in
+++ b/src/core/systemd.pc.in
@@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir}
- tmpfiles_dir=/usr/lib/tmpfiles.d
+ tmpfiles_dir=${prefix}/lib/tmpfiles.d
tmpfilesdir=${tmpfiles_dir}
-sysusers_dir=${rootprefix}/lib/sysusers.d
@@ -34,4 +36,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
+modules_load_dir=${prefix}/lib/modules-load.d
modulesloaddir=${modules_load_dir}
- catalog_dir=/usr/lib/systemd/catalog
+ catalog_dir=${prefix}/lib/systemd/catalog
+--
+2.25.1
+
diff --git a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
index b689cf129..a978558b4 100644
--- a/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
+++ b/poky/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
@@ -41,20 +41,22 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
src/network/netdev/netdev-gperf.gperf | 1 +
src/network/netdev/netdev.c | 1 +
src/network/networkd-brvlan.c | 1 +
- src/network/networkd-dhcp-common.c | 1 +
+ src/network/networkd-dhcp-common.c | 4 +++-
+ src/network/networkd-dhcp-server.c | 4 ++--
src/network/networkd-dhcp4.c | 2 +-
src/network/networkd-dhcp6.c | 2 +-
src/network/networkd-link.c | 2 +-
src/network/networkd-network.c | 1 +
+ src/network/networkd-route.c | 5 ++++-
src/network/test-network-tables.c | 1 +
src/shared/ethtool-util.c | 1 +
src/shared/ethtool-util.h | 1 +
src/udev/net/link-config.c | 1 +
src/udev/udev-builtin-net_setup_link.c | 1 +
- 19 files changed, 18 insertions(+), 4 deletions(-)
+ 21 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
-index 30ac526fc9..126077e13c 100644
+index 66f87c4b95..de1264ae46 100644
--- a/src/libsystemd-network/sd-dhcp6-client.c
+++ b/src/libsystemd-network/sd-dhcp6-client.c
@@ -5,7 +5,6 @@
@@ -158,7 +160,7 @@ index e53c73c30c..9bf0771b84 100644
#include <stdbool.h>
diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
-index c338c775a7..ab35d65c53 100644
+index 9f58121350..554d006cb8 100644
--- a/src/network/networkd-dhcp-common.c
+++ b/src/network/networkd-dhcp-common.c
@@ -1,7 +1,8 @@
@@ -171,7 +173,7 @@ index c338c775a7..ab35d65c53 100644
#include "dhcp-internal.h"
#include "dhcp6-internal.h"
-@@ -10,6 +10,7 @@
+@@ -10,6 +11,7 @@
#include "networkd-dhcp-common.h"
#include "networkd-link.h"
#include "networkd-manager.h"
@@ -195,7 +197,7 @@ index cf279c640d..bae541029b 100644
#include "sd-dhcp-server.h"
diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
-index 02d33841b6..a30d8dd82c 100644
+index f3c1e5f609..e4ef6eca63 100644
--- a/src/network/networkd-dhcp4.c
+++ b/src/network/networkd-dhcp4.c
@@ -1,9 +1,9 @@
@@ -210,7 +212,7 @@ index 02d33841b6..a30d8dd82c 100644
#include "escape.h"
#include "alloc-util.h"
diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
-index d4d4182ee5..635d08f7d5 100644
+index 5c077c1ec8..fa98042aa5 100644
--- a/src/network/networkd-dhcp6.c
+++ b/src/network/networkd-dhcp6.c
@@ -3,9 +3,9 @@
@@ -225,7 +227,7 @@ index d4d4182ee5..635d08f7d5 100644
#include "sd-dhcp6-client.h"
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index ced18de425..07b43770de 100644
+index 3bfe636691..e0c68c8ad3 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1,8 +1,8 @@
@@ -250,7 +252,7 @@ index 3254641461..f0ada419fd 100644
#include <netinet/in.h>
#include <linux/netdevice.h>
diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
-index 10f30c1a7e..579885726c 100644
+index 0ed89584ef..e7e157c201 100644
--- a/src/network/networkd-route.c
+++ b/src/network/networkd-route.c
@@ -1,7 +1,10 @@
@@ -311,16 +313,16 @@ index d12fd0e299..636806dc23 100644
#include <netinet/ether.h>
#include <unistd.h>
diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
-index cb12b943fe..5a28c8b563 100644
+index 87e1fb133e..13876029d0 100644
--- a/src/udev/udev-builtin-net_setup_link.c
+++ b/src/udev/udev-builtin-net_setup_link.c
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
- #include "device-util.h"
#include "alloc-util.h"
- #include "link-config.h"
+ #include "device-util.h"
+ #include "errno-util.h"
--
-2.27.0
+2.25.1
diff --git a/poky/meta/recipes-core/systemd/systemd_247.3.bb b/poky/meta/recipes-core/systemd/systemd_247.4.bb
index c0073ad7b..cd67e65ab 100644
--- a/poky/meta/recipes-core/systemd/systemd_247.3.bb
+++ b/poky/meta/recipes-core/systemd/systemd_247.4.bb
@@ -484,10 +484,15 @@ FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.c
${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
"
+# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
RRECOMMENDS_${PN}-container += "\
- ${PN}-journal-upload \
- ${PN}-journal-remote \
${PN}-journal-gatewayd \
+ ${PN}-journal-remote \
+ ${PN}-journal-upload \
+ kernel-module-dm-mod \
+ kernel-module-loop \
+ kernel-module-tun \
+ tar \
"
FILES_${PN}-extra-utils = "\
diff --git a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
index d95d1a63f..0af116f35 100644
--- a/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
+++ b/poky/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
@@ -53,6 +53,10 @@ EOF
fi
}
+do_install_append_qemuppc64 () {
+ echo "9:12345:respawn:${base_sbindir}/getty 38400 hvc0" >> ${D}${sysconfdir}/inittab
+}
+
pkg_postinst_${PN} () {
# run this on host and on target
if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then
diff --git a/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb
new file mode 100644
index 000000000..9612c491c
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux-libuuid_2.36.2.bb
@@ -0,0 +1,16 @@
+# To allow util-linux to optionally build-depend on cryptsetup, libuuid is
+# split out of the main recipe, as it's needed by cryptsetup
+
+require util-linux.inc
+
+inherit autotools gettext pkgconfig
+
+S = "${WORKDIR}/util-linux-${PV}"
+EXTRA_OECONF += "--disable-all-programs --enable-libuuid"
+LICENSE = "BSD-3-Clause"
+
+do_install_append() {
+ rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} ${D}${base_sbindir} ${D}${exec_prefix}/sbin
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-core/util-linux/util-linux.inc b/poky/meta/recipes-core/util-linux/util-linux.inc
new file mode 100644
index 000000000..cbf6102ee
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux.inc
@@ -0,0 +1,41 @@
+SUMMARY = "A suite of basic system administration utilities"
+HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
+DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
+commonly found on most Linux systems. Some of the more important utilities include \
+disk partitioning, kernel message management, filesystem creation, and system login."
+
+SECTION = "base"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
+LICENSE_${PN}-libblkid = "LGPLv2.1+"
+LICENSE_${PN}-libfdisk = "LGPLv2.1+"
+LICENSE_${PN}-libmount = "LGPLv2.1+"
+LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
+
+LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
+ file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
+ file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
+ file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
+ file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
+ file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+ file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+ file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/util-linux:"
+MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
+BPN = "util-linux"
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
+ file://configure-sbindir.patch \
+ file://runuser.pamd \
+ file://runuser-l.pamd \
+ file://ptest.patch \
+ file://run-ptest \
+ file://display_testname_for_subtest.patch \
+ file://avoid_parallel_tests.patch \
+ file://Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch \
+ "
+SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
diff --git a/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch
new file mode 100644
index 000000000..272518914
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux/Automake-use-EXTRA_LTLIBRARIES-instead-of-noinst_LTL.patch
@@ -0,0 +1,49 @@
+Author: Luca Boccassi <luca.boccassi@microsoft.com>
+Description: Automake: use EXTRA_LTLIBRARIES instead of noinst_LTLIBRARIES
+ noinst_LTLIBRARIES causes the libraries to be always built
+ unconditionally. EXTRA_LTLIBRARIES causes them to be built
+ only if other build target needs them.
+ In other words, avoid building libcommon.a and libtcolors.a
+ unless they are needed by another library/executable and
+ save some build time.
+Upstream-Status: backport, commit:c65953d72bbc7412f32e566d9fa6e780d84f0696
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -39,7 +39,7 @@ bashcompletiondir = @bashcompletiondir@
+
+ dist_noinst_HEADERS =
+ noinst_PROGRAMS =
+-noinst_LTLIBRARIES =
++EXTRA_LTLIBRARIES =
+ usrbin_exec_PROGRAMS =
+ usrsbin_exec_PROGRAMS =
+ dist_man_MANS =
+@@ -169,7 +169,7 @@ else
+ edit_cmd += -e 's|@vendordir[@]||g'
+ endif
+
+-CLEANFILES += $(PATHFILES)
++CLEANFILES += $(PATHFILES) $(EXTRA_LTLIBRARIES)
+ EXTRA_DIST += $(PATHFILES:=.in)
+
+ $(PATHFILES): Makefile
+--- a/lib/Makemodule.am
++++ b/lib/Makemodule.am
+@@ -9,7 +9,7 @@
+ # Note that you need "make install-strip" (or proper rpm / Debian build)
+ # to generate binaries with only relevant stuff.
+ #
+-noinst_LTLIBRARIES += libcommon.la
++EXTRA_LTLIBRARIES += libcommon.la
+ libcommon_la_CFLAGS = $(AM_CFLAGS)
+ libcommon_la_SOURCES = \
+ lib/blkdev.c \
+@@ -59,7 +59,7 @@ libcommon_la_SOURCES += lib/sysfs.c
+ endif
+ endif
+
+-noinst_LTLIBRARIES += libtcolors.la
++EXTRA_LTLIBRARIES += libtcolors.la
+ libtcolors_la_CFLAGS = $(AM_CFLAGS)
+ libtcolors_la_SOURCES = lib/colors.c lib/color-names.c include/colors.h include/color-names.h
+ libtcolors_la_LIBADD =
diff --git a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
index 19950a272..c79cf782d 100644
--- a/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
+++ b/poky/meta/recipes-core/util-linux/util-linux_2.36.2.bb
@@ -1,46 +1,8 @@
-SUMMARY = "A suite of basic system administration utilities"
-HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
-DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
-commonly found on most Linux systems. Some of the more important utilities include \
-disk partitioning, kernel message management, filesystem creation, and system login."
-
-SECTION = "base"
-
-LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
-LICENSE_${PN}-libblkid = "LGPLv2.1+"
-LICENSE_${PN}-libfdisk = "LGPLv2.1+"
-LICENSE_${PN}-libmount = "LGPLv2.1+"
-LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
-LICENSE_${PN}-libuuid = "BSD-3-Clause"
-
-LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
- file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
- file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
- file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
- file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
- file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
- file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
- file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
-"
+require util-linux.inc
#gtk-doc is not enabled as it requires xmlto which requires util-linux
inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest
-DEPENDS = "libcap-ng ncurses virtual/crypt zlib"
-
-MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
- file://configure-sbindir.patch \
- file://runuser.pamd \
- file://runuser-l.pamd \
- file://ptest.patch \
- file://run-ptest \
- file://display_testname_for_subtest.patch \
- file://avoid_parallel_tests.patch \
- "
-SRC_URI[sha256sum] = "f7516ba9d8689343594356f0e5e1a5f0da34adfbc89023437735872bb5024c5f"
+DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid"
PACKAGES =+ "${PN}-swaponoff"
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}"
@@ -87,8 +49,9 @@ python util_linux_binpackages () {
# we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
+# skip libuuid as it will be packaged by the util-linux-libuuid recipe
python util_linux_libpackages() {
- do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(.*)\.so\..*$',
+ do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(?!uuid)(.*)\.so\..*$',
output_pattern='${PN}-lib%s',
description='${PN} lib%s',
extra_depends='', prepend=True, allow_links=True)
@@ -141,6 +104,7 @@ PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-pytho
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
# PCRE support in hardlink
PACKAGECONFIG[pcre2] = ",,libpcre2"
+PACKAGECONFIG[cryptsetup] = "--with-cryptsetup,--without-cryptsetup,cryptsetup"
EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
@@ -165,7 +129,10 @@ RRECOMMENDS_${PN}_class-nativesdk = ""
RDEPENDS_${PN}_class-native = ""
RDEPENDS_${PN}_class-nativesdk = ""
-RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev ${PN}-libuuid-dev"
+RDEPENDS_${PN} += " util-linux-libuuid"
+RDEPENDS_${PN}-dev += " util-linux-libuuid-dev"
+
+RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev"
RDEPENDS_${PN}-bash-completion += "${PN}-lsblk"
RDEPENDS_${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs grep iproute2 kmod mdadm procps sed socat which xz"
@@ -234,6 +201,12 @@ do_install_append_class-native () {
rm -f ${D}${base_bindir}/kill
}
+# dm-verity support introduces a circular build dependency, so util-linux-libuuid is split out for target builds
+# Need to build libuuid for uuidgen, but then delete it and let the other recipe ship it
+do_install_append () {
+ rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/libuuid* ${D}${base_libdir}/libuuid*
+}
+
ALTERNATIVE_PRIORITY = "80"
ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"