subtree updates

poky: 94dfcaff64..359e1cb62f:
  Alexander Kanavin (76):
        tcf-agent: fetching over git:// no longer works
        lighttpd: convert from autotools to meson
        libxcrypt: upgrade 4.4.23 -> 4.4.25
        python3-cython: upgrade 0.29.23 -> 0.29.24
        python3-numpy: upgrade 1.21.0 -> 1.21.2
        systemd: upgrade 249.1 -> 249.3
        xeyes: upgrade 1.1.2 -> 1.2.0
        btrfs-tools: update 5.13 -> 5.13.1
        diffutils: update 3.7 -> 3.8
        mc: update 4.8.26 - > 4.8.27
        libsdl2: update 2.0.14 -> 2.0.16
        vulkan-samples: update to latest revision
        pulseaudio: update 14.2 -> 15.0
        libjitterentropy: update 3.0.2 -> 3.1.0
        usbutils: upgrade 013 -> 014
        inetutils: upgrade 2.0 -> 2.1
        mobile-broadband-provider-info: upgrade 20201225 -> 20210805
        glib-networking: upgrade 2.68.1 -> 2.68.2
        e2fsprogs: upgrade 1.46.2 -> 1.46.4
        help2man: upgrade 1.48.3 -> 1.48.4
        libedit: upgrade 20210522-3.1 -> 20210714-3.1
        log4cplus: upgrade 2.0.6 -> 2.0.7
        mtools: upgrade 4.0.34 -> 4.0.35
        patchelf: upgrade 0.12 -> 0.13
        pkgconf: upgrade 1.7.4 -> 1.8.0
        python3-git: upgrade 3.1.18 -> 3.1.20
        python3-pip: upgrade 21.2.1 -> 21.2.4
        python3-pygments: upgrade 2.9.0 -> 2.10.0
        python3-setuptools: upgrade 57.1.0 -> 57.4.0
        squashfs-tools: upgrade 4.4 -> 4.5
        acpica: upgrade 20210331 -> 20210730
        libidn2: upgrade 2.3.1 -> 2.3.2
        stress-ng: upgrade 0.12.12 -> 0.13.00
        sudo: upgrade 1.9.7p1 -> 1.9.7p2
        epiphany: upgrade 40.2 -> 40.3
        libgudev: upgrade 236 -> 237
        libjpeg-turbo: upgrade 2.1.0 -> 2.1.1
        libepoxy: upgrade 1.5.8 -> 1.5.9
        pango: upgrade 1.48.7 -> 1.48.9
        mesa: upgrade 21.1.5 -> 21.2.1
        libinput: upgrade 1.18.0 -> 1.18.1
        libxfont2: upgrade 2.0.4 -> 2.0.5
        libxft: upgrade 2.3.3 -> 2.3.4
        xserver-xorg: upgrade 1.20.12 -> 1.20.13
        linux-firmware: upgrade 20210511 -> 20210818
        wireless-regdb: upgrade 2021.04.21 -> 2021.07.14
        libwebp: upgrade 1.2.0 -> 1.2.1
        webkitgtk: upgrade 2.32.2 -> 2.32.3
        boost: upgrade 1.76.0 -> 1.77.0
        diffoscope: upgrade 179 -> 181
        enchant2: upgrade 2.3.0 -> 2.3.1
        re2c: upgrade 2.1.1 -> 2.2
        rng-tools: upgrade 6.13 -> 6.14
        kea: backport a patch to fix build errors exposed by latest update batch
        qemu: add a hint on how to enable CPU render nodes when a suitable GPU is absent
        mc: fix reproducibility
        libjitterentropy: remove contaminated hashequiv entry
        binutils: drop target flex/bison from build dependencies
        gnu-efi: update 3.0.13 -> 3.0.14
        glib-2.0: upgrade 2.68.3 -> 2.68.4
        util-linux: upgrade 2.37.1 -> 2.37.2
        ccache: upgrade 4.3 -> 4.4
        git: upgrade 2.32.0 -> 2.33.0
        openssh: upgrade 8.6p1 -> 8.7p1
        ell: upgrade 0.42 -> 0.43
        python3-mako: upgrade 1.1.4 -> 1.1.5
        vala: upgrade 0.52.4 -> 0.52.5
        libnsl2: upgrade 1.3.0 -> 2.0.0
        gi-docgen: upgrade 2021.6 -> 2021.7
        json-glib: upgrade 1.6.2 -> 1.6.4
        bind: upgrade 9.16.19 -> 9.16.20
        harfbuzz: upgrade 2.8.2 -> 2.9.0
        qemurunner.py: print output from runqemu/qemu-system in stop()
        qemurunner.py: handle getOutput() having nothing to read
        rust: fix upstream version checks
        mesa: enable crocus driver for older intel graphics

  Andreas Müller (2):
        mesa: upgrade 21.1.5 -> 21.1.7
        binutils: Apply upstream patch to fix 'too many open files' on qtwebengine

  Andrej Valek (2):
        busybox: 1.33.1 -> 1.34.0
        vim: add option to disable NLS support

  Andres Beltran (2):
        buildhistory: Add output file listing package information
        buildhistory: Label packages providing per-file dependencies in depends.dot

  Andrey Zhizhikin (2):
        lttng-modules: do not search in non-existing folder during install
        nativesdk-packagegroup-sdk-host: add perl integer module

  Armin Kuster (2):
        lz4: Security Fix for CVE-2021-3520
        lz4: remove rest of ptest artifacts

  Bruce Ashfield (21):
        linux-yocto/5.13: update to v5.13.7
        linux-yocto/5.4: update to v5.4.137
        linux-yocto/5.10: update to v5.10.55
        linux-yocto/5.4: update to v5.4.139
        linux-yocto/5.10: update to v5.10.57
        linux-yocto/5.13: update to v5.13.9
        linux-yocto/5.4: remove recipes
        conf/machine: bump qemu preferred versions to 5.13
        linux-yocto-dev: bump to v5.14+
        lttng-modules: update to 2.13.0
        kernel-devsrc: 5.14+ updates
        kernel-devsrc: fix 5.14+ objtool compilation
        poky/poky-tiny: set default kernel to 5.13
        poky: set default kernel to 5.13
        yocto-bsp: drop 5.4 bbappend
        poky-alt: switch default kernel to 5.10
        linux-yocto/5.13: update to v5.13.11
        linux-yocto/5.10: update to v5.10.59
        linux-yocto/5.13: update to v5.13.12
        linux-yocto/5.10: update to v5.10.60
        parselogs.py: ignore intermittent CD/DVDROM identification failure

  Chen Qi (1):
        package_rpm/update-alternatives: fix package's provides

  Daniel Gomez (2):
        wic: Add --no-fstab-update part option
        oeqa: wic: Add tests for --no-fstab-update

  Denys Dmytriyenko (1):
        grep: upgrade 3.6 -> 3.7

  Enrico Scholz (1):
        bitbake: fetch2/wget: fix 'no_proxy' handling

  Hongxu Jia (2):
        nativesdk-pseudo: Fix to work with glibc 2.34 systems
        glibc: fix create thread failed in unprivileged process

  Hsia-Jun Li (1):
        lib/oe/elf: Add Android OS to machine_dict

  Jon Mason (8):
        arch-armv8m-main: missing space
        conf/machine: move tune files to architecture directories
        yocto-bsp: update machine confs with new tune locations
        docs: update docs with new tune locations
        arch-arm*: add better support for gcc march extensions
        tune-cortexr*: add support for all Arm Cortex-R processors
        arch-arm*: Fix bugs with dsp and simd feature include files
        tune-*: Use more specific DEFAULTTUNE

  Jose Quaresma (1):
        sstate.bbclass: get the number of threads from BB_NUMBER_THREADS

  Joshua Watt (17):
        bitbake: contrib: vim: Add "remove" override highlighting
        bitbake.conf: Add lz4c, pzstd and zstd
        bitbake: bitbake: asyncrpc: Defer all asyncio to child process
        conf/licenses: Add FreeType SPDX mapping
        tzdata: Remove BSD License specifier
        glib-2.0: Use specific BSD license variant
        e2fsprogs: Use specific BSD license variant
        shadow: Use specific BSD license variant
        libcap: Use specific BSD license variant
        sudo: Use specific BSD license variant
        libpam: Use specific BSD license variant
        libxfont2: Use specific BSD license variant
        libjitterentropy: Use specific BSD license variant
        libx11: Use specific BSD license variant
        font-util: Use specific BSD license variant
        flac: Use specific BSD license variant
        swig: Use specific BSD license variant

  Kai Kang (2):
        libcgroup: fix installed-vs-shipped qa issue
        rustfmt: fix SRC_URI

  Kevin Hao (2):
        meta-yocto-bsp: Set the default kernel to v5.13
        meta-yocto-bsp: Bump the kernel to v5.13.11

  Khem Raj (2):
        weston: Re-order gbm destruction at DRM-backend tear down
        musl: Update to latest tip of trunk

  Kristian Klausen (1):
        systemd: Add repart PACKAGECONFIG

  Marco Felsch (1):
        bitbake: bitbake: bitbake-layers: add skip reason to output

  Marek Vasut (1):
        weston: Add rdp PACKAGECONFIG

  Marta Rybczynska (1):
        lzo: add CVE_PRODUCT

  Martin Jansa (3):
        bitbake: prserv: handle PRSERV_HOST = "127.0.0.1:0" the same as "localhost:0"
        bitbake: cooker/process: Fix typos in exiting message
        rust: remove unused patches

  Michael Halstead (2):
        uninative: Upgrade to 3.3, support glibc 2.34
        uninative: Upgrade to 3.4

  Michael Opdenacker (2):
        maintainers.inc: maintainer for alsa-*, flac, lame and speex
        meta: stop using "virtual/" in RPROVIDES and RDEPENDS

  Mingli Yu (2):
        shadow: fix default value in SHA_get_salt_rounds()
        bitbake: prserv: make localhost work

  Oleksandr Popovych (1):
        utils: Reduce the number of calls to the "dirname" command

  Oliver Kranz (1):
        Allow global override of golang GO_DYNLINK

  Paul Barker (2):
        bitbake: prserv: Replace XML RPC with modern asyncrpc implementation
        bitbake: prserv: Add read-only mode

  Paul Gortmaker (1):
        ltp: backport ioctl_ns05 fix from upstream

  Peter Kjellerstedt (7):
        lttng-modules: Make it build when CONFIG_TRACEPOINTS is not enabled again
        poky-floating-revisions.inc: Use new override syntax for commented vars
        local.conf.sample: Use the new override syntax for a commented variable
        bitbake.conf: Use the new variable override syntax in a comment
        buildhistory-collect-srcrevs: Adapt to the new variable override syntax
        meson.bbclass: Make the default buildtype "debug" if DEBUG_BUILD is 1
        bitbake: providers: Use new override syntax when handling pn- "override"

  Purushottam Choudhary (1):
        assimp: added patch to fix hardcoded non-existing paths in CMake modules

  Randy MacLeod (8):
        openssl: upgrade from 1.1.1k to 1.1.1l
        rust: initial merge of most of meta-rust
        rust: mv README.md to recipes-devtools/rust/README-rust.md
        rust: update the README to conform to being in oe-core
        cargo/rust/rustfmt: exclude from world
        maintainers: Add myself as maintainer for rust pkgs
        cargo_common: remove http_proxy
        rust: remove Rust version 1.51.0 toolchain

  Richard Purdie (27):
        elfutils: Add zstd PACKAGECONFIG for determinism
        man-db: Add compression PACKAGECONFIG entries
        oeqa/selftest/glibc: Handle incorrect encoding issuesin glibc test results
        package/scripts: Fix FILES_INFO handling
        package: Fix overrides converion issue with PKGSIZE
        bitbake: bitbake: Make 3.6.0 the minimum python version
        elfutils: Fix ptest dependencies
        bsp-guide: Fix reference to bbappend section of dev-manual
        ref-manual: Fix reference to bbappend section of dev-manual
        gcc: Fix nativesdk builds and multilib fixes with gcc 11
        bitbake: README: Add note about test suite and new tests
        pseudo: Fix to work with glibc 2.34 systems
        bitbake: README: Fix typo
        rust-cross*: Fix OVERRRIDE references in task signature computation
        rust-cross-canadian-common: Use rust.inc directly, not rust-target
        cargo: Ensure cargo-cross-canadian doesn't have native/nativesdk versions
        rust-native: Avoid stripped warning
        rust-llvm: Add missing HOMEPAGE
        rust: Skip target recipe since it doesn't work
        oeqa/selftest/distrodata: Fix up rust maintainer testing
        rust: Avoid buildtools+uninative issues with glibc symbols mismatches
        rust-common: Add LDFLAGS to cc wrapper
        oeqa/selftest/reproducibile: Exclude rust packages
        kernel: Use unexpanded EXTENDPKGV
        oeqa/buildtools-cases: Allow bitbake time to shutdown
        cargo: Apply uninative fix to snapshot as with rust
        rust-common: Hack around LD_LIBRARY_PATH issues on centos7

  Robert P. J. Day (1):
        scripts/lib/wic/help/py: "Redhat" -> "Red Hat"

  Ross Burton (11):
        oeqa/selftest/buildoptions: test buildhistory PKGSIZE and FILELIST fields
        uninative: Improve glob to handle glibc 2.34
        oeqa/sdk: add relocation test for buildtools
        glibc: package the stub .a libaries into glibc-dev
        oeqa/sdk: add HTTPS test for buildtools
        libcgroup: upgrade to 2.0
        gcc: also relocate the musl loader
        local.conf.sample.extended: fix commented-out override syntax
        cpio: backport fix for CVE-2021-38185
        mesa: fix build on Arm V5 with soft float
        ptest: allow the ptest-packagelists.inc warning to be disabled

  Sakib Sajal (1):
        qemu: fix CVE-2021-3682

  Scott Murray (2):
        bitbake: bitbake: asyncrpc: always create new asyncio loops
        prservice: remove connection caching

  Stefan Herbrechtsmeier (4):
        u-boot: Remove redundancy from installed and deployed SPL artifact names
        u-boot: Remove misplaced configuration type variable
        u-boot: Make SPL suffix configurable
        u-boot: Make UBOOT_BINARYNAME configurable

  Tim Orling (7):
        python3-importlib-metadata: upgrade 4.6.3 -> 4.6.4
        python3-hypothesis: upgrade 6.14.5 -> 6.14.8
        python3-hypothesis: upgrade 6.14.8 -> 6.15.0
        python3-hypothesis: enable ptest
        python3-pluggy: upgrade 0.13.1 -> 1.0.0
        python3-pytest: allow python3-pluggy >=1.0.0
        rust-common.bbclass: export RUST_TARGET_PATH

  Trevor Gamblin (1):
        bluez: upgrade 5.60 -> 5.61

  Trevor Woerner (1):
        distro_features_check: expand with IMAGE_FEATURES

  Vinay Kumar (2):
        glibc: Fix CVE-2021-38604
        rust-common.inc: Fix build failure with qemuppc64.

  Yi Zhao (2):
        prelink: add PACKAGECONFIG for selinux
        shadow: add /etc/default/useradd

  Zoltán Böszörményi (4):
        kernel-module-split.bbclass: Support zstd-compressed modules
        Allow opt-out of split kernel modules
        kernel.bbclass: Use full versions for inter-package dependencies
        base/kernel: Support zstd-compressed squashfs and cpio initramfs

  leimaohui (2):
        Fix conflict error when enable multilib.
        wordsize.h: Fix a miss, this file in arm and aarch64 should be the same.

meta-raspberrypi: 32921fc9bd..a6fa6b3aec:
  Khem Raj (4):
        machines: Use tune files from new location in oe-core
        linux-raspberrypi: Update to 5.10.59
        raspberrypi-firmware: Update to latest
        raspberrypi4: Use full kms (vc4-kms-v3d) DT overlay

  Marcus Comstedt (1):
        pi-bluetooth: Add compatibility with non-systemd builds

  Tom Rini (1):
        xserver-xf86-config: Correctly append to FILES:${PN}

meta-security: c885d399cd..1f18c623e9:
  Armin Kuster (10):
        cryfs: add new package
        kas-security-bas: bump conf value
        kas: fix DISTRO appends
        dm-verity-img.bbclass: more overided fixups
        krill: Rust is in core now
        suricata: rust is in core
        layer.conf: drop dynamic-layer
        layer.conf: drop meta-rust
        harden-image-minimal: fix useradd inherit
        kas: remove rust layers

  Daiane Angolini (1):
        meta-integrity: kernel-modsign: Change weak default value

  George Liu (1):
        meta: Fix typos

  Marta Rybczynska (2):
        README: fix mailing lists
        README: fix mailing lists and a typo

meta-openembedded: a13db91f19..9fdc7960ba:
  Andreas Müller (6):
        catch2: upgrade 2.13.6 -> 2.13.7
        fltk/CMake: Do not export executable 'fluid'
        fltk: upgrade 1.3.6 -> 1.3.7
        network-manager-applet: upgrade 1.22.0 -> 1.24.0
        networkmanager: upgrade 1.32.4 -> 1.32.8
        udisks2: upgrade 2.9.2 -> 2.9.3

  Anton Blanchard (2):
        boost-url: Use GNUInstallDirs instead of hard wiring install directories
        cereal: Use GNUInstallDirs instead of hard wiring install directories

  Changqing Li (1):
        linuxptp: upgrade 3.1 -> 3.1.1

  Devendra Tewari (1):
        android-tools: Add flag to enable adbd service (#147)

  Dmitry Baryshkov (1):
        image_types_sparse: stop using ext2simg

  Easwar Hariharan (1):
        chrony: Fix privdrop packageconfig

  Joe Slater (1):
        nginx: fix CVE-2021-3618

  Justin Bronder (1):
        hidapi: add rdep on glibc-gconv-utf-16

  Khem Raj (7):
        layer.conf: Add ttf-ipa to SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS on fontconfig
        mpich: link explictly with libgcc
        packagegroup-meta-networking: Add bmon
        libnss-nisplus: Remove
        pipewire: Upgrade to 0.3.34
        bluealsa: Add recipe
        apitrace: Enable on glibc >= 2.34

  Leon Anavi (21):
        python3-astroid: Upgrade 2.6.6 -> 2.7.0
        python3-ujson: Upgrade 4.0.2 -> 4.1.0
        python3-pycurl: Upgrade 7.44.0 -> 7.44.1
        python3-websocket-client: Upgrade 1.1.0 -> 1.2.1
        python3-bitarray: Upgrade 2.2.5 -> 2.3.0
        python3-langtable: Upgrade 0.0.54 -> 0.0.56
        python3-pandas: Upgrade 1.3.1 -> 1.3.2
        python3-tzlocal: Upgrade 2.1 -> 3.0
        python3-zeroconf: Upgrade 0.34.3 -> 0.36.0
        python3-dbus-next: Upgrade 0.2.2 -> 0.2.3
        python3-astroid: Upgrade 2.7.0 -> 2.7.1
        python3-ruamel-yaml: Upgrade 0.17.10 -> 0.17.11
        python3-unidiff: Upgrade 0.6.0 -> 0.7.0
        python3-qrcode: Upgrade 7.2 -> 7.3
        python3-simplejson: Upgrade 3.17.3 -> 3.17.4
        python3-regex: Upgrade 2021.7.6 -> 2021.8.3
        python3-colorlog: Upgrade 5.0.1 -> 6.4.1
        python3-ruamel-yaml: Upgrade 0.17.11 -> 0.17.13
        python3-simplejson: Upgrade 3.17.4 -> 3.17.5
        python3-bitarray: Upgrade 2.3.0 -> 2.3.2
        python3-watchdog: Upgrade 2.1.3 -> 2.1.5

  Martin Jansa (1):
        layer.conf: Add ttf-takao to SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS on fontconfig

  Matija Tudan (1):
        gpsd: upgrade 3.20 -> 3.23

  Matteo Croce (1):
        libbpf: bump to 0.4.0

  Michael Opdenacker (2):
        meta-multimedia: stop using "virtual/" in RPROVIDES and RDEPENDS
        meta-oe: stop using "virtual/" in RPROVIDES and RDEPENDS

  Mingli Yu (4):
        polkit: fix CVE-2021-3560
        vsftpd: Upgrade to 3.0.5
        mariadb: Upgrade to 10.6.4
        jemalloc: improve reproducibility

  Nathan Rossi (1):
        nginx: Fix off_t size passed in configure

  Oleksandr Kravchuk (6):
        font-adobe-100dpi: fix UPSTREAM_CHECK_REGEX
        font-adobe-utopia-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bh-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bh-lucidatypewriter-100dpi: fix UPSTREAM_CHECK_REGEX
        font-bitstream-100dpi: fix UPSTREAM_CHECK_REGEX
        xf86-input-tslib: update to 1.1.1

  Patrick Areny (2):
        libConfuse: Add recipe
        bmon: Add recipe

  Peter Kjellerstedt (6):
        gpsd: Let scons install the udev and systemd files
        gpsd: Move /usr/share/gpsd/doc to the gpsd-doc package
        poppler: Explicitly enable/disable boost together with splash
        chrony: Use new override syntax for USERADD_PARAM
        gpsd: Correct the installation of gpsd.hotplug if systemd is not enabled
        gpsd: Do not install gpsd.hotplug unconditionally

  Peter Morrow (1):
        libbpf: remove stale comment

  Sakib Sajal (2):
        lmdb: use libprefix in Makefile to install libraries
        gd: fix CVE-2021-38115

  Sinan Kaya (4):
        c-ares: remove custom patches
        grpc: make SHARED library build optional
        libkcapi: add a hash only packageconfig
        libkcapi: allow an option to build natively

  Tim Orling (2):
        bootchart: drop; unfetchable
        python3-django_2.2.x: only check upstream 2.2.x

  Trevor Gamblin (5):
        python3-click: Add missing ptest artifacts
        python3-eventlet: add 0.30.2 to meta-python
        python3-gunicorn: tweak run-ptest, add RDEPENDS
        python3-license-expression: add ptest artifacts
        nftables: upgrade 0.9.9 -> 1.0.0

  Vesa Jääskeläinen (2):
        python3-cached-property: Add recipe for version 1.5.2
        python3-pkcs11: Add recipe for version 0.7.0

  Yi Zhao (2):
        audit: upgrade 3.0.4 -> 3.0.5
        krb5: filtering out -f*-prefix-map from krb5-config

  Zoltán Böszörményi (1):
        metacity: Add a patch to create build/src/core before moving generated sources to it

  leimaohui (3):
        packagegroup-meta-oe: Update ttf-ipa package name.
        uim: Dleted takao fonts from DEPENDS.
        takao-fonts: It should be in ttf-fonts directory as the other ttf fonts.

  wangmy (14):
        fetchmail: upgrade 6.4.20 -> 6.4.21
        c-ares: upgrade 1.17.1 -> 1.17.2
        icewm: upgrade 2.6.0 -> 2.7.0
        netplan: upgrade 0.102 -> 0.103
        ctags: upgrade 5.9.20210801.0 -> 5.9.20210815.0
        live555: upgrade 20210720 -> 20210809
        opensc: upgrade 0.21.0 -> 0.22.0
        xfsprogs: upgrade 5.12.0 -> 5.13.0
        networkmanager: upgrade 1.32.8 -> 1.32.10
        can-utils: upgrade 2021.06.0 -> 2021.08.0
        doxygen: upgrade 1.9.1 -> 1.9.2
        gensio: upgrade 2.2.8 -> 2.2.9
        live555: upgrade 20210809 -> 20210824
        sedutil: upgrade 1.15.1.01 -> 1.20.0

  zangrc (14):
        python3-flask-migrate: upgrade 3.0.1 -> 3.1.0
        python3-flask-socketio: upgrade 5.1.0 -> 5.1.1
        python3-google-api-python-client: upgrade 2.15.0 -> 2.17.0
        python3-grpcio-tools: upgrade 1.38.1 -> 1.39.0
        python3-grpcio: upgrade 1.38.1 -> 1.39.0
        python3-wheel: upgrade 0.36.2 -> 0.37.0
        libio-socket-ssl-perl: upgrade 2.071 -> 2.072
        python3-aiohttp-jinja2: upgrade 1.4.2 -> 1.5
        python3-gevent: upgrade 21.1.2 -> 21.8.0
        python3-google-api-python-client: upgrade 2.17.0 -> 2.18.0
        python3-h5py: upgrade 3.3.0 -> 3.4.0
        python3-haversine: upgrade 2.3.1 -> 2.4.0
        python3-pyephem: upgrade 3.7.7.1 -> 4.0.0.2
        rdma-core: upgrade 35.0 -> 36.0

  zhengruoqin (12):
        libqmi: upgrade 1.28.8 -> 1.30.0
        sedutil: upgrade 1.15.1 -> 1.15.1.01
        libencode-perl: upgrade 3.11 -> 3.12
        python3-pymisp: upgrade 2.4.144 -> 2.4.148
        python3-pyzmq: upgrade 22.1.0 -> 22.2.1
        python3-tqdm: upgrade 4.62.0 -> 4.62.2
        iwd: upgrade 1.16 -> 1.17
        xmlsec1: upgrade 1.2.31 -> 1.2.32
        xrdb: upgrade 1.2.0 -> 1.2.1
        python3-regex: upgrade 2021.8.3 -> 2021.8.27
        python3-sqlalchemy: upgrade 1.4.22 -> 1.4.23
        python3-stevedore: upgrade 3.3.0 -> 3.4.0

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I2960f1ce53a1e2cde8b03b929829db9a2f105541
diff --git a/poky/meta/recipes-devtools/binutils/binutils-2.37.inc b/poky/meta/recipes-devtools/binutils/binutils-2.37.inc
index 4218c0a..6093558 100644
--- a/poky/meta/recipes-devtools/binutils/binutils-2.37.inc
+++ b/poky/meta/recipes-devtools/binutils/binutils-2.37.inc
@@ -35,5 +35,6 @@
      file://0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
      file://0015-sync-with-OE-libtool-changes.patch \
      file://0016-Check-for-clang-before-checking-gcc-version.patch \
+     file://0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch \
 "
 S  = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/poky/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
new file mode 100644
index 0000000..9becee3
--- /dev/null
+++ b/poky/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
@@ -0,0 +1,234 @@
+From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 26 Jul 2021 05:59:55 -0700
+Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
+
+Close the file descriptor if there is no archive plugin file descriptor
+to avoid running out of file descriptors on thin archives with many
+archive members.
+
+bfd/
+
+	PR ld/28138
+	* plugin.c (bfd_plugin_close_file_descriptor): Close the file
+	descriptor there is no archive plugin file descriptor.
+
+ld/
+
+	PR ld/28138
+	* testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
+	native build.
+
+	PR ld/28138
+	* testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
+	* testsuite/ld-plugin/pr28138.c: New file.
+	* testsuite/ld-plugin/pr28138-1.c: Likewise.
+	* testsuite/ld-plugin/pr28138-2.c: Likewise.
+	* testsuite/ld-plugin/pr28138-3.c: Likewise.
+	* testsuite/ld-plugin/pr28138-4.c: Likewise.
+	* testsuite/ld-plugin/pr28138-5.c: Likewise.
+	* testsuite/ld-plugin/pr28138-6.c: Likewise.
+	* testsuite/ld-plugin/pr28138-7.c: Likewise.
+
+(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
+(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
+
+Upstream-Status: Accepted[https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0]
+---
+ bfd/plugin.c                       |  8 +++++++
+ ld/testsuite/ld-plugin/lto.exp     | 34 ++++++++++++++++++++++++++++++
+ ld/testsuite/ld-plugin/pr28138-1.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-2.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-3.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-4.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-5.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-6.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138-7.c |  6 ++++++
+ ld/testsuite/ld-plugin/pr28138.c   | 20 ++++++++++++++++++
+ 10 files changed, 104 insertions(+)
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138.c
+
+diff --git a/bfd/plugin.c b/bfd/plugin.c
+index 6cfa2b66470..3bab8febe88 100644
+--- a/bfd/plugin.c
++++ b/bfd/plugin.c
+@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
+ 	     && !bfd_is_thin_archive (abfd->my_archive))
+ 	abfd = abfd->my_archive;
+ 
++      /* Close the file descriptor if there is no archive plugin file
++	 descriptor.  */
++      if (abfd->archive_plugin_fd == -1)
++	{
++	  close (fd);
++	  return;
++	}
++
+       abfd->archive_plugin_fd_open_count--;
+       /* Dup the archive plugin file descriptor for later use, which
+ 	 will be closed by _bfd_archive_close_and_cleanup.  */
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index def69e43ab3..999d911ce6a 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+     }
+ }
+ 
++run_cc_link_tests [list \
++    [list \
++	"Build pr28138.a" \
++	"-T" "" \
++	{pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
++	 pr28138-6.c pr28138-7.c} {} "pr28138.a" \
++    ] \
++    [list \
++	"Build pr28138.o" \
++	"" "" \
++	{pr28138.c} {} \
++    ] \
++]
++
++set exec_output [run_host_cmd "sh" \
++			      "-c \"ulimit -n 20; \
++			      $CC -Btmpdir/ld -o tmpdir/pr28138 \
++			      tmpdir/pr28138.o tmpdir/pr28138.a\""]
++set exec_output [prune_warnings $exec_output]
++if [string match "" $exec_output] then {
++    if { [isnative] } {
++	set exec_output [run_host_cmd "tmpdir/pr28138" ""]
++	if [string match "PASS" $exec_output] then {
++	    pass "PR ld/28138"
++	} else {
++	    fail "PR ld/28138"
++	}
++    } else {
++	pass "PR ld/28138"
++    }
++} else {
++    fail "PR ld/28138"
++}
++
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+ set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
+new file mode 100644
+index 00000000000..51d119e1642
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-1.c
+@@ -0,0 +1,6 @@
++extern int a0(void);
++int
++a1(void)
++{
++  return 1 + a0();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
+new file mode 100644
+index 00000000000..1120cd797e9
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-2.c
+@@ -0,0 +1,6 @@
++extern int a1(void);
++int
++a2(void)
++{
++  return 1 + a1();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
+new file mode 100644
+index 00000000000..ec464947ee6
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-3.c
+@@ -0,0 +1,6 @@
++extern int a2(void);
++int
++a3(void)
++{
++  return 1 + a2();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
+new file mode 100644
+index 00000000000..475701b2c5c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-4.c
+@@ -0,0 +1,6 @@
++extern int a3(void);
++int
++a4(void)
++{
++  return 1 + a3();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
+new file mode 100644
+index 00000000000..e24f86c363e
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-5.c
+@@ -0,0 +1,6 @@
++extern int a4(void);
++int
++a5(void)
++{
++  return 1 + a4();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
+new file mode 100644
+index 00000000000..b5b938bdb21
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-6.c
+@@ -0,0 +1,6 @@
++extern int a5(void);
++int
++a6(void)
++{
++  return 1 + a5();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
+new file mode 100644
+index 00000000000..4ef75bf0f0c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-7.c
+@@ -0,0 +1,6 @@
++extern int a6(void);
++int
++a7(void)
++{
++  return 1 + a6();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
+new file mode 100644
+index 00000000000..68252c9f382
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138.c
+@@ -0,0 +1,20 @@
++#include <stdio.h>
++
++extern int a7(void);
++
++int
++a0(void)
++{
++  return 0;
++}
++
++int
++main()
++{
++  if (a7() == 7)
++    {
++      printf ("PASS\n");
++      return 0;
++    }
++  return 1;
++}
+-- 
+2.31.1
+
diff --git a/poky/meta/recipes-devtools/binutils/binutils_2.37.bb b/poky/meta/recipes-devtools/binutils/binutils_2.37.bb
index ff93770..7430bf1 100644
--- a/poky/meta/recipes-devtools/binutils/binutils_2.37.bb
+++ b/poky/meta/recipes-devtools/binutils/binutils_2.37.bb
@@ -1,7 +1,7 @@
 require binutils.inc
 require binutils-${PV}.inc
 
-DEPENDS += "flex bison zlib"
+DEPENDS += "zlib"
 
 EXTRA_OECONF += "--with-sysroot=/ \
                 --enable-install-libbfd \
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-fix-error-for-undeclared-macro-on-musl.patch b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-fix-error-for-undeclared-macro-on-musl.patch
deleted file mode 100644
index 251f5d2..0000000
--- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-fix-error-for-undeclared-macro-on-musl.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From a9802902d37b83c2c992cfe34179312f7209a962 Mon Sep 17 00:00:00 2001
-From: Wang Mingyu <wangmy@fujitsu.com>
-Date: Mon, 19 Jul 2021 10:12:12 +0900
-Subject: [PATCH] fix error for undeclared macro on musl 
-
-Fixes the following compilation errors with musl that does not have
-NAME_MAX declared:
-'NAME_MAX' undeclared (first use in this function)
-
-Upstream-Status: Pending
-
-Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
----
- cmds/filesystem-usage.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/cmds/filesystem-usage.c b/cmds/filesystem-usage.c
-index 50d8995e..856e9d7b 100644
---- a/cmds/filesystem-usage.c
-+++ b/cmds/filesystem-usage.c
-@@ -24,6 +24,7 @@
- #include <stdarg.h>
- #include <getopt.h>
- #include <fcntl.h>
-+#include <limits.h>
- 
- #include "common/utils.h"
- #include "kerncompat.h"
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb
similarity index 95%
rename from poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.bb
rename to poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb
index 5f8621f..5288978 100644
--- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.bb
+++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.13.1.bb
@@ -19,9 +19,8 @@
 SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
            file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
            file://0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch \
-           file://0001-fix-error-for-undeclared-macro-on-musl.patch \
            "
-SRCREV = "de4914dbfd7e419d1c534b3d2ec8728e702114bf"
+SRCREV = "e4ac7d4f67b330a3b27a4a50f73e94b1e072ae56"
 S = "${WORKDIR}/git"
 
 PACKAGECONFIG ??= " \
diff --git a/poky/meta/recipes-devtools/cargo/cargo-cross-canadian.inc b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian.inc
new file mode 100644
index 0000000..840793c
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian.inc
@@ -0,0 +1,74 @@
+SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
+
+RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
+CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
+
+require recipes-devtools/rust/rust-common.inc
+require cargo.inc
+
+CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
+BASEDEPENDS:remove = "cargo-native"
+
+export RUST_TARGET_PATH="${WORKDIR}/targets/"
+
+RUSTLIB = " \
+	-L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
+"
+
+DEPENDS += "rust-native \
+            rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
+            virtual/nativesdk-${HOST_PREFIX}compilerlibs \
+            nativesdk-openssl nativesdk-zlib \
+            virtual/nativesdk-libc \
+"
+
+inherit cross-canadian
+
+PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
+
+python do_rust_gen_targets () {
+    wd = d.getVar('WORKDIR') + '/targets/'
+
+    rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
+    rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
+}
+
+do_compile:prepend () {
+	PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
+}
+
+do_install () {
+    SYS_BINDIR=$(dirname ${D}${bindir})
+    install -d "${SYS_BINDIR}"
+    install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
+    for i in ${SYS_BINDIR}/*; do
+	chrpath -r "\$ORIGIN/../lib" ${i}
+    done
+
+    ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+    mkdir "${ENV_SETUP_DIR}"
+    ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
+    cat <<- EOF > "${ENV_SETUP_SH}"
+	export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
+	mkdir -p "\$CARGO_HOME"
+        # Init the default target once, it might be otherwise user modified.
+	if [ ! -f "\$CARGO_HOME/config" ]; then
+		touch "\$CARGO_HOME/config"
+		echo "[build]" >> "\$CARGO_HOME/config"
+		echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
+        fi
+
+	# Keep the below off as long as HTTP/2 is disabled.
+	export CARGO_HTTP_MULTIPLEXING=false
+
+	export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
+	EOF
+}
+
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"
+
diff --git a/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000..dba400b
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb
@@ -0,0 +1,6 @@
+require recipes-devtools/rust/rust-source-${PV}.inc
+require recipes-devtools/rust/rust-snapshot-${PV}.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
+
+require cargo-cross-canadian.inc
diff --git a/poky/meta/recipes-devtools/cargo/cargo.inc b/poky/meta/recipes-devtools/cargo/cargo.inc
new file mode 100644
index 0000000..1cf7dd6
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo.inc
@@ -0,0 +1,54 @@
+SUMMARY ?= "Cargo, a package manager for Rust."
+HOMEPAGE = "https://crates.io"
+LICENSE = "MIT | Apache-2.0"
+SECTION = "devel"
+
+DEPENDS = "openssl zlib curl ca-certificates libssh2"
+
+LIC_FILES_CHKSUM = " \
+    file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
+    file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
+    file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
+"
+
+
+S = "${RUSTSRC}/src/tools/cargo"
+CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
+EXCLUDE_FROM_WORLD = "1"
+
+inherit cargo
+
+do_cargo_setup_snapshot () {
+	${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
+	# Need to use uninative's loader if enabled/present since the library paths
+	# are used internally by rust and result in symbol mismatches if we don't
+	if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+		patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
+	fi
+}
+
+addtask cargo_setup_snapshot after do_unpack before do_configure
+do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
+
+do_compile:prepend () {
+	export RUSTC_BOOTSTRAP="1"
+}
+
+do_install () {
+	install -d "${D}${bindir}"
+	install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
+}
+
+# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
+# as shipped by Yocto Dunfell.
+# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
+# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.
+#export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
+
+# Needed for pkg-config to be used
+export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
+
+# When building cargo-native we don't have cargo-native to use and depend on,
+# so we must use the locally set up snapshot to bootstrap the build.
+BASEDEPENDS:remove:class-native = "cargo-native"
+CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
diff --git a/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb b/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb
new file mode 100644
index 0000000..175f544
--- /dev/null
+++ b/poky/meta/recipes-devtools/cargo/cargo_1.54.0.bb
@@ -0,0 +1,4 @@
+require recipes-devtools/rust/rust-source-${PV}.inc
+require recipes-devtools/rust/rust-snapshot-${PV}.inc
+require cargo.inc
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/ccache/ccache_4.3.bb b/poky/meta/recipes-devtools/ccache/ccache_4.4.bb
similarity index 73%
rename from poky/meta/recipes-devtools/ccache/ccache_4.3.bb
rename to poky/meta/recipes-devtools/ccache/ccache_4.4.bb
index 53a0bcf..203be8c 100644
--- a/poky/meta/recipes-devtools/ccache/ccache_4.3.bb
+++ b/poky/meta/recipes-devtools/ccache/ccache_4.4.bb
@@ -7,12 +7,12 @@
 SECTION = "devel"
 
 LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=698a26b57e513d678e1e7727bf56395b"
+LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=73963d63171ecbdf2d25274de67c68c5"
 
 DEPENDS = "zstd"
 
 SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
-SRC_URI[sha256sum] = "b9789c42e52c73e99428f311a34def9ffec3462736439afd12dbacc7987c1533"
+SRC_URI[sha256sum] = "61a993d62216aff35722a8d0e8ffef9b677fc3f6accd8944ffc2a6db98fb3142"
 
 UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/"
 
@@ -23,3 +23,4 @@
 BBCLASSEXTEND = "native nativesdk"
 
 PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc"
+PACKAGECONFIG[redis] = "-DREDIS_STORAGE_BACKEND=ON,-DREDIS_STORAGE_BACKEND=OFF,hiredis"
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
index c80b93c..bcffa77 100644
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
+++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
@@ -3,7 +3,7 @@
 fixing, configuring , and debugging ext2 filesystems."
 HOMEPAGE = "http://e2fsprogs.sourceforge.net/"
 
-LICENSE = "GPLv2 & LGPLv2 & BSD & MIT"
+LICENSE = "GPLv2 & LGPLv2 & BSD-3-Clause & MIT"
 LICENSE:e2fsprogs-dumpe2fs = "GPLv2"
 LICENSE:e2fsprogs-e2fsck = "GPLv2"
 LICENSE:e2fsprogs-mke2fs = "GPLv2"
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch
deleted file mode 100644
index 26f972b..0000000
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 42ba67f9a51ef959e7fd8dac29b5398c121c6976 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 30 Apr 2021 23:45:56 +0200
-Subject: [PATCH] lib/ext2fs/unix_io.c: do unlock on error
-
-Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- lib/ext2fs/unix_io.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
-index 64eee342..528c2fbc 100644
---- a/lib/ext2fs/unix_io.c
-+++ b/lib/ext2fs/unix_io.c
-@@ -398,7 +398,7 @@ static errcode_t raw_write_blk(io_channel channel,
- 		mutex_lock(data, BOUNCE_MTX);
- 		if (ext2fs_llseek(data->dev, location, SEEK_SET) < 0) {
- 			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
--			goto error_out;
-+			goto error_unlock;
- 		}
- 		actual = write(data->dev, buf, size);
- 		mutex_unlock(data, BOUNCE_MTX);
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch
deleted file mode 100644
index 2452f7e..0000000
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 3593063f735f453d43f461292e26913436c11ca3 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sat, 1 May 2021 13:06:12 +0200
-Subject: [PATCH] lib/ext2fs/unix_io.c: revert parts of "libext2fs: fix
- potential races in unix_io"
-
-Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/68]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- lib/ext2fs/unix_io.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
-index 528c2fbc..f4916b21 100644
---- a/lib/ext2fs/unix_io.c
-+++ b/lib/ext2fs/unix_io.c
-@@ -311,10 +311,10 @@ bounce_read:
- 			size += really_read;
- 			goto short_read;
- 		}
--		actual = size;
--		if (actual > align_size)
--			actual = align_size;
--		actual -= offset;
-+		if ((actual + offset) > align_size)
-+			actual = align_size - offset;
-+		if (actual > size)
-+			actual = size;
- 		memcpy(buf, data->bounce + offset, actual);
- 
- 		really_read += actual;
-@@ -455,9 +455,10 @@ bounce_write:
- 			}
- 		}
- 		actual = size;
--		if (actual > align_size)
--			actual = align_size;
--		actual -= offset;
-+		if ((actual + offset) > align_size)
-+			actual = align_size - offset;
-+		if (actual > size)
-+			actual = size;
- 		memcpy(((char *)data->bounce) + offset, buf, actual);
- 		if (ext2fs_llseek(data->dev, aligned_blk * align_size, SEEK_SET) < 0) {
- 			retval = errno ? errno : EXT2_ET_LLSEEK_FAILED;
--- 
-2.24.0
-
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch
new file mode 100644
index 0000000..f198df8
--- /dev/null
+++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch
@@ -0,0 +1,69 @@
+From ea5adf259e01c790f9ba69d6fe88d691de410b6f Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sun, 22 Aug 2021 14:37:32 +0200
+Subject: [PATCH] tests/u_direct_io/expect: correct expected output
+
+This is likely the right fix, but upstream needs to confirm.
+
+Upstream-Status: Inappropriate [issue reported https://github.com/tytso/e2fsprogs/issues/80]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/u_direct_io/expect | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/tests/u_direct_io/expect b/tests/u_direct_io/expect
+index b0cdc730..830cbd75 100644
+--- a/tests/u_direct_io/expect
++++ b/tests/u_direct_io/expect
+@@ -19,8 +19,8 @@ Filesystem OS type:       Linux
+ Inode count:              32768
+ Block count:              32768
+ Reserved block count:     1638
+-Overhead clusters:        5131
+-Free blocks:              27631
++Overhead clusters:        6155
++Free blocks:              26607
+ Free inodes:              32757
+ First block:              0
+ Block size:               4096
+@@ -29,27 +29,29 @@ Reserved GDT blocks:      7
+ Blocks per group:         32768
+ Fragments per group:      32768
+ Inodes per group:         32768
+-Inode blocks per group:   1024
++Inode blocks per group:   2048
+ Flex block group size:    16
+ Mount count:              0
+ Check interval:           15552000 (6 months)
+ Reserved blocks uid:      0
+ Reserved blocks gid:      0
+ First inode:              11
+-Inode size:	          128
++Inode size:	          256
++Required extra isize:     32
++Desired extra isize:      32
+ Journal inode:            8
+ Default directory hash:   half_md4
+ Journal backup:           inode blocks
+ Directories:              2
+  Group  0: block bitmap at 9, inode bitmap at 25, inode table at 41
+-           27631 free blocks, 32757 free inodes, 2 used directories
++           26607 free blocks, 32757 free inodes, 2 used directories
+ e2fsck -fn -N test_filesys $LOOP
+ Pass 1: Checking inodes, blocks, and sizes
+ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 11/32768 files (9.1% non-contiguous), 5137/32768 blocks
++test_filesys: 11/32768 files (9.1% non-contiguous), 6161/32768 blocks
+ Exit status is 0
+ e2fsck -fn -N test_filesys $TMPFILE
+ Pass 1: Checking inodes, blocks, and sizes
+@@ -57,5 +59,5 @@ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 11/32768 files (9.1% non-contiguous), 5137/32768 blocks
++test_filesys: 11/32768 files (9.1% non-contiguous), 6161/32768 blocks
+ Exit status is 0
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/big-inodes-for-small-fs.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/big-inodes-for-small-fs.patch
deleted file mode 100644
index caeb560..0000000
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/big-inodes-for-small-fs.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Ensure "small" file systems also have the default inode size (256 bytes) so that
-can store 64-bit timestamps and work past 2038.
-
-The "small" type is any size >3MB and <512MB, which covers a lot of relatively
-small filesystems built by OE, especially when they're sized to fit the contents
-and expand to the storage on boot.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in
-index 01e35cf8..29f41dc0 100644
---- a/misc/mke2fs.conf.in
-+++ b/misc/mke2fs.conf.in
-@@ -16,7 +16,6 @@
- 	}
- 	small = {
- 		blocksize = 1024
--		inode_size = 128
- 		inode_ratio = 4096
- 	}
- 	floppy = {
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
index e8b2aaf..a4f9824 100644
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
+++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
@@ -1,4 +1,4 @@
-From 8957443bcbea43685c76eb3cbc5009f7fd529283 Mon Sep 17 00:00:00 2001
+From f1e161a48f74b46ae3c99921971c4b5ae8d587c9 Mon Sep 17 00:00:00 2001
 From: Jackie Huang <jackie.huang@windriver.com>
 Date: Wed, 10 Aug 2016 11:19:44 +0800
 Subject: [PATCH] Fix missing check for permission denied.
@@ -19,7 +19,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/support/profile.c b/lib/support/profile.c
-index 585ed595..810dd66b 100644
+index f54739e7..53ea68f1 100644
 --- a/lib/support/profile.c
 +++ b/lib/support/profile.c
 @@ -335,7 +335,7 @@ profile_init(const char * const *files, profile_t *ret_profile)
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
index 96eb7f2..41a4047 100644
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
+++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
@@ -1,4 +1,4 @@
-From 3b75308cc75adc249db6ca36e42fe93309b9a018 Mon Sep 17 00:00:00 2001
+From 550b5fbece84dde16ce9910c2cad390ea4a2f5d5 Mon Sep 17 00:00:00 2001
 From: Ross Burton <ross.burton@intel.com>
 Date: Mon, 23 Dec 2013 13:38:34 +0000
 Subject: [PATCH] e2fsprogs: silence debugfs
diff --git a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb
similarity index 94%
rename from poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb
rename to poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb
index 8cc046c..f42cefc 100644
--- a/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.2.bb
+++ b/poky/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb
@@ -4,17 +4,14 @@
            file://run-ptest \
            file://ptest.patch \
            file://mkdir_p.patch \
-           file://0001-lib-ext2fs-unix_io.c-do-unlock-on-error.patch \
-           file://0001-lib-ext2fs-unix_io.c-revert-parts-of-libext2fs-fix-p.patch \
+           file://0001-tests-u_direct_io-expect-correct-expected-output.patch \
            "
 
 SRC_URI:append:class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
                                 file://quiet-debugfs.patch \
-                                file://big-inodes-for-small-fs.patch \
 "
 
-
-SRCREV = "1eea0e2bd9a6760ebad834d5d2cf700fffe5ebe2"
+SRCREV = "849005eac51ea2097bd9e5f2b0adc16b53c5486d"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
 
 EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
diff --git a/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb b/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb
index 7a88c52..9ea4de8 100644
--- a/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb
+++ b/poky/meta/recipes-devtools/elfutils/elfutils_0.185.bb
@@ -32,6 +32,10 @@
            "
 SRC_URI[sha256sum] = "dc8d3e74ab209465e7f568e1b3bb9a5a142f8656e2b57d10049a73da2ae6b5a6"
 
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".2"
+
 inherit autotools gettext ptest pkgconfig
 
 EXTRA_OECONF = "--program-prefix=eu-"
@@ -42,14 +46,16 @@
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
 PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
 PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
 PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
 PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
 
-RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar"
+RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
 
 EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
 
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
+INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
 
 do_compile_ptest() {
 	cd ${B}/tests
diff --git a/poky/meta/recipes-devtools/gcc/gcc-multilib-config.inc b/poky/meta/recipes-devtools/gcc/gcc-multilib-config.inc
index e90580d..26bfed9 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-multilib-config.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-multilib-config.inc
@@ -31,7 +31,9 @@
                 '%s/*/linux64.h' % src_conf_dir,
                 '%s/aarch64/t-aarch64' % src_conf_dir,
                 '%s/aarch64/aarch64.h' % src_conf_dir,
+                '%s/aarch64/aarch64-linux.h' % src_conf_dir,
                 '%s/aarch64/aarch64-cores.def' % src_conf_dir,
+                '%s/arm/linux-eabi.h' % src_conf_dir,
                 '%s/*/linux.h' % src_conf_dir,
                 '%s/linux.h' % src_conf_dir)
 
@@ -102,6 +104,8 @@
                         r'\1' + wrap_libdir(libdir64) + r'\3'),
                     (r'^(#define\s*GLIBC_DYNAMIC_LINKER64\s*\"\S+\"\s*)(\S+)(\s*\"\S+\"\s*)(\S+)(\s*\".*\")$',
                         r'\1' + wrap_libdir(libdir64) + r'\3' + wrap_libdir(libdir64) + r'\5'),
+                    (r'^(#define\s*GLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdir32) + r'\3'),
                     (r'^(#define\s*GLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
                         r'\1' + wrap_libdir(libdirx32) + r'\3'),
                     (r'^(#define\s*GLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
@@ -112,8 +116,18 @@
                         r'\1' + wrap_libdir(libdir64) + r'\3'),
                     (r'^(#define\s*UCLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
                         r'\1' + wrap_libdir(libdirn32) + r'\3'),
+                    (r'^(#define\s*UCLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdirx32) + r'\3'),
                     (r'^(#define\s*UCLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
                         r'\1' + wrap_libdir(libdir32) + r'\3'),
+                    (r'^(#define\s*MUSL_DYNAMIC_LINKER32\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdir32) + r'\3'),
+                    (r'^(#define\s*MUSL_DYNAMIC_LINKER64\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdir64) + r'\3'),
+                    (r'^(#define\s*MUSL_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdirx32) + r'\3'),
+                    (r'^(#define\s*MUSL_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
+                        r'\1' + wrap_libdir(libdir32) + r'\3'),
                 ]
 
                 for (i, line) in enumerate(filelines):
@@ -138,15 +152,15 @@
     }
 
     gcc_header_config_files = {
-        'x86_64'    : ['gcc/config/i386/linux64.h'],
-        'i586'      : ['gcc/config/i386/linux64.h'],
-        'i686'      : ['gcc/config/i386/linux64.h'],
-        'mips'      : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
-        'mips64'    : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
-        'powerpc'   : ['gcc/config/rs6000/linux64.h'],
-        'powerpc64' : ['gcc/config/rs6000/linux64.h'],
-        'aarch64'   : ['gcc/config/aarch64/aarch64.h'],
-        'arm'       : ['gcc/config/aarch64/aarch64.h'],
+        'x86_64'    : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
+        'i586'      : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
+        'i686'      : ['gcc/config/linux.h', 'gcc/config/i386/linux64.h'],
+        'mips'      : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
+        'mips64'    : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
+        'powerpc'   : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
+        'powerpc64' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
+        'aarch64'   : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
+        'arm'       : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
     }
 
     libdir32 = 'SYSTEMLIBS_DIR'
diff --git a/poky/meta/recipes-devtools/git/git_2.32.0.bb b/poky/meta/recipes-devtools/git/git_2.32.0.bb
deleted file mode 100644
index f45737b..0000000
--- a/poky/meta/recipes-devtools/git/git_2.32.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
-                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
-                 "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.sha256sum] = "6038f06d396ba9dab2eee541c7db6e7f9f847f181ec62f3d8441893f8c469398"
-SRC_URI[manpages.sha256sum] = "b5533c40ea1688231c0e2df51cc0d1c0272e17fe78a45ba6e60cb8f61fa4a53c"
diff --git a/poky/meta/recipes-devtools/git/git_2.33.0.bb b/poky/meta/recipes-devtools/git/git_2.33.0.bb
new file mode 100644
index 0000000..f8d4dac
--- /dev/null
+++ b/poky/meta/recipes-devtools/git/git_2.33.0.bb
@@ -0,0 +1,9 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+                 "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.sha256sum] = "02d909d0bba560d3a1008bd00dd577621ffb57401b09175fab2bf6da0e9704ae"
+SRC_URI[manpages.sha256sum] = "ba9cd0f29a3632a3b78f8ed2389f0780aa6e8fcbe258259d7c584920d19ed1f7"
diff --git a/poky/meta/recipes-devtools/help2man/help2man_1.48.3.bb b/poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb
similarity index 88%
rename from poky/meta/recipes-devtools/help2man/help2man_1.48.3.bb
rename to poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb
index d24e6c4..cdc2056 100644
--- a/poky/meta/recipes-devtools/help2man/help2man_1.48.3.bb
+++ b/poky/meta/recipes-devtools/help2man/help2man_1.48.4.bb
@@ -6,7 +6,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "8361ff3c643fbd391064e97e5f54592ca28b880eaffbf566a68e0ad800d1a8ac"
+SRC_URI[sha256sum] = "937194af8e31e97467768ec2e3ce8d396bd1e32e8ea56df23f634485b5f14e09"
 
 inherit autotools
 
diff --git a/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb b/poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb
similarity index 87%
rename from poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb
rename to poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb
index 72392dd..8d68d68 100644
--- a/poky/meta/recipes-devtools/libedit/libedit_20210522-3.1.bb
+++ b/poky/meta/recipes-devtools/libedit/libedit_20210714-3.1.bb
@@ -13,7 +13,7 @@
 SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
            file://stdc-predef.patch \
           "
-SRC_URI[sha256sum] = "0220bc2047e927c0c1984ef5f7b4eb2a9469a5b7bf12ba573ca3b23ca02bbb6f"
+SRC_URI[sha256sum] = "3023b498ad593fd7745ae3b20abad546de506b67b8fbb5579637ca69ab82dbc9"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.6.bb b/poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb
similarity index 85%
rename from poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.6.bb
rename to poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb
index 4b7c76a..3798b93 100644
--- a/poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.6.bb
+++ b/poky/meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb
@@ -9,8 +9,7 @@
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \
           "
-SRC_URI[md5sum] = "71051de4c2c3ef67f66ce3bbb083cf43"
-SRC_URI[sha256sum] = "5fb26433b0f200ebfc2e6effb7e2e5131185862a2ea9a621a8e7f3f725a72b08"
+SRC_URI[sha256sum] = "086451c7e7c582862cbd6c60d87bb6d9d63c4b65321dba85fa71766382f7ec6d"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/"
 UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
diff --git a/poky/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch b/poky/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
index c78f73d..8041b13 100644
--- a/poky/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
+++ b/poky/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
@@ -1,4 +1,4 @@
-From bd2ec723326b6d57350da73b444dd43e923011e8 Mon Sep 17 00:00:00 2001
+From dc11f3e7bdfa524a3e395a0f9d5e035dbc40c047 Mon Sep 17 00:00:00 2001
 From: Ed Bartosh <ed.bartosh@linux.intel.com>
 Date: Tue, 13 Jun 2017 14:55:52 +0300
 Subject: [PATCH] Disabled reading host configs.
diff --git a/poky/meta/recipes-devtools/mtools/mtools_4.0.34.bb b/poky/meta/recipes-devtools/mtools/mtools_4.0.35.bb
similarity index 93%
rename from poky/meta/recipes-devtools/mtools/mtools_4.0.34.bb
rename to poky/meta/recipes-devtools/mtools/mtools_4.0.35.bb
index e64015c..61e98bb 100644
--- a/poky/meta/recipes-devtools/mtools/mtools_4.0.34.bb
+++ b/poky/meta/recipes-devtools/mtools/mtools_4.0.35.bb
@@ -24,7 +24,7 @@
 	glibc-gconv-ibm866 \
 	glibc-gconv-ibm869 \
 	"
-SRC_URI[sha256sum] = "ada543eb1b0ffe5440d4ee42634309ea1e286d7ebb80c99ba50db5cb2c360cab"
+SRC_URI[sha256sum] = "34769e173751d2f0d891a08c76c80427e929b8ee43438019b8666cc3d7a44749"
 
 SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \
            file://mtools-makeinfo.patch \
diff --git a/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch b/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch
deleted file mode 100644
index ba35ec6..0000000
--- a/poky/meta/recipes-devtools/patchelf/patchelf/6edec83653ce1b5fc201ff6db93b966394766814.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 6edec83653ce1b5fc201ff6db93b966394766814 Mon Sep 17 00:00:00 2001
-From: rmnull <rmnull@users.noreply.github.com>
-Date: Tue, 18 Aug 2020 20:22:52 +0530
-Subject: [PATCH] mark phdrs synced with sections, avoid rechecking it when
- syncing note sections to segments.
-
-This also serves as a bug fix when a previously synced note segment
-overlaps with another section and creates a false alarm.
-
-Upstream-Status: Backport
----
- src/patchelf.cc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/patchelf.cc b/src/patchelf.cc
-index 05ec793..622f0b6 100644
---- a/src/patchelf.cc
-+++ b/src/patchelf.cc
-@@ -669,6 +669,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,
-             memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size));
-     }
- 
-+    std::set<unsigned int> noted_phdrs = {};
-     for (auto & i : replacedSections) {
-         std::string sectionName = i.first;
-         auto & shdr = findSection(sectionName);
-@@ -721,7 +722,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,
-                 shdr.sh_addralign = orig_shdr.sh_addralign;
- 
-             for (unsigned int j = 0; j < phdrs.size(); ++j)
--                if (rdi(phdrs[j].p_type) == PT_NOTE) {
-+                if (rdi(phdrs[j].p_type) == PT_NOTE && noted_phdrs.find(j) == noted_phdrs.end()) {
-                     Elf_Off p_start = rdi(phdrs[j].p_offset);
-                     Elf_Off p_end = p_start + rdi(phdrs[j].p_filesz);
-                     Elf_Off s_start = rdi(orig_shdr.sh_offset);
-@@ -739,6 +740,8 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,
-                     phdrs[j].p_offset = shdr.sh_offset;
-                     phdrs[j].p_vaddr = phdrs[j].p_paddr = shdr.sh_addr;
-                     phdrs[j].p_filesz = phdrs[j].p_memsz = shdr.sh_size;
-+
-+                    noted_phdrs.insert(j);
-                 }
-         }
- 
diff --git a/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch b/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
deleted file mode 100644
index a06876e..0000000
--- a/poky/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-If a binary has multiple SHT_NOTE sections and corresponding PT_NOTE
-headers, we can see the error:
-
-patchelf: cannot normalize PT_NOTE segment: non-contiguous SHT_NOTE sections
-
-if the SHT_NOTE sections aren't sized to end on aligned boundaries. An example
-would be a binary with:
-
-  [ 2] .note.ABI-tag     NOTE             00000000000002f4  000002f4
-       0000000000000020  0000000000000000   A       0     0     4
-  [ 3] .note.gnu.propert NOTE             0000000000000318  00000318
-       0000000000000030  0000000000000000   A       0     0     8
-  [ 4] .note.gnu.build-i NOTE             0000000000000348  00000348
-       0000000000000024  0000000000000000   A       0     0     4
-
-  NOTE           0x0000000000000318 0x0000000000000318 0x0000000000000318
-                 0x0000000000000030 0x0000000000000030  R      0x8
-  NOTE           0x00000000000002f4 0x00000000000002f4 0x00000000000002f4
-                 0x0000000000000078 0x0000000000000074  R      0x4
-
-since the PT_NOTE section at 2f4 covers [2] and [3] but the code
-calclates curr_off should be 314, not the 318 in the binary. This
-is an alignment issue.
-
-To fix this, we need to round curr_off to the next section alignment.
-
-Upstream-Status: Submitted [https://github.com/NixOS/patchelf/pull/274]
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: git/src/patchelf.cc
-===================================================================
---- git.orig/src/patchelf.cc
-+++ git/src/patchelf.cc
-@@ -1010,8 +1010,9 @@ void ElfFile<ElfFileParamNames>::normali
-             size_t size = 0;
-             for (const auto & shdr : shdrs) {
-                 if (rdi(shdr.sh_type) != SHT_NOTE) continue;
--                if (rdi(shdr.sh_offset) != curr_off) continue;
-+                if (rdi(shdr.sh_offset) != roundUp(curr_off, rdi(shdr.sh_addralign))) continue;
-                 size = rdi(shdr.sh_size);
-+                curr_off = roundUp(curr_off, rdi(shdr.sh_addralign));
-                 break;
-             }
-             if (size == 0)
diff --git a/poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch b/poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
index bf721c1..63080a4 100644
--- a/poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
+++ b/poky/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
@@ -1,4 +1,4 @@
-From 7f1fd10cfebd5ea2f3e1938abe1bd1c4828164a7 Mon Sep 17 00:00:00 2001
+From 682fb48c137b687477008b68863c2a0b73ed47d1 Mon Sep 17 00:00:00 2001
 From: Fabio Berton <fabio.berton@ossystems.com.br>
 Date: Fri, 9 Sep 2016 16:00:42 -0300
 Subject: [PATCH] handle read-only files
@@ -14,13 +14,13 @@
  src/patchelf.cc | 16 +++++++++++++++-
  1 file changed, 15 insertions(+), 1 deletion(-)
 
-Index: git/src/patchelf.cc
-===================================================================
---- git.orig/src/patchelf.cc
-+++ git/src/patchelf.cc
-@@ -499,9 +499,19 @@ void ElfFile<ElfFileParamNames>::sortShd
+diff --git a/src/patchelf.cc b/src/patchelf.cc
+index fd1e7b7..a941da1 100644
+--- a/src/patchelf.cc
++++ b/src/patchelf.cc
+@@ -527,9 +527,19 @@ void ElfFile<ElfFileParamNames>::sortShdrs()
  
- static void writeFile(std::string fileName, FileContents contents)
+ static void writeFile(const std::string & fileName, const FileContents & contents)
  {
 +    struct stat st;
 +    int fd;
@@ -39,7 +39,7 @@
      if (fd == -1)
          error("open");
  
-@@ -515,6 +525,10 @@ static void writeFile(std::string fileNa
+@@ -543,6 +553,10 @@ static void writeFile(const std::string & fileName, const FileContents & content
  
      if (close(fd) != 0)
          error("close");
diff --git a/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb b/poky/meta/recipes-devtools/patchelf/patchelf_0.13.bb
similarity index 76%
rename from poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb
rename to poky/meta/recipes-devtools/patchelf/patchelf_0.13.bb
index 7c97ea0..1b0561b 100644
--- a/poky/meta/recipes-devtools/patchelf/patchelf_0.12.bb
+++ b/poky/meta/recipes-devtools/patchelf/patchelf_0.13.bb
@@ -6,10 +6,8 @@
 
 SRC_URI = "git://github.com/NixOS/patchelf;protocol=https \
            file://handle-read-only-files.patch \
-           file://6edec83653ce1b5fc201ff6db93b966394766814.patch \
-           file://alignmentfix.patch \
            "
-SRCREV = "8d3a16e97294e3c5521c61b4c8835499c9918264"
+SRCREV = "a949ff23315bbb5863627c4655fe216ecbf341a2"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb
similarity index 96%
rename from poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb
rename to poky/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb
index 04991b1..29cf4a6 100644
--- a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.4.bb
+++ b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb
@@ -20,7 +20,7 @@
     file://pkg-config-native.in \
     file://pkg-config-esdk.in \
 "
-SRC_URI[sha256sum] = "d73f32c248a4591139a6b17777c80d4deab6b414ec2b3d21d0a24be348c476ab"
+SRC_URI[sha256sum] = "ef9c7e61822b7cb8356e6e9e1dca58d9556f3200d78acab35e4347e9d4c2bbaf"
 
 inherit autotools
 
diff --git a/poky/meta/recipes-devtools/prelink/prelink_git.bb b/poky/meta/recipes-devtools/prelink/prelink_git.bb
index 78d4c71..24713b6 100644
--- a/poky/meta/recipes-devtools/prelink/prelink_git.bb
+++ b/poky/meta/recipes-devtools/prelink/prelink_git.bb
@@ -48,9 +48,11 @@
 
 BBCLASSEXTEND = "native"
 
-EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \
+EXTRA_OECONF = "--with-pkgversion=${PV}-${PR} \
 	--with-bugurl=http://bugzilla.yoctoproject.org/"
 
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
 
 #
 # For target prelink we need to ensure paths match the lib path layout
diff --git a/poky/meta/recipes-devtools/pseudo/files/build-oldlibc b/poky/meta/recipes-devtools/pseudo/files/build-oldlibc
new file mode 100755
index 0000000..85c438d
--- /dev/null
+++ b/poky/meta/recipes-devtools/pseudo/files/build-oldlibc
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Script to re-generate pseudo-prebuilt-2.33.tar.xz
+#
+# Copyright (C) 2021 Richard Purdie
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+for i in x86_64 aarch64 i686; do
+    if [ ! -e $i-nativesdk-libc.tar.xz ]; then
+        wget http://downloads.yoctoproject.org/releases/uninative/3.2/$i-nativesdk-libc.tar.xz
+    fi
+    tar -xf $i-nativesdk-libc.tar.xz --wildcards \*/lib/libpthread\* \*/lib/libdl\*
+    cd $i-linux/lib
+    ln -s libdl.so.2 libdl.so
+    ln -s libpthread.so.0 libpthread.so
+    cd ../..
+done
+tar -cJf pseudo-prebuilt-2.33.tar.xz *-linux
\ No newline at end of file
diff --git a/poky/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch b/poky/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch
new file mode 100644
index 0000000..c453b5f
--- /dev/null
+++ b/poky/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch
@@ -0,0 +1,57 @@
+If we link against a newer glibc 2.34 and then try and our LD_PRELOAD is run against a
+binary on a host with an older libc, we see symbol errors since in glibc 2.34, pthread 
+and dl are merged into libc itself.
+
+We need to use the older form of linking so use glibc binaries from an older release
+to force this. We only use minimal symbols from these anyway.
+
+pthread_atfork is problematic, particularly on arm so use the internal glibc routine
+it maps too. This was always present in the main libc from 2.3.2 onwards.
+
+Yes this is horrible. Better solutions welcome.
+
+There is more info in the bug: [YOCTO #14521]
+
+Upstream-Status: Inappropriate [this patch is native and nativesdk]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Tweak library search order, make prebuilt lib ahead of recipe lib
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile.in       | 2 +-
+ pseudo_wrappers.c | 5 ++++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -120,7 +120,7 @@ $(PSEUDODB): pseudodb.o $(SHOBJS) $(DBOBJS) pseudo_ipc.o | $(BIN)
+ libpseudo: $(LIBPSEUDO)
+ 
+ $(LIBPSEUDO): $(WRAPOBJS) pseudo_client.o pseudo_ipc.o $(SHOBJS) | $(LIB)
+-	$(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
++	$(CC) $(CFLAGS)  -Lprebuilt/$(shell uname -m)-linux/lib/ $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
+ 		pseudo_client.o pseudo_ipc.o \
+ 		$(WRAPOBJS) $(SHOBJS) $(LDFLAGS) $(CLIENT_LDFLAGS)
+ 
+diff --git a/pseudo_wrappers.c b/pseudo_wrappers.c
+--- a/pseudo_wrappers.c
++++ b/pseudo_wrappers.c
+@@ -100,10 +100,13 @@ static void libpseudo_atfork_child(void)
+ 	pseudo_mutex_holder = 0;
+ }
+ 
++extern void *__dso_handle;
++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
++
+ static void
+ _libpseudo_init(void) {
+ 	if (!_libpseudo_initted)
+-		pthread_atfork(NULL, NULL, libpseudo_atfork_child);
++		__register_atfork (NULL, NULL, libpseudo_atfork_child, &__dso_handle == NULL ? NULL : __dso_handle);
+ 
+ 	pseudo_getlock();
+ 	pseudo_antimagic();
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-devtools/pseudo/pseudo_git.bb b/poky/meta/recipes-devtools/pseudo/pseudo_git.bb
index dacaef1..328177c 100644
--- a/poky/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/poky/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -5,6 +5,13 @@
            file://fallback-passwd \
            file://fallback-group \
            "
+SRC_URI:append:class-native = " \
+    http://downloads.yoctoproject.org/mirror/sources/pseudo-prebuilt-2.33.tar.xz;subdir=git/prebuilt;name=prebuilt \
+    file://older-glibc-symbols.patch"
+SRC_URI:append:class-nativesdk = " \
+    http://downloads.yoctoproject.org/mirror/sources/pseudo-prebuilt-2.33.tar.xz;subdir=git/prebuilt;name=prebuilt \
+    file://older-glibc-symbols.patch"
+SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
 
 SRCREV = "b988b0a6b8afd8d459bc9a2528e834f63a3d59b2"
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.0.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb
similarity index 95%
rename from poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.0.bb
rename to poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb
index a4d222c..2d4c62a 100644
--- a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.0.bb
+++ b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.21.2.bb
@@ -12,7 +12,7 @@
            file://0001-numpy-core-Define-RISCV-32-support.patch \
            file://run-ptest \
 "
-SRC_URI[sha256sum] = "b662c841b29848c04d9134f31dbaa7d4c8e673f45bb3a5f28d02f49c424d558a"
+SRC_URI[sha256sum] = "76af194fbc117934ec5bbe2ff15177adbd05aeed23f18ee209ed88edcd777e05"
 
 UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
index 1082fe7..2b1f899 100644
--- a/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
+++ b/poky/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -1,4 +1,4 @@
-From f6afc18e08a6c428ce8becd114c535a6840f1b9f Mon Sep 17 00:00:00 2001
+From 4e2c87105884af6dfc3bc9f8c65b199ecc3b5186 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Tue, 17 Jul 2018 10:13:38 +0800
 Subject: [PATCH] conditionally do not fetch code by easy_install
diff --git a/poky/meta/recipes-devtools/python/python-cython.inc b/poky/meta/recipes-devtools/python/python-cython.inc
index e3f14fc..5a8ec2a 100644
--- a/poky/meta/recipes-devtools/python/python-cython.inc
+++ b/poky/meta/recipes-devtools/python/python-cython.inc
@@ -9,7 +9,7 @@
 PYPI_PACKAGE = "Cython"
 BBCLASSEXTEND = "native nativesdk"
 
-SRC_URI[sha256sum] = "6a0d31452f0245daacb14c979c77e093eb1a546c760816b5eed0047686baad8e"
+SRC_URI[sha256sum] = "cdf04d07c3600860e8c2ebaad4e8f52ac3feb212453c1764a49ac08c827e8443"
 UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar"
 
 inherit pypi
diff --git a/poky/meta/recipes-devtools/python/python3-cython_0.29.23.bb b/poky/meta/recipes-devtools/python/python3-cython_0.29.24.bb
similarity index 99%
rename from poky/meta/recipes-devtools/python/python3-cython_0.29.23.bb
rename to poky/meta/recipes-devtools/python/python3-cython_0.29.24.bb
index 296fb39..b1d21bd 100644
--- a/poky/meta/recipes-devtools/python/python3-cython_0.29.23.bb
+++ b/poky/meta/recipes-devtools/python/python3-cython_0.29.24.bb
@@ -34,3 +34,4 @@
 		fi
 	done
 }
+
diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.18.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.20.bb
similarity index 91%
rename from poky/meta/recipes-devtools/python/python3-git_3.1.18.bb
rename to poky/meta/recipes-devtools/python/python3-git_3.1.20.bb
index d1c50d4..2c20d39 100644
--- a/poky/meta/recipes-devtools/python/python3-git_3.1.18.bb
+++ b/poky/meta/recipes-devtools/python/python3-git_3.1.20.bb
@@ -12,7 +12,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "b838a895977b45ab6f0cc926a9045c8d1c44e2b653c1fcc39fe91f42c6e8f05b"
+SRC_URI[sha256sum] = "df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519"
 
 DEPENDS += " ${PYTHON_PN}-gitdb"
 
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis/run-ptest b/poky/meta/recipes-devtools/python/python3-hypothesis/run-ptest
new file mode 100644
index 0000000..8d44d7c
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Upstream "fast" tests take about 5 minutes and currently do not run cleanly
+# (tests/cover and tests/pytest)
+# https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python/tests
+# https://github.com/HypothesisWorks/hypothesis/blob/master/hypothesis-python/scripts/basic-test.sh#L18
+#
+# Instead we run two test suites imported from examples/
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py b/poky/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
new file mode 100644
index 0000000..21267c4
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
@@ -0,0 +1,135 @@
+# This file is part of Hypothesis, which may be found at
+# https://github.com/HypothesisWorks/hypothesis/
+#
+# Most of this work is copyright (C) 2013-2021 David R. MacIver
+# (david@drmaciver.com), but it contains contributions by others. See
+# CONTRIBUTING.rst for a full list of people who may hold copyright, and
+# consult the git log if you need to determine who owns an individual
+# contribution.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public License,
+# v. 2.0. If a copy of the MPL was not distributed with this file, You can
+# obtain one at https://mozilla.org/MPL/2.0/.
+#
+# END HEADER
+#
+# SPDX-License-Identifier: MPL-2.0
+
+"""This file demonstrates testing a binary search.
+
+It's a useful example because the result of the binary search is so clearly
+determined by the invariants it must satisfy, so we can simply test for those
+invariants.
+
+It also demonstrates the useful testing technique of testing how the answer
+should change (or not) in response to movements in the underlying data.
+"""
+
+from hypothesis import given, strategies as st
+
+
+def binary_search(ls, v):
+    """Take a list ls and a value v such that ls is sorted and v is comparable
+    with the elements of ls.
+
+    Return an index i such that 0 <= i <= len(v) with the properties:
+
+    1. ls.insert(i, v) is sorted
+    2. ls.insert(j, v) is not sorted for j < i
+    """
+    # Without this check we will get an index error on the next line when the
+    # list is empty.
+    if not ls:
+        return 0
+
+    # Without this check we will miss the case where the insertion point should
+    # be zero: The invariant we maintain in the next section is that lo is
+    # always strictly lower than the insertion point.
+    if v <= ls[0]:
+        return 0
+
+    # Invariant: There is no insertion point i with i <= lo
+    lo = 0
+
+    # Invariant: There is an insertion point i with i <= hi
+    hi = len(ls)
+    while lo + 1 < hi:
+        mid = (lo + hi) // 2
+        if v > ls[mid]:
+            # Inserting v anywhere below mid would result in an unsorted list
+            # because it's > the value at mid. Therefore mid is a valid new lo
+            lo = mid
+        # Uncommenting the following lines will cause this to return a valid
+        # insertion point which is not always minimal.
+        # elif v == ls[mid]:
+        #   return mid
+        else:
+            # Either v == ls[mid] in which case mid is a valid insertion point
+            # or v < ls[mid], in which case all valid insertion points must be
+            # < hi. Either way, mid is a valid new hi.
+            hi = mid
+    assert lo + 1 == hi
+    # We now know that there is a valid insertion point <= hi and there is no
+    # valid insertion point < hi because hi - 1 is lo. Therefore hi is the
+    # answer we were seeking
+    return hi
+
+
+def is_sorted(ls):
+    """Is this list sorted?"""
+    for i in range(len(ls) - 1):
+        if ls[i] > ls[i + 1]:
+            return False
+    return True
+
+
+Values = st.integers()
+
+# We generate arbitrary lists and turn this into generating sorting lists
+# by just sorting them.
+SortedLists = st.lists(Values).map(sorted)
+
+# We could also do it this way, but that would be a bad idea:
+# SortedLists = st.lists(Values).filter(is_sorted)
+# The problem is that Hypothesis will only generate long sorted lists with very
+# low probability, so we are much better off post-processing values into the
+# form we want than filtering them out.
+
+
+@given(ls=SortedLists, v=Values)
+def test_insert_is_sorted(ls, v):
+    """We test the first invariant: binary_search should return an index such
+    that inserting the value provided at that index would result in a sorted
+    set."""
+    ls.insert(binary_search(ls, v), v)
+    assert is_sorted(ls)
+
+
+@given(ls=SortedLists, v=Values)
+def test_is_minimal(ls, v):
+    """We test the second invariant: binary_search should return an index such
+    that no smaller index is a valid insertion point for v."""
+    for i in range(binary_search(ls, v)):
+        ls2 = list(ls)
+        ls2.insert(i, v)
+        assert not is_sorted(ls2)
+
+
+@given(ls=SortedLists, v=Values)
+def test_inserts_into_same_place_twice(ls, v):
+    """In this we test a *consequence* of the second invariant: When we insert
+    a value into a list twice, the insertion point should be the same both
+    times. This is because we know that v is > the previous element and == the
+    next element.
+
+    In theory if the former passes, this should always pass. In practice,
+    failures are detected by this test with much higher probability because it
+    deliberately puts the data into a shape that is likely to trigger a
+    failure.
+
+    This is an instance of a good general category of test: Testing how the
+    function moves in responses to changes in the underlying data.
+    """
+    i = binary_search(ls, v)
+    ls.insert(i, v)
+    assert binary_search(ls, v) == i
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis/test_rle.py b/poky/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
new file mode 100644
index 0000000..4d61886
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
@@ -0,0 +1,101 @@
+# This file is part of Hypothesis, which may be found at
+# https://github.com/HypothesisWorks/hypothesis/
+#
+# Most of this work is copyright (C) 2013-2021 David R. MacIver
+# (david@drmaciver.com), but it contains contributions by others. See
+# CONTRIBUTING.rst for a full list of people who may hold copyright, and
+# consult the git log if you need to determine who owns an individual
+# contribution.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public License,
+# v. 2.0. If a copy of the MPL was not distributed with this file, You can
+# obtain one at https://mozilla.org/MPL/2.0/.
+#
+# END HEADER
+#
+# SPDX-License-Identifier: MPL-2.0
+
+"""This example demonstrates testing a run length encoding scheme. That is, we
+take a sequence and represent it by a shorter sequence where each 'run' of
+consecutive equal elements is represented as a single element plus a count. So
+e.g.
+
+[1, 1, 1, 1, 2, 1] is represented as [[1, 4], [2, 1], [1, 1]]
+
+This demonstrates the useful decode(encode(x)) == x invariant that is often
+a fruitful source of testing with Hypothesis.
+
+It also has an example of testing invariants in response to changes in the
+underlying data.
+"""
+
+from hypothesis import assume, given, strategies as st
+
+
+def run_length_encode(seq):
+    """Encode a sequence as a new run-length encoded sequence."""
+    if not seq:
+        return []
+    # By starting off the count at zero we simplify the iteration logic
+    # slightly.
+    result = [[seq[0], 0]]
+    for s in seq:
+        if (
+            # If you uncomment this line this branch will be skipped and we'll
+            # always append a new run of length 1. Note which tests fail.
+            # False and
+            s
+            == result[-1][0]
+            # Try uncommenting this line and see what problems occur:
+            # and result[-1][-1] < 2
+        ):
+            result[-1][1] += 1
+        else:
+            result.append([s, 1])
+    return result
+
+
+def run_length_decode(seq):
+    """Take a previously encoded sequence and reconstruct the original from
+    it."""
+    result = []
+    for s, i in seq:
+        for _ in range(i):
+            result.append(s)
+    return result
+
+
+# We use lists of a type that should have a relatively high duplication rate,
+# otherwise we'd almost never get any runs.
+Lists = st.lists(st.integers(0, 10))
+
+
+@given(Lists)
+def test_decodes_to_starting_sequence(ls):
+    """If we encode a sequence and then decode the result, we should get the
+    original sequence back.
+
+    Otherwise we've done something very wrong.
+    """
+    assert run_length_decode(run_length_encode(ls)) == ls
+
+
+@given(Lists, st.data())
+def test_duplicating_an_element_does_not_increase_length(ls, data):
+    """The previous test could be passed by simply returning the input sequence
+    so we need something that tests the compression property of our encoding.
+
+    In this test we deliberately introduce or extend a run and assert
+    that this does not increase the length of our encoding, because they
+    should be part of the same run in the final result.
+    """
+    # We use assume to get a valid index into the list. We could also have used
+    # e.g. flatmap, but this is relatively straightforward and will tend to
+    # perform better.
+    assume(ls)
+    i = data.draw(st.integers(0, len(ls) - 1))
+    ls2 = list(ls)
+    # duplicating the value at i right next to it guarantees they are part of
+    # the same run in the resulting compression.
+    ls2.insert(i, ls2[i])
+    assert len(run_length_encode(ls2)) == len(run_length_encode(ls))
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.14.5.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.14.5.bb
deleted file mode 100644
index 0460a43..0000000
--- a/poky/meta/recipes-devtools/python/python3-hypothesis_6.14.5.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "A library for property-based testing"
-HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
-
-PYPI_PACKAGE = "hypothesis"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "0563b9711fd9bf478cb591580a575c369d2c396f283efa85d0f9a75b26db65b5"
-
-RDEPENDS:${PN} += " \
-    python3-attrs \
-    python3-compression \
-    python3-core \
-    python3-json \
-    python3-sortedcontainers \
-    python3-statistics \
-    python3-unittest \
-    "
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb
new file mode 100644
index 0000000..1ea6bb5
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis_6.15.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "A library for property-based testing"
+HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
+
+PYPI_PACKAGE = "hypothesis"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+    file://run-ptest \
+    file://test_binary_search.py \
+    file://test_rle.py \
+    "
+
+SRC_URI[sha256sum] = "10699f595eebb9410fd902908aa13aece19be5c437b405092be34f60f69f7999"
+
+RDEPENDS:${PN} += " \
+    python3-attrs \
+    python3-compression \
+    python3-core \
+    python3-json \
+    python3-sortedcontainers \
+    python3-statistics \
+    python3-unittest \
+    "
+
+RDEPENDS:${PN}-ptest += " \
+    ${PYTHON_PN}-pytest \
+    "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/examples
+    install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/
+    install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.3.bb b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb
similarity index 87%
rename from poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.3.bb
rename to poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb
index 198138a..e5aad99 100644
--- a/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.3.bb
+++ b/poky/meta/recipes-devtools/python/python3-importlib-metadata_4.6.4.bb
@@ -8,7 +8,7 @@
 PYPI_PACKAGE = "importlib_metadata"
 UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
 
-SRC_URI[sha256sum] = "0645585859e9a6689c523927a5032f2ba5919f1f7d0e84bd4533312320de1ff9"
+SRC_URI[sha256sum] = "7b30a78db2922d78a6f47fb30683156a14f3c6aa5cc23f77cc8967e9ab2d002f"
 
 S = "${WORKDIR}/importlib_metadata-${PV}"
 
diff --git a/poky/meta/recipes-devtools/python/python3-mako_1.1.4.bb b/poky/meta/recipes-devtools/python/python3-mako_1.1.5.bb
similarity index 82%
rename from poky/meta/recipes-devtools/python/python3-mako_1.1.4.bb
rename to poky/meta/recipes-devtools/python/python3-mako_1.1.5.bb
index 21ce33b..f8be44a 100644
--- a/poky/meta/recipes-devtools/python/python3-mako_1.1.4.bb
+++ b/poky/meta/recipes-devtools/python/python3-mako_1.1.5.bb
@@ -8,7 +8,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab"
+SRC_URI[sha256sum] = "169fa52af22a91900d852e937400e79f535496191c63712e3b9fda5a9bed6fc3"
 
 RDEPENDS:${PN} = "${PYTHON_PN}-html \
                   ${PYTHON_PN}-netclient \
diff --git a/poky/meta/recipes-devtools/python/python3-pip_21.2.1.bb b/poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb
similarity index 88%
rename from poky/meta/recipes-devtools/python/python3-pip_21.2.1.bb
rename to poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb
index f16f1e2..1f0f707 100644
--- a/poky/meta/recipes-devtools/python/python3-pip_21.2.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-pip_21.2.4.bb
@@ -10,7 +10,7 @@
 
 SRC_URI += "file://0001-change-shebang-to-python3.patch"
 
-SRC_URI[sha256sum] = "303a82aaa24cdc01f7ebbd1afc7d1b871a4aa0a88bb5bedef1fa86a3ee44ca0a"
+SRC_URI[sha256sum] = "0eb8a1516c3d138ae8689c0c1a60fde7143310832f9dc77e11d8a4bc62de193b"
 
 do_install:append() {
     # Install as pip3 and leave pip2 as default
diff --git a/poky/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb b/poky/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb
similarity index 80%
rename from poky/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb
rename to poky/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb
index 479c10f..14a7ccb 100644
--- a/poky/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb
@@ -3,8 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
 
-SRC_URI[md5sum] = "7f610e28b8b34487336b585a3dfb803d"
-SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"
+SRC_URI[sha256sum] = "4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
 RDEPENDS:${PN} += "${PYTHON_PN}-importlib-metadata \
diff --git a/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb b/poky/meta/recipes-devtools/python/python3-pygments_2.10.0.bb
similarity index 82%
rename from poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb
rename to poky/meta/recipes-devtools/python/python3-pygments_2.10.0.bb
index 7fedcb5..3c1b5d1 100644
--- a/poky/meta/recipes-devtools/python/python3-pygments_2.9.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-pygments_2.10.0.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc"
 
 inherit setuptools3
-SRC_URI[sha256sum] = "a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f"
+SRC_URI[sha256sum] = "f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"
 
 DEPENDS += "\
             ${PYTHON_PN} \
diff --git a/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch b/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch
new file mode 100644
index 0000000..175ef98
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-pytest/0001-Allow-pluggy-1.0.patch
@@ -0,0 +1,65 @@
+From 637d4400d2bab0457688f950ea18cc4a04147c11 Mon Sep 17 00:00:00 2001
+From: Bruno Oliveira <nicoddemus@gmail.com>
+Date: Thu, 26 Aug 2021 09:26:51 -0300
+Subject: [PATCH] Allow pluggy >=1.0
+
+Now that pluggy 1.0 has been released, we can allow pluggy 1.0 with new pytest versions.
+
+Upstream-Status: Backport [commit: fbba504]
+
+Modify to use toml and not tomli. We will create a
+python3-tomli recipe when we do an python3-pytest
+upgrade.
+
+Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
+---
+ setup.cfg | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/setup.cfg b/setup.cfg
+index f919a9491..a8aeab813 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -32,24 +32,24 @@ project_urls =
+ 	Tracker=https://github.com/pytest-dev/pytest/issues
+ 
+ [options]
+-packages = 
+-	_pytest
+-	_pytest._code
+-	_pytest._io
+-	_pytest.assertion
+-	_pytest.config
+-	_pytest.mark
+-	pytest
+-install_requires = 
+-	attrs>=19.2.0
+-	iniconfig
+-	packaging
+-	pluggy>=0.12,<1.0.0a1
+-	py>=1.8.2
+-	toml
+-	atomicwrites>=1.0;sys_platform=="win32"
+-	colorama;sys_platform=="win32"
+-	importlib-metadata>=0.12;python_version<"3.8"
++packages =
++    _pytest
++    _pytest._code
++    _pytest._io
++    _pytest.assertion
++    _pytest.config
++    _pytest.mark
++    pytest
++install_requires =
++    attrs>=19.2.0
++    iniconfig
++    packaging
++    pluggy>=0.12,<2.0
++    py>=1.8.2
++    toml
++    atomicwrites>=1.0;sys_platform=="win32"
++    colorama;sys_platform=="win32"
++    importlib-metadata>=0.12;python_version<"3.8"
+ python_requires = >=3.6
+ package_dir = 
+ 	=src
diff --git a/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb
index f0fd30a..2e90aca 100644
--- a/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb
+++ b/poky/meta/recipes-devtools/python/python3-pytest_6.2.4.bb
@@ -5,6 +5,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
 
+SRC_URI += "file://0001-Allow-pluggy-1.0.patch"
 SRC_URI[sha256sum] = "50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"
 
 DEPENDS = "python3-setuptools-scm-native"
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_57.1.0.bb b/poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb
similarity index 94%
rename from poky/meta/recipes-devtools/python/python3-setuptools_57.1.0.bb
rename to poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb
index 63c0fe9..ae45936 100644
--- a/poky/meta/recipes-devtools/python/python3-setuptools_57.1.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-setuptools_57.4.0.bb
@@ -10,7 +10,7 @@
 
 SRC_URI += "file://0001-change-shebang-to-python3.patch"
 
-SRC_URI[sha256sum] = "cfca9c97e7eebbc8abe18d5e5e962a08dcad55bb63afddd82d681de4d22a597b"
+SRC_URI[sha256sum] = "6bac238ffdf24e8806c61440e755192470352850f3419a52f26ffe0a1a64f465"
 
 DEPENDS += "${PYTHON_PN}"
 
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index 0bbc4b1..76e8da1 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -39,6 +39,7 @@
            file://0001-linux-user-Tag-vsx-with-ieee128-fpbits.patch \
            file://CVE-2021-3527-1.patch \
            file://CVE-2021-3527-2.patch \
+           file://CVE-2021-3682.patch \
            "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch
new file mode 100644
index 0000000..50a4923
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/CVE-2021-3682.patch
@@ -0,0 +1,41 @@
+From 5e796671e6b8d5de4b0b423dce1b3eba144a92c9 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Thu, 22 Jul 2021 09:27:56 +0200
+Subject: [PATCH] usbredir: fix free call
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+data might point into the middle of a larger buffer, there is a separate
+free_on_destroy pointer passed into bufp_alloc() to handle that.  It is
+only used in the normal workflow though, not when dropping packets due
+to the queue being full.  Fix that.
+
+Resolves: https://gitlab.com/qemu-project/qemu/-/issues/491
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
+Message-Id: <20210722072756.647673-1-kraxel@redhat.com>
+
+CVE: CVE-2021-3682
+Upstream-Status: Backport [5e796671e6b8d5de4b0b423dce1b3eba144a92c9]
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ hw/usb/redirect.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
+index 4ec9326e05..1ec909a63a 100644
+--- a/hw/usb/redirect.c
++++ b/hw/usb/redirect.c
+@@ -476,7 +476,7 @@ static int bufp_alloc(USBRedirDevice *dev, uint8_t *data, uint16_t len,
+     if (dev->endpoint[EP2I(ep)].bufpq_dropping_packets) {
+         if (dev->endpoint[EP2I(ep)].bufpq_size >
+                 dev->endpoint[EP2I(ep)].bufpq_target_size) {
+-            free(data);
++            free(free_on_destroy);
+             return -1;
+         }
+         dev->endpoint[EP2I(ep)].bufpq_dropping_packets = 0;
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-devtools/rust/README-rust.md b/poky/meta/recipes-devtools/rust/README-rust.md
new file mode 100644
index 0000000..b87637c
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/README-rust.md
@@ -0,0 +1,58 @@
+## Introduction
+
+This provides the Rust compiler, tools for building packages (cargo), and 
+a few example projects.
+
+## What works:
+
+ - Building `rust-native` and `cargo-native`
+ - Building Rust based projects with Cargo for the TARGET
+   - e.g. `rustfmt` which is used by the CI system
+ - `-buildsdk` and `-crosssdk` packages
+
+## What doesn't:
+
+ - Using anything but x86_64 or arm64 as the build environment
+ - rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
+
+## What's untested:
+
+ - cargo (built for target)
+
+## Building a rust package
+
+When building a rust package in bitbake, it's usually easiest to build with
+cargo using cargo.bbclass.  If the package already has a Cargo.toml file (most
+rust packages do), then it's especially easy.  Otherwise you should probably
+get the code building in cargo first. 
+
+Once your package builds in cargo, you can use
+[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
+recipe for it.  This allows bitbake to fetch all the necessary dependent
+crates, as well as a pegged version of the crates.io index, to ensure maximum
+reproducibility. Once the Rust SDK support is added to oe-core, cargo-bitbake
+may also be added to the SDK.
+
+NOTE: You will have to edit the generated recipe based on the comments
+contained within it
+
+## TODO
+
+## Pitfalls
+
+ - TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See rust-lang/cargo#3349.
+
+## Dependencies
+
+On the host:
+ - Any `-sys` packages your project might need must have RDEPENDs for
+ the native library.
+
+On the target:
+ - Any `-sys` packages your project might need must have RDEPENDs for
+ the native library.
+
+## Copyright
+
+MIT OR Apache-2.0 - Same as rust
+
diff --git a/poky/meta/recipes-devtools/rust/files/riscv-march.patch b/poky/meta/recipes-devtools/rust/files/riscv-march.patch
new file mode 100644
index 0000000..a10b3a4
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/files/riscv-march.patch
@@ -0,0 +1,73 @@
+Add suppor for riscv64 and riscv32 musl targets
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/vendor/cc/src/lib.rs
++++ b/vendor/cc/src/lib.rs
+@@ -2361,6 +2361,7 @@ impl Build {
+                 "riscv-none-embed",
+             ]),
+             "riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
++            "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
+             "s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
+             "sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
+             "sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -641,9 +641,11 @@ supported_targets! {
+     ("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
+     ("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
+     ("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
++    ("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
+     ("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
+     ("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
+     ("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
++    ("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
+ 
+     ("aarch64-unknown-none", aarch64_unknown_none),
+     ("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/riscv32gc_unknown_linux_musl.rs
+@@ -0,0 +1,19 @@
++use crate::spec::{CodeModel, Target, TargetOptions};
++
++pub fn target() -> Target {
++    Target {
++        llvm_target: "riscv32-unknown-linux-musl".to_string(),
++        pointer_width: 32,
++        data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(),
++        arch: "riscv32".to_string(),
++        options: TargetOptions {
++            unsupported_abis: super::riscv_base::unsupported_abis(),
++            code_model: Some(CodeModel::Medium),
++            cpu: "generic-rv32".to_string(),
++            features: "+m,+a,+f,+d,+c".to_string(),
++            llvm_abiname: "ilp32d".to_string(),
++            max_atomic_width: Some(32),
++            ..super::linux_musl_base::opts()
++        },
++    }
++}
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/riscv64gc_unknown_linux_musl.rs
+@@ -0,0 +1,19 @@
++use crate::spec::{CodeModel, Target, TargetOptions};
++
++pub fn target() -> Target {
++    Target {
++        llvm_target: "riscv64-unknown-linux-musl".to_string(),
++        pointer_width: 64,
++        data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
++        arch: "riscv64".to_string(),
++        options: TargetOptions {
++            unsupported_abis: super::riscv_base::unsupported_abis(),
++            code_model: Some(CodeModel::Medium),
++            cpu: "generic-rv64".to_string(),
++            features: "+m,+a,+f,+d,+c".to_string(),
++            llvm_abiname: "lp64d".to_string(),
++            max_atomic_width: Some(64),
++            ..super::linux_musl_base::opts()
++        },
++    }
++}
diff --git a/poky/meta/recipes-devtools/rust/files/rv64gc.patch b/poky/meta/recipes-devtools/rust/files/rv64gc.patch
new file mode 100644
index 0000000..aab1e18
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/files/rv64gc.patch
@@ -0,0 +1,37 @@
+--- a/vendor/cc-1.0.60/.cargo-checksum.json
++++ b/vendor/cc-1.0.60/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"903c5f2f5dd0cc7d04f99f605a95e6abde8b38156fd4e73eefc58493f55a4e5a","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
+\ No newline at end of file
++{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"2788af2bdf425f267b33bc524f3e627851b52422e38f480a7e39eb834264fd73","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
+--- a/vendor/cc-1.0.60/src/lib.rs
++++ b/vendor/cc-1.0.60/src/lib.rs
+@@ -1639,14 +1639,17 @@ impl Build {
+                     let mut parts = target.split('-');
+                     if let Some(arch) = parts.next() {
+                         let arch = &arch[5..];
+-                        cmd.args.push(("-march=rv".to_owned() + arch).into());
+                         if target.contains("linux") && arch.starts_with("64") {
++                            cmd.args.push(("-march=rv64gc").into());
+                             cmd.args.push("-mabi=lp64d".into());
+                         } else if target.contains("linux") && arch.starts_with("32") {
++                            cmd.args.push(("-march=rv32gc").into());
+                             cmd.args.push("-mabi=ilp32d".into());
+                         } else if arch.starts_with("64") {
++                            cmd.args.push(("-march=rv".to_owned() + arch).into());
+                             cmd.args.push("-mabi=lp64".into());
+                         } else {
++                            cmd.args.push(("-march=rv".to_owned() + arch).into());
+                             cmd.args.push("-mabi=ilp32".into());
+                         }
+                         cmd.args.push("-mcmodel=medany".into());
+@@ -2332,6 +2335,9 @@ impl Build {
+                 "riscv-none-embed",
+             ]),
+             "riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
++            "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"),
++            "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
++            "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"),
+             "s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
+             "sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
+             "sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
new file mode 100644
index 0000000..7529c4d
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
@@ -0,0 +1,905 @@
+From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:05:06 +0200
+Subject: [PATCH 5/8] Add base definitions for riscv64 + musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../src/unix/linux_like/linux/musl/b64/mod.rs |   3 +
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 867 ++++++++++++++++++
+ 2 files changed, 870 insertions(+)
+ create mode 100644 vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
+index cfcdaaecf..7261b95d2 100644
+--- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -163,6 +163,9 @@ cfg_if! {
+     } else if #[cfg(any(target_arch = "x86_64"))] {
+         mod x86_64;
+         pub use self::x86_64::*;
++    } else if #[cfg(any(target_arch = "riscv64"))] {
++        mod riscv64;
++        pub use self::riscv64::*;
+     } else {
+         // Unknown target_arch
+     }
+diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+new file mode 100644
+index 000000000..14bae11d0
+--- /dev/null
++++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -0,0 +1,867 @@
++//! RISC-V-specific definitions for 64-bit linux-like values
++
++pub type c_char = u8;
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type wchar_t = ::c_int;
++
++pub type nlink_t = ::c_uint;
++pub type blksize_t = ::c_int;
++pub type fsblkcnt64_t = ::c_ulong;
++pub type fsfilcnt64_t = ::c_ulong;
++pub type suseconds_t = i64;
++pub type __u64 = ::c_ulonglong;
++
++s! {
++    pub struct pthread_attr_t {
++        __size: [::c_ulong; 7],
++    }
++
++    pub struct stat {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2usize],
++    }
++
++    pub struct stat64 {
++        pub st_dev: ::dev_t,
++        pub st_ino: ::ino64_t,
++        pub st_mode: ::mode_t,
++        pub st_nlink: ::nlink_t,
++        pub st_uid: ::uid_t,
++        pub st_gid: ::gid_t,
++        pub st_rdev: ::dev_t,
++        pub __pad1: ::dev_t,
++        pub st_size: ::off64_t,
++        pub st_blksize: ::blksize_t,
++        pub __pad2: ::c_int,
++        pub st_blocks: ::blkcnt_t,
++        pub st_atime: ::time_t,
++        pub st_atime_nsec: ::c_long,
++        pub st_mtime: ::time_t,
++        pub st_mtime_nsec: ::c_long,
++        pub st_ctime: ::time_t,
++        pub st_ctime_nsec: ::c_long,
++        __unused: [::c_int; 2],
++    }
++
++    pub struct statfs {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statfs64 {
++        pub f_type: ::c_long,
++        pub f_bsize: ::c_long,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_fsid: ::fsid_t,
++        pub f_namelen: ::c_long,
++        pub f_frsize: ::c_long,
++        pub f_flags: ::c_long,
++        pub f_spare: [::c_long; 4],
++    }
++
++    pub struct statvfs {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt_t,
++        pub f_bfree: ::fsblkcnt_t,
++        pub f_bavail: ::fsblkcnt_t,
++        pub f_files: ::fsfilcnt_t,
++        pub f_ffree: ::fsfilcnt_t,
++        pub f_favail: ::fsfilcnt_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct statvfs64 {
++        pub f_bsize: ::c_ulong,
++        pub f_frsize: ::c_ulong,
++        pub f_blocks: ::fsblkcnt64_t,
++        pub f_bfree: ::fsblkcnt64_t,
++        pub f_bavail: ::fsblkcnt64_t,
++        pub f_files: ::fsfilcnt64_t,
++        pub f_ffree: ::fsfilcnt64_t,
++        pub f_favail: ::fsfilcnt64_t,
++        pub f_fsid: ::c_ulong,
++        pub f_flag: ::c_ulong,
++        pub f_namemax: ::c_ulong,
++        pub __f_spare: [::c_int; 6],
++    }
++
++    pub struct siginfo_t {
++        pub si_signo: ::c_int,
++        pub si_errno: ::c_int,
++        pub si_code: ::c_int,
++        #[doc(hidden)]
++        #[deprecated(
++            since="0.2.54",
++            note="Please leave a comment on \
++                  https://github.com/rust-lang/libc/pull/1316 if you're using \
++                  this field"
++        )]
++        pub _pad: [::c_int; 29],
++        _align: [u64; 0],
++    }
++
++    pub struct stack_t {
++        pub ss_sp: *mut ::c_void,
++        pub ss_flags: ::c_int,
++        pub ss_size: ::size_t,
++    }
++
++    pub struct sigaction {
++        pub sa_sigaction: ::sighandler_t,
++        pub sa_mask: ::sigset_t,
++        pub sa_flags: ::c_int,
++        pub sa_restorer: ::Option<unsafe extern "C" fn()>,
++    }
++
++    pub struct ipc_perm {
++        pub __key: ::key_t,
++        pub uid: ::uid_t,
++        pub gid: ::gid_t,
++        pub cuid: ::uid_t,
++        pub cgid: ::gid_t,
++        pub mode: ::c_ushort,
++        __pad1: ::c_ushort,
++        pub __seq: ::c_ushort,
++        __pad2: ::c_ushort,
++        __unused1: ::c_ulong,
++        __unused2: ::c_ulong,
++    }
++
++    pub struct shmid_ds {
++        pub shm_perm: ::ipc_perm,
++        pub shm_segsz: ::size_t,
++        pub shm_atime: ::time_t,
++        pub shm_dtime: ::time_t,
++        pub shm_ctime: ::time_t,
++        pub shm_cpid: ::pid_t,
++        pub shm_lpid: ::pid_t,
++        pub shm_nattch: ::shmatt_t,
++        __unused5: ::c_ulong,
++        __unused6: ::c_ulong,
++    }
++
++    pub struct flock {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off_t,
++        pub l_len: ::off_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct flock64 {
++        pub l_type: ::c_short,
++        pub l_whence: ::c_short,
++        pub l_start: ::off64_t,
++        pub l_len: ::off64_t,
++        pub l_pid: ::pid_t,
++    }
++
++    pub struct ip_mreqn {
++        pub imr_multiaddr: ::in_addr,
++        pub imr_address: ::in_addr,
++        pub imr_ifindex: ::c_int,
++    }
++}
++
++pub const POSIX_FADV_DONTNEED: ::c_int = 4;
++pub const POSIX_FADV_NOREUSE: ::c_int = 5;
++pub const VEOF: usize = 4;
++pub const RTLD_DEEPBIND: ::c_int = 0x8;
++pub const RTLD_GLOBAL: ::c_int = 0x100;
++pub const RTLD_NOLOAD: ::c_int = 0x4;
++pub const TIOCGSOFTCAR: ::c_ulong = 21529;
++pub const TIOCSSOFTCAR: ::c_ulong = 21530;
++pub const TIOCGRS485: ::c_int = 21550;
++pub const TIOCSRS485: ::c_int = 21551;
++pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
++pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
++pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
++pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
++pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_FSYNC: ::c_int = 1052672;
++pub const O_NOATIME: ::c_int = 262144;
++pub const O_PATH: ::c_int = 2097152;
++pub const O_TMPFILE: ::c_int = 4259840;
++pub const MAP_GROWSDOWN: ::c_int = 256;
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
++pub const SO_BINDTODEVICE: ::c_int = 25;
++pub const SO_ATTACH_FILTER: ::c_int = 26;
++pub const SO_DETACH_FILTER: ::c_int = 27;
++pub const SO_GET_FILTER: ::c_int = 26;
++pub const SO_PEERNAME: ::c_int = 28;
++pub const SO_TIMESTAMP: ::c_int = 29;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_PEERSEC: ::c_int = 31;
++pub const SO_PASSSEC: ::c_int = 34;
++pub const SO_TIMESTAMPNS: ::c_int = 35;
++pub const SCM_TIMESTAMPNS: ::c_int = 35;
++pub const SO_MARK: ::c_int = 36;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++pub const SO_RXQ_OVFL: ::c_int = 40;
++pub const SO_WIFI_STATUS: ::c_int = 41;
++pub const SCM_WIFI_STATUS: ::c_int = 41;
++pub const SO_PEEK_OFF: ::c_int = 42;
++pub const SO_NOFCS: ::c_int = 43;
++pub const SO_LOCK_FILTER: ::c_int = 44;
++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
++pub const SO_BUSY_POLL: ::c_int = 46;
++pub const SO_MAX_PACING_RATE: ::c_int = 47;
++pub const SO_BPF_EXTENSIONS: ::c_int = 48;
++pub const SO_INCOMING_CPU: ::c_int = 49;
++pub const SO_ATTACH_BPF: ::c_int = 50;
++pub const SO_DETACH_BPF: ::c_int = 27;
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SA_ONSTACK: ::c_int = 134217728;
++pub const SA_SIGINFO: ::c_int = 4;
++pub const SA_NOCLDWAIT: ::c_int = 2;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0;
++pub const SIG_UNBLOCK: ::c_int = 1;
++pub const POLLWRNORM: ::c_short = 256;
++pub const POLLWRBAND: ::c_short = 512;
++pub const O_ASYNC: ::c_int = 8192;
++pub const O_NDELAY: ::c_int = 2048;
++pub const PTRACE_DETACH: ::c_uint = 17;
++pub const EFD_NONBLOCK: ::c_int = 2048;
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++pub const SFD_NONBLOCK: ::c_int = 2048;
++pub const TCSANOW: ::c_int = 0;
++pub const TCSADRAIN: ::c_int = 1;
++pub const TCSAFLUSH: ::c_int = 2;
++pub const TIOCLINUX: ::c_ulong = 21532;
++pub const TIOCGSERIAL: ::c_ulong = 21534;
++pub const TIOCEXCL: ::c_ulong = 21516;
++pub const TIOCNXCL: ::c_ulong = 21517;
++pub const TIOCSCTTY: ::c_ulong = 21518;
++pub const TIOCSTI: ::c_ulong = 21522;
++pub const TIOCMGET: ::c_ulong = 21525;
++pub const TIOCMBIS: ::c_ulong = 21526;
++pub const TIOCMBIC: ::c_ulong = 21527;
++pub const TIOCMSET: ::c_ulong = 21528;
++pub const TIOCCONS: ::c_ulong = 21533;
++pub const TIOCM_ST: ::c_int = 8;
++pub const TIOCM_SR: ::c_int = 16;
++pub const TIOCM_CTS: ::c_int = 32;
++pub const TIOCM_CAR: ::c_int = 64;
++pub const TIOCM_RNG: ::c_int = 128;
++pub const TIOCM_DSR: ::c_int = 256;
++pub const SFD_CLOEXEC: ::c_int = 524288;
++pub const NCCS: usize = 32;
++pub const O_TRUNC: ::c_int = 512;
++pub const O_CLOEXEC: ::c_int = 524288;
++pub const EBFONT: ::c_int = 59;
++pub const ENOSTR: ::c_int = 60;
++pub const ENODATA: ::c_int = 61;
++pub const ETIME: ::c_int = 62;
++pub const ENOSR: ::c_int = 63;
++pub const ENONET: ::c_int = 64;
++pub const ENOPKG: ::c_int = 65;
++pub const EREMOTE: ::c_int = 66;
++pub const ENOLINK: ::c_int = 67;
++pub const EADV: ::c_int = 68;
++pub const ESRMNT: ::c_int = 69;
++pub const ECOMM: ::c_int = 70;
++pub const EPROTO: ::c_int = 71;
++pub const EDOTDOT: ::c_int = 73;
++pub const SA_NODEFER: ::c_int = 1073741824;
++pub const SA_RESETHAND: ::c_int = -2147483648;
++pub const SA_RESTART: ::c_int = 268435456;
++pub const SA_NOCLDSTOP: ::c_int = 1;
++pub const EPOLL_CLOEXEC: ::c_int = 524288;
++pub const EFD_CLOEXEC: ::c_int = 524288;
++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
++pub const O_DIRECT: ::c_int = 16384;
++pub const O_DIRECTORY: ::c_int = 65536;
++pub const O_NOFOLLOW: ::c_int = 131072;
++pub const MAP_HUGETLB: ::c_int = 262144;
++pub const MAP_LOCKED: ::c_int = 8192;
++pub const MAP_NORESERVE: ::c_int = 16384;
++pub const MAP_ANON: ::c_int = 32;
++pub const MAP_ANONYMOUS: ::c_int = 32;
++pub const MAP_DENYWRITE: ::c_int = 2048;
++pub const MAP_EXECUTABLE: ::c_int = 4096;
++pub const MAP_POPULATE: ::c_int = 32768;
++pub const MAP_NONBLOCK: ::c_int = 65536;
++pub const MAP_STACK: ::c_int = 131072;
++pub const MAP_SYNC : ::c_int = 0x080000;
++pub const EDEADLOCK: ::c_int = 35;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const FIOCLEX: ::c_ulong = 21585;
++pub const FIONCLEX: ::c_ulong = 21584;
++pub const FIONBIO: ::c_ulong = 21537;
++pub const MCL_CURRENT: ::c_int = 1;
++pub const MCL_FUTURE: ::c_int = 2;
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const CBAUD: ::tcflag_t = 4111;
++pub const TAB1: ::tcflag_t = 2048;
++pub const TAB2: ::tcflag_t = 4096;
++pub const TAB3: ::tcflag_t = 6144;
++pub const CR1: ::tcflag_t = 512;
++pub const CR2: ::tcflag_t = 1024;
++pub const CR3: ::tcflag_t = 1536;
++pub const FF1: ::tcflag_t = 32768;
++pub const BS1: ::tcflag_t = 8192;
++pub const VT1: ::tcflag_t = 16384;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 1024;
++pub const IXOFF: ::tcflag_t = 4096;
++pub const ONLCR: ::tcflag_t = 4;
++pub const CSIZE: ::tcflag_t = 48;
++pub const CS6: ::tcflag_t = 16;
++pub const CS7: ::tcflag_t = 32;
++pub const CS8: ::tcflag_t = 48;
++pub const CSTOPB: ::tcflag_t = 64;
++pub const CREAD: ::tcflag_t = 128;
++pub const PARENB: ::tcflag_t = 256;
++pub const PARODD: ::tcflag_t = 512;
++pub const HUPCL: ::tcflag_t = 1024;
++pub const CLOCAL: ::tcflag_t = 2048;
++pub const ECHOKE: ::tcflag_t = 2048;
++pub const ECHOE: ::tcflag_t = 16;
++pub const ECHOK: ::tcflag_t = 32;
++pub const ECHONL: ::tcflag_t = 64;
++pub const ECHOPRT: ::tcflag_t = 1024;
++pub const ECHOCTL: ::tcflag_t = 512;
++pub const ISIG: ::tcflag_t = 1;
++pub const ICANON: ::tcflag_t = 2;
++pub const PENDIN: ::tcflag_t = 16384;
++pub const NOFLSH: ::tcflag_t = 128;
++pub const CIBAUD: ::tcflag_t = 269418496;
++pub const CBAUDEX: ::tcflag_t = 4096;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 2;
++pub const NLDLY: ::tcflag_t = 256;
++pub const CRDLY: ::tcflag_t = 1536;
++pub const TABDLY: ::tcflag_t = 6144;
++pub const BSDLY: ::tcflag_t = 8192;
++pub const FFDLY: ::tcflag_t = 32768;
++pub const VTDLY: ::tcflag_t = 16384;
++pub const XTABS: ::tcflag_t = 6144;
++pub const B0: ::speed_t = 0;
++pub const B50: ::speed_t = 1;
++pub const B75: ::speed_t = 2;
++pub const B110: ::speed_t = 3;
++pub const B134: ::speed_t = 4;
++pub const B150: ::speed_t = 5;
++pub const B200: ::speed_t = 6;
++pub const B300: ::speed_t = 7;
++pub const B600: ::speed_t = 8;
++pub const B1200: ::speed_t = 9;
++pub const B1800: ::speed_t = 10;
++pub const B2400: ::speed_t = 11;
++pub const B4800: ::speed_t = 12;
++pub const B9600: ::speed_t = 13;
++pub const B19200: ::speed_t = 14;
++pub const B38400: ::speed_t = 15;
++pub const EXTA: ::speed_t = 14;
++pub const EXTB: ::speed_t = 15;
++pub const B57600: ::speed_t = 4097;
++pub const B115200: ::speed_t = 4098;
++pub const B230400: ::speed_t = 4099;
++pub const B460800: ::speed_t = 4100;
++pub const B500000: ::speed_t = 4101;
++pub const B576000: ::speed_t = 4102;
++pub const B921600: ::speed_t = 4103;
++pub const B1000000: ::speed_t = 4104;
++pub const B1152000: ::speed_t = 4105;
++pub const B1500000: ::speed_t = 4106;
++pub const B2000000: ::speed_t = 4107;
++pub const B2500000: ::speed_t = 4108;
++pub const B3000000: ::speed_t = 4109;
++pub const B3500000: ::speed_t = 4110;
++pub const B4000000: ::speed_t = 4111;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 32768;
++pub const TOSTOP: ::tcflag_t = 256;
++pub const FLUSHO: ::tcflag_t = 4096;
++pub const EXTPROC: ::tcflag_t = 65536;
++pub const TCGETS: ::c_ulong = 21505;
++pub const TCSETS: ::c_ulong = 21506;
++pub const TCSETSW: ::c_ulong = 21507;
++pub const TCSETSF: ::c_ulong = 21508;
++pub const TCGETA: ::c_ulong = 21509;
++pub const TCSETA: ::c_ulong = 21510;
++pub const TCSETAW: ::c_ulong = 21511;
++pub const TCSETAF: ::c_ulong = 21512;
++pub const TCSBRK: ::c_ulong = 21513;
++pub const TCXONC: ::c_ulong = 21514;
++pub const TCFLSH: ::c_ulong = 21515;
++pub const TIOCINQ: ::c_ulong = 21531;
++pub const TIOCGPGRP: ::c_ulong = 21519;
++pub const TIOCSPGRP: ::c_ulong = 21520;
++pub const TIOCOUTQ: ::c_ulong = 21521;
++pub const TIOCGWINSZ: ::c_ulong = 21523;
++pub const TIOCSWINSZ: ::c_ulong = 21524;
++pub const FIONREAD: ::c_ulong = 21531;
++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
++pub const SYS_read: ::c_long = 63;
++pub const SYS_write: ::c_long = 64;
++pub const SYS_close: ::c_long = 57;
++pub const SYS_fstat: ::c_long = 80;
++pub const SYS_lseek: ::c_long = 62;
++pub const SYS_mmap: ::c_long = 222;
++pub const SYS_mprotect: ::c_long = 226;
++pub const SYS_munmap: ::c_long = 215;
++pub const SYS_brk: ::c_long = 214;
++pub const SYS_rt_sigaction: ::c_long = 134;
++pub const SYS_rt_sigprocmask: ::c_long = 135;
++pub const SYS_rt_sigreturn: ::c_long = 139;
++pub const SYS_ioctl: ::c_long = 29;
++pub const SYS_pread64: ::c_long = 67;
++pub const SYS_pwrite64: ::c_long = 68;
++pub const SYS_readv: ::c_long = 65;
++pub const SYS_writev: ::c_long = 66;
++pub const SYS_sched_yield: ::c_long = 124;
++pub const SYS_mremap: ::c_long = 216;
++pub const SYS_msync: ::c_long = 227;
++pub const SYS_mincore: ::c_long = 232;
++pub const SYS_madvise: ::c_long = 233;
++pub const SYS_shmget: ::c_long = 194;
++pub const SYS_shmat: ::c_long = 196;
++pub const SYS_shmctl: ::c_long = 195;
++pub const SYS_dup: ::c_long = 23;
++pub const SYS_nanosleep: ::c_long = 101;
++pub const SYS_getitimer: ::c_long = 102;
++pub const SYS_setitimer: ::c_long = 103;
++pub const SYS_getpid: ::c_long = 172;
++pub const SYS_sendfile: ::c_long = 71;
++pub const SYS_socket: ::c_long = 198;
++pub const SYS_connect: ::c_long = 203;
++pub const SYS_accept: ::c_long = 202;
++pub const SYS_sendto: ::c_long = 206;
++pub const SYS_recvfrom: ::c_long = 207;
++pub const SYS_sendmsg: ::c_long = 211;
++pub const SYS_recvmsg: ::c_long = 212;
++pub const SYS_shutdown: ::c_long = 210;
++pub const SYS_bind: ::c_long = 200;
++pub const SYS_listen: ::c_long = 201;
++pub const SYS_getsockname: ::c_long = 204;
++pub const SYS_getpeername: ::c_long = 205;
++pub const SYS_socketpair: ::c_long = 199;
++pub const SYS_setsockopt: ::c_long = 208;
++pub const SYS_getsockopt: ::c_long = 209;
++pub const SYS_clone: ::c_long = 220;
++pub const SYS_execve: ::c_long = 221;
++pub const SYS_exit: ::c_long = 93;
++pub const SYS_wait4: ::c_long = 260;
++pub const SYS_kill: ::c_long = 129;
++pub const SYS_uname: ::c_long = 160;
++pub const SYS_semget: ::c_long = 190;
++pub const SYS_semop: ::c_long = 193;
++pub const SYS_semctl: ::c_long = 191;
++pub const SYS_shmdt: ::c_long = 197;
++pub const SYS_msgget: ::c_long = 186;
++pub const SYS_msgsnd: ::c_long = 189;
++pub const SYS_msgrcv: ::c_long = 188;
++pub const SYS_msgctl: ::c_long = 187;
++pub const SYS_fcntl: ::c_long = 25;
++pub const SYS_flock: ::c_long = 32;
++pub const SYS_fsync: ::c_long = 82;
++pub const SYS_fdatasync: ::c_long = 83;
++pub const SYS_truncate: ::c_long = 45;
++pub const SYS_ftruncate: ::c_long = 46;
++pub const SYS_getcwd: ::c_long = 17;
++pub const SYS_chdir: ::c_long = 49;
++pub const SYS_fchdir: ::c_long = 50;
++pub const SYS_fchmod: ::c_long = 52;
++pub const SYS_fchown: ::c_long = 55;
++pub const SYS_umask: ::c_long = 166;
++pub const SYS_gettimeofday: ::c_long = 169;
++pub const SYS_getrlimit: ::c_long = 163;
++pub const SYS_getrusage: ::c_long = 165;
++pub const SYS_sysinfo: ::c_long = 179;
++pub const SYS_times: ::c_long = 153;
++pub const SYS_ptrace: ::c_long = 117;
++pub const SYS_getuid: ::c_long = 174;
++pub const SYS_syslog: ::c_long = 116;
++pub const SYS_getgid: ::c_long = 176;
++pub const SYS_setuid: ::c_long = 146;
++pub const SYS_setgid: ::c_long = 144;
++pub const SYS_geteuid: ::c_long = 175;
++pub const SYS_getegid: ::c_long = 177;
++pub const SYS_setpgid: ::c_long = 154;
++pub const SYS_getppid: ::c_long = 173;
++pub const SYS_setsid: ::c_long = 157;
++pub const SYS_setreuid: ::c_long = 145;
++pub const SYS_setregid: ::c_long = 143;
++pub const SYS_getgroups: ::c_long = 158;
++pub const SYS_setgroups: ::c_long = 159;
++pub const SYS_setresuid: ::c_long = 147;
++pub const SYS_getresuid: ::c_long = 148;
++pub const SYS_setresgid: ::c_long = 149;
++pub const SYS_getresgid: ::c_long = 150;
++pub const SYS_getpgid: ::c_long = 155;
++pub const SYS_setfsuid: ::c_long = 151;
++pub const SYS_setfsgid: ::c_long = 152;
++pub const SYS_getsid: ::c_long = 156;
++pub const SYS_capget: ::c_long = 90;
++pub const SYS_capset: ::c_long = 91;
++pub const SYS_rt_sigpending: ::c_long = 136;
++pub const SYS_rt_sigtimedwait: ::c_long = 137;
++pub const SYS_rt_sigqueueinfo: ::c_long = 138;
++pub const SYS_rt_sigsuspend: ::c_long = 133;
++pub const SYS_sigaltstack: ::c_long = 132;
++pub const SYS_personality: ::c_long = 92;
++pub const SYS_statfs: ::c_long = 43;
++pub const SYS_fstatfs: ::c_long = 44;
++pub const SYS_getpriority: ::c_long = 141;
++pub const SYS_setpriority: ::c_long = 140;
++pub const SYS_sched_setparam: ::c_long = 118;
++pub const SYS_sched_getparam: ::c_long = 121;
++pub const SYS_sched_setscheduler: ::c_long = 119;
++pub const SYS_sched_getscheduler: ::c_long = 120;
++pub const SYS_sched_get_priority_max: ::c_long = 125;
++pub const SYS_sched_get_priority_min: ::c_long = 126;
++pub const SYS_sched_rr_get_interval: ::c_long = 127;
++pub const SYS_mlock: ::c_long = 228;
++pub const SYS_munlock: ::c_long = 229;
++pub const SYS_mlockall: ::c_long = 230;
++pub const SYS_munlockall: ::c_long = 231;
++pub const SYS_vhangup: ::c_long = 58;
++pub const SYS_pivot_root: ::c_long = 41;
++pub const SYS_prctl: ::c_long = 167;
++pub const SYS_adjtimex: ::c_long = 171;
++pub const SYS_setrlimit: ::c_long = 164;
++pub const SYS_chroot: ::c_long = 51;
++pub const SYS_sync: ::c_long = 81;
++pub const SYS_acct: ::c_long = 89;
++pub const SYS_settimeofday: ::c_long = 170;
++pub const SYS_mount: ::c_long = 40;
++pub const SYS_umount2: ::c_long = 39;
++pub const SYS_swapon: ::c_long = 224;
++pub const SYS_swapoff: ::c_long = 225;
++pub const SYS_reboot: ::c_long = 142;
++pub const SYS_sethostname: ::c_long = 161;
++pub const SYS_setdomainname: ::c_long = 162;
++pub const SYS_init_module: ::c_long = 105;
++pub const SYS_delete_module: ::c_long = 106;
++pub const SYS_quotactl: ::c_long = 60;
++pub const SYS_nfsservctl: ::c_long = 42;
++pub const SYS_gettid: ::c_long = 178;
++pub const SYS_readahead: ::c_long = 213;
++pub const SYS_setxattr: ::c_long = 5;
++pub const SYS_lsetxattr: ::c_long = 6;
++pub const SYS_fsetxattr: ::c_long = 7;
++pub const SYS_getxattr: ::c_long = 8;
++pub const SYS_lgetxattr: ::c_long = 9;
++pub const SYS_fgetxattr: ::c_long = 10;
++pub const SYS_listxattr: ::c_long = 11;
++pub const SYS_llistxattr: ::c_long = 12;
++pub const SYS_flistxattr: ::c_long = 13;
++pub const SYS_removexattr: ::c_long = 14;
++pub const SYS_lremovexattr: ::c_long = 15;
++pub const SYS_fremovexattr: ::c_long = 16;
++pub const SYS_tkill: ::c_long = 130;
++pub const SYS_futex: ::c_long = 98;
++pub const SYS_sched_setaffinity: ::c_long = 122;
++pub const SYS_sched_getaffinity: ::c_long = 123;
++pub const SYS_io_setup: ::c_long = 0;
++pub const SYS_io_destroy: ::c_long = 1;
++pub const SYS_io_getevents: ::c_long = 4;
++pub const SYS_io_submit: ::c_long = 2;
++pub const SYS_io_cancel: ::c_long = 3;
++pub const SYS_lookup_dcookie: ::c_long = 18;
++pub const SYS_remap_file_pages: ::c_long = 234;
++pub const SYS_getdents64: ::c_long = 61;
++pub const SYS_set_tid_address: ::c_long = 96;
++pub const SYS_restart_syscall: ::c_long = 128;
++pub const SYS_semtimedop: ::c_long = 192;
++pub const SYS_fadvise64: ::c_long = 223;
++pub const SYS_timer_create: ::c_long = 107;
++pub const SYS_timer_settime: ::c_long = 110;
++pub const SYS_timer_gettime: ::c_long = 108;
++pub const SYS_timer_getoverrun: ::c_long = 109;
++pub const SYS_timer_delete: ::c_long = 111;
++pub const SYS_clock_settime: ::c_long = 112;
++pub const SYS_clock_gettime: ::c_long = 113;
++pub const SYS_clock_getres: ::c_long = 114;
++pub const SYS_clock_nanosleep: ::c_long = 115;
++pub const SYS_exit_group: ::c_long = 94;
++pub const SYS_epoll_ctl: ::c_long = 21;
++pub const SYS_tgkill: ::c_long = 131;
++pub const SYS_mbind: ::c_long = 235;
++pub const SYS_set_mempolicy: ::c_long = 237;
++pub const SYS_get_mempolicy: ::c_long = 236;
++pub const SYS_mq_open: ::c_long = 180;
++pub const SYS_mq_unlink: ::c_long = 181;
++pub const SYS_mq_timedsend: ::c_long = 182;
++pub const SYS_mq_timedreceive: ::c_long = 183;
++pub const SYS_mq_notify: ::c_long = 184;
++pub const SYS_mq_getsetattr: ::c_long = 185;
++pub const SYS_kexec_load: ::c_long = 104;
++pub const SYS_waitid: ::c_long = 95;
++pub const SYS_add_key: ::c_long = 217;
++pub const SYS_request_key: ::c_long = 218;
++pub const SYS_keyctl: ::c_long = 219;
++pub const SYS_ioprio_set: ::c_long = 30;
++pub const SYS_ioprio_get: ::c_long = 31;
++pub const SYS_inotify_add_watch: ::c_long = 27;
++pub const SYS_inotify_rm_watch: ::c_long = 28;
++pub const SYS_migrate_pages: ::c_long = 238;
++pub const SYS_openat: ::c_long = 56;
++pub const SYS_mkdirat: ::c_long = 34;
++pub const SYS_mknodat: ::c_long = 33;
++pub const SYS_fchownat: ::c_long = 54;
++pub const SYS_newfstatat: ::c_long = 79;
++pub const SYS_unlinkat: ::c_long = 35;
++pub const SYS_linkat: ::c_long = 37;
++pub const SYS_symlinkat: ::c_long = 36;
++pub const SYS_readlinkat: ::c_long = 78;
++pub const SYS_fchmodat: ::c_long = 53;
++pub const SYS_faccessat: ::c_long = 48;
++pub const SYS_pselect6: ::c_long = 72;
++pub const SYS_ppoll: ::c_long = 73;
++pub const SYS_unshare: ::c_long = 97;
++pub const SYS_set_robust_list: ::c_long = 99;
++pub const SYS_get_robust_list: ::c_long = 100;
++pub const SYS_splice: ::c_long = 76;
++pub const SYS_tee: ::c_long = 77;
++pub const SYS_sync_file_range: ::c_long = 84;
++pub const SYS_vmsplice: ::c_long = 75;
++pub const SYS_move_pages: ::c_long = 239;
++pub const SYS_utimensat: ::c_long = 88;
++pub const SYS_epoll_pwait: ::c_long = 22;
++pub const SYS_timerfd_create: ::c_long = 85;
++pub const SYS_fallocate: ::c_long = 47;
++pub const SYS_timerfd_settime: ::c_long = 86;
++pub const SYS_timerfd_gettime: ::c_long = 87;
++pub const SYS_accept4: ::c_long = 242;
++pub const SYS_signalfd4: ::c_long = 74;
++pub const SYS_eventfd2: ::c_long = 19;
++pub const SYS_epoll_create1: ::c_long = 20;
++pub const SYS_dup3: ::c_long = 24;
++pub const SYS_pipe2: ::c_long = 59;
++pub const SYS_inotify_init1: ::c_long = 26;
++pub const SYS_preadv: ::c_long = 69;
++pub const SYS_pwritev: ::c_long = 70;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
++pub const SYS_perf_event_open: ::c_long = 241;
++pub const SYS_recvmmsg: ::c_long = 243;
++pub const SYS_fanotify_init: ::c_long = 262;
++pub const SYS_fanotify_mark: ::c_long = 263;
++pub const SYS_prlimit64: ::c_long = 261;
++pub const SYS_name_to_handle_at: ::c_long = 264;
++pub const SYS_open_by_handle_at: ::c_long = 265;
++pub const SYS_clock_adjtime: ::c_long = 266;
++pub const SYS_syncfs: ::c_long = 267;
++pub const SYS_sendmmsg: ::c_long = 269;
++pub const SYS_setns: ::c_long = 268;
++pub const SYS_getcpu: ::c_long = 168;
++pub const SYS_process_vm_readv: ::c_long = 270;
++pub const SYS_process_vm_writev: ::c_long = 271;
++pub const SYS_kcmp: ::c_long = 272;
++pub const SYS_finit_module: ::c_long = 273;
++pub const SYS_sched_setattr: ::c_long = 274;
++pub const SYS_sched_getattr: ::c_long = 275;
++pub const SYS_renameat2: ::c_long = 276;
++pub const SYS_seccomp: ::c_long = 277;
++pub const SYS_getrandom: ::c_long = 278;
++pub const SYS_memfd_create: ::c_long = 279;
++pub const SYS_bpf: ::c_long = 280;
++pub const SYS_execveat: ::c_long = 281;
++pub const SYS_userfaultfd: ::c_long = 282;
++pub const SYS_membarrier: ::c_long = 283;
++pub const SYS_mlock2: ::c_long = 284;
++pub const SYS_copy_file_range: ::c_long = 285;
++pub const SYS_preadv2: ::c_long = 286;
++pub const SYS_pwritev2: ::c_long = 287;
++pub const SYS_pkey_mprotect: ::c_long = 288;
++pub const SYS_pkey_alloc: ::c_long = 289;
++pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_statx: ::c_long = 291;
++pub const SYS_pidfd_open: ::c_long = 434;
++pub const SYS_clone3: ::c_long = 435;
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
new file mode 100644
index 0000000..d0ddb3c
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
@@ -0,0 +1,31 @@
+From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:07:21 +0200
+Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set -
+ libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
+index 00f26475d..a37f410fd 100644
+--- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs
+@@ -716,7 +716,8 @@ cfg_if! {
+                  target_arch = "aarch64",
+                  target_arch = "mips64",
+                  target_arch = "powerpc64",
+-                 target_arch = "s390x"))] {
++                 target_arch = "s390x",
++                 target_arch = "riscv64"))] {
+         mod b64;
+         pub use self::b64::*;
+     } else if #[cfg(any(target_arch = "x86",
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
new file mode 100644
index 0000000..8be8104
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
@@ -0,0 +1,741 @@
+From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:09:17 +0200
+Subject: [PATCH 7/8] FIXUP Correct definitions to match musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs  | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+diff --git a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+index 14bae11d0..c37190cca 100644
+--- a/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -191,403 +191,8 @@ s! {
+         pub l_len: ::off64_t,
+         pub l_pid: ::pid_t,
+     }
+-
+-    pub struct ip_mreqn {
+-        pub imr_multiaddr: ::in_addr,
+-        pub imr_address: ::in_addr,
+-        pub imr_ifindex: ::c_int,
+-    }
+ }
+ 
+-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+-pub const VEOF: usize = 4;
+-pub const RTLD_DEEPBIND: ::c_int = 0x8;
+-pub const RTLD_GLOBAL: ::c_int = 0x100;
+-pub const RTLD_NOLOAD: ::c_int = 0x4;
+-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
+-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
+-pub const TIOCGRS485: ::c_int = 21550;
+-pub const TIOCSRS485: ::c_int = 21551;
+-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+-pub const O_APPEND: ::c_int = 1024;
+-pub const O_CREAT: ::c_int = 64;
+-pub const O_EXCL: ::c_int = 128;
+-pub const O_NOCTTY: ::c_int = 256;
+-pub const O_NONBLOCK: ::c_int = 2048;
+-pub const O_SYNC: ::c_int = 1052672;
+-pub const O_RSYNC: ::c_int = 1052672;
+-pub const O_DSYNC: ::c_int = 4096;
+-pub const O_FSYNC: ::c_int = 1052672;
+-pub const O_NOATIME: ::c_int = 262144;
+-pub const O_PATH: ::c_int = 2097152;
+-pub const O_TMPFILE: ::c_int = 4259840;
+-pub const MAP_GROWSDOWN: ::c_int = 256;
+-pub const EDEADLK: ::c_int = 35;
+-pub const ENAMETOOLONG: ::c_int = 36;
+-pub const ENOLCK: ::c_int = 37;
+-pub const ENOSYS: ::c_int = 38;
+-pub const ENOTEMPTY: ::c_int = 39;
+-pub const ELOOP: ::c_int = 40;
+-pub const ENOMSG: ::c_int = 42;
+-pub const EIDRM: ::c_int = 43;
+-pub const ECHRNG: ::c_int = 44;
+-pub const EL2NSYNC: ::c_int = 45;
+-pub const EL3HLT: ::c_int = 46;
+-pub const EL3RST: ::c_int = 47;
+-pub const ELNRNG: ::c_int = 48;
+-pub const EUNATCH: ::c_int = 49;
+-pub const ENOCSI: ::c_int = 50;
+-pub const EL2HLT: ::c_int = 51;
+-pub const EBADE: ::c_int = 52;
+-pub const EBADR: ::c_int = 53;
+-pub const EXFULL: ::c_int = 54;
+-pub const ENOANO: ::c_int = 55;
+-pub const EBADRQC: ::c_int = 56;
+-pub const EBADSLT: ::c_int = 57;
+-pub const EMULTIHOP: ::c_int = 72;
+-pub const EOVERFLOW: ::c_int = 75;
+-pub const ENOTUNIQ: ::c_int = 76;
+-pub const EBADFD: ::c_int = 77;
+-pub const EBADMSG: ::c_int = 74;
+-pub const EREMCHG: ::c_int = 78;
+-pub const ELIBACC: ::c_int = 79;
+-pub const ELIBBAD: ::c_int = 80;
+-pub const ELIBSCN: ::c_int = 81;
+-pub const ELIBMAX: ::c_int = 82;
+-pub const ELIBEXEC: ::c_int = 83;
+-pub const EILSEQ: ::c_int = 84;
+-pub const ERESTART: ::c_int = 85;
+-pub const ESTRPIPE: ::c_int = 86;
+-pub const EUSERS: ::c_int = 87;
+-pub const ENOTSOCK: ::c_int = 88;
+-pub const EDESTADDRREQ: ::c_int = 89;
+-pub const EMSGSIZE: ::c_int = 90;
+-pub const EPROTOTYPE: ::c_int = 91;
+-pub const ENOPROTOOPT: ::c_int = 92;
+-pub const EPROTONOSUPPORT: ::c_int = 93;
+-pub const ESOCKTNOSUPPORT: ::c_int = 94;
+-pub const EOPNOTSUPP: ::c_int = 95;
+-pub const EPFNOSUPPORT: ::c_int = 96;
+-pub const EAFNOSUPPORT: ::c_int = 97;
+-pub const EADDRINUSE: ::c_int = 98;
+-pub const EADDRNOTAVAIL: ::c_int = 99;
+-pub const ENETDOWN: ::c_int = 100;
+-pub const ENETUNREACH: ::c_int = 101;
+-pub const ENETRESET: ::c_int = 102;
+-pub const ECONNABORTED: ::c_int = 103;
+-pub const ECONNRESET: ::c_int = 104;
+-pub const ENOBUFS: ::c_int = 105;
+-pub const EISCONN: ::c_int = 106;
+-pub const ENOTCONN: ::c_int = 107;
+-pub const ESHUTDOWN: ::c_int = 108;
+-pub const ETOOMANYREFS: ::c_int = 109;
+-pub const ETIMEDOUT: ::c_int = 110;
+-pub const ECONNREFUSED: ::c_int = 111;
+-pub const EHOSTDOWN: ::c_int = 112;
+-pub const EHOSTUNREACH: ::c_int = 113;
+-pub const EALREADY: ::c_int = 114;
+-pub const EINPROGRESS: ::c_int = 115;
+-pub const ESTALE: ::c_int = 116;
+-pub const EDQUOT: ::c_int = 122;
+-pub const ENOMEDIUM: ::c_int = 123;
+-pub const EMEDIUMTYPE: ::c_int = 124;
+-pub const ECANCELED: ::c_int = 125;
+-pub const ENOKEY: ::c_int = 126;
+-pub const EKEYEXPIRED: ::c_int = 127;
+-pub const EKEYREVOKED: ::c_int = 128;
+-pub const EKEYREJECTED: ::c_int = 129;
+-pub const EOWNERDEAD: ::c_int = 130;
+-pub const ENOTRECOVERABLE: ::c_int = 131;
+-pub const EHWPOISON: ::c_int = 133;
+-pub const ERFKILL: ::c_int = 132;
+-pub const SOL_SOCKET: ::c_int = 1;
+-pub const SO_REUSEADDR: ::c_int = 2;
+-pub const SO_TYPE: ::c_int = 3;
+-pub const SO_ERROR: ::c_int = 4;
+-pub const SO_DONTROUTE: ::c_int = 5;
+-pub const SO_BROADCAST: ::c_int = 6;
+-pub const SO_SNDBUF: ::c_int = 7;
+-pub const SO_RCVBUF: ::c_int = 8;
+-pub const SO_SNDBUFFORCE: ::c_int = 32;
+-pub const SO_RCVBUFFORCE: ::c_int = 33;
+-pub const SO_KEEPALIVE: ::c_int = 9;
+-pub const SO_OOBINLINE: ::c_int = 10;
+-pub const SO_NO_CHECK: ::c_int = 11;
+-pub const SO_PRIORITY: ::c_int = 12;
+-pub const SO_LINGER: ::c_int = 13;
+-pub const SO_BSDCOMPAT: ::c_int = 14;
+-pub const SO_REUSEPORT: ::c_int = 15;
+-pub const SO_PASSCRED: ::c_int = 16;
+-pub const SO_PEERCRED: ::c_int = 17;
+-pub const SO_RCVLOWAT: ::c_int = 18;
+-pub const SO_SNDLOWAT: ::c_int = 19;
+-pub const SO_RCVTIMEO: ::c_int = 20;
+-pub const SO_SNDTIMEO: ::c_int = 21;
+-pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+-pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+-pub const SO_BINDTODEVICE: ::c_int = 25;
+-pub const SO_ATTACH_FILTER: ::c_int = 26;
+-pub const SO_DETACH_FILTER: ::c_int = 27;
+-pub const SO_GET_FILTER: ::c_int = 26;
+-pub const SO_PEERNAME: ::c_int = 28;
+-pub const SO_TIMESTAMP: ::c_int = 29;
+-pub const SO_ACCEPTCONN: ::c_int = 30;
+-pub const SO_PEERSEC: ::c_int = 31;
+-pub const SO_PASSSEC: ::c_int = 34;
+-pub const SO_TIMESTAMPNS: ::c_int = 35;
+-pub const SCM_TIMESTAMPNS: ::c_int = 35;
+-pub const SO_MARK: ::c_int = 36;
+-pub const SO_PROTOCOL: ::c_int = 38;
+-pub const SO_DOMAIN: ::c_int = 39;
+-pub const SO_RXQ_OVFL: ::c_int = 40;
+-pub const SO_WIFI_STATUS: ::c_int = 41;
+-pub const SCM_WIFI_STATUS: ::c_int = 41;
+-pub const SO_PEEK_OFF: ::c_int = 42;
+-pub const SO_NOFCS: ::c_int = 43;
+-pub const SO_LOCK_FILTER: ::c_int = 44;
+-pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+-pub const SO_BUSY_POLL: ::c_int = 46;
+-pub const SO_MAX_PACING_RATE: ::c_int = 47;
+-pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+-pub const SO_INCOMING_CPU: ::c_int = 49;
+-pub const SO_ATTACH_BPF: ::c_int = 50;
+-pub const SO_DETACH_BPF: ::c_int = 27;
+-pub const SOCK_STREAM: ::c_int = 1;
+-pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SA_ONSTACK: ::c_int = 134217728;
+-pub const SA_SIGINFO: ::c_int = 4;
+-pub const SA_NOCLDWAIT: ::c_int = 2;
+-pub const SIGTTIN: ::c_int = 21;
+-pub const SIGTTOU: ::c_int = 22;
+-pub const SIGXCPU: ::c_int = 24;
+-pub const SIGXFSZ: ::c_int = 25;
+-pub const SIGVTALRM: ::c_int = 26;
+-pub const SIGPROF: ::c_int = 27;
+-pub const SIGWINCH: ::c_int = 28;
+-pub const SIGCHLD: ::c_int = 17;
+-pub const SIGBUS: ::c_int = 7;
+-pub const SIGUSR1: ::c_int = 10;
+-pub const SIGUSR2: ::c_int = 12;
+-pub const SIGCONT: ::c_int = 18;
+-pub const SIGSTOP: ::c_int = 19;
+-pub const SIGTSTP: ::c_int = 20;
+-pub const SIGURG: ::c_int = 23;
+-pub const SIGIO: ::c_int = 29;
+-pub const SIGSYS: ::c_int = 31;
+-pub const SIGSTKFLT: ::c_int = 16;
+-pub const SIGPOLL: ::c_int = 29;
+-pub const SIGPWR: ::c_int = 30;
+-pub const SIG_SETMASK: ::c_int = 2;
+-pub const SIG_BLOCK: ::c_int = 0;
+-pub const SIG_UNBLOCK: ::c_int = 1;
+-pub const POLLWRNORM: ::c_short = 256;
+-pub const POLLWRBAND: ::c_short = 512;
+-pub const O_ASYNC: ::c_int = 8192;
+-pub const O_NDELAY: ::c_int = 2048;
+-pub const PTRACE_DETACH: ::c_uint = 17;
+-pub const EFD_NONBLOCK: ::c_int = 2048;
+-pub const F_GETLK: ::c_int = 5;
+-pub const F_GETOWN: ::c_int = 9;
+-pub const F_SETOWN: ::c_int = 8;
+-pub const F_SETLK: ::c_int = 6;
+-pub const F_SETLKW: ::c_int = 7;
+-pub const F_RDLCK: ::c_int = 0;
+-pub const F_WRLCK: ::c_int = 1;
+-pub const F_UNLCK: ::c_int = 2;
+-pub const F_OFD_GETLK: ::c_int = 36;
+-pub const F_OFD_SETLK: ::c_int = 37;
+-pub const F_OFD_SETLKW: ::c_int = 38;
+-pub const SFD_NONBLOCK: ::c_int = 2048;
+-pub const TCSANOW: ::c_int = 0;
+-pub const TCSADRAIN: ::c_int = 1;
+-pub const TCSAFLUSH: ::c_int = 2;
+-pub const TIOCLINUX: ::c_ulong = 21532;
+-pub const TIOCGSERIAL: ::c_ulong = 21534;
+-pub const TIOCEXCL: ::c_ulong = 21516;
+-pub const TIOCNXCL: ::c_ulong = 21517;
+-pub const TIOCSCTTY: ::c_ulong = 21518;
+-pub const TIOCSTI: ::c_ulong = 21522;
+-pub const TIOCMGET: ::c_ulong = 21525;
+-pub const TIOCMBIS: ::c_ulong = 21526;
+-pub const TIOCMBIC: ::c_ulong = 21527;
+-pub const TIOCMSET: ::c_ulong = 21528;
+-pub const TIOCCONS: ::c_ulong = 21533;
+-pub const TIOCM_ST: ::c_int = 8;
+-pub const TIOCM_SR: ::c_int = 16;
+-pub const TIOCM_CTS: ::c_int = 32;
+-pub const TIOCM_CAR: ::c_int = 64;
+-pub const TIOCM_RNG: ::c_int = 128;
+-pub const TIOCM_DSR: ::c_int = 256;
+-pub const SFD_CLOEXEC: ::c_int = 524288;
+-pub const NCCS: usize = 32;
+-pub const O_TRUNC: ::c_int = 512;
+-pub const O_CLOEXEC: ::c_int = 524288;
+-pub const EBFONT: ::c_int = 59;
+-pub const ENOSTR: ::c_int = 60;
+-pub const ENODATA: ::c_int = 61;
+-pub const ETIME: ::c_int = 62;
+-pub const ENOSR: ::c_int = 63;
+-pub const ENONET: ::c_int = 64;
+-pub const ENOPKG: ::c_int = 65;
+-pub const EREMOTE: ::c_int = 66;
+-pub const ENOLINK: ::c_int = 67;
+-pub const EADV: ::c_int = 68;
+-pub const ESRMNT: ::c_int = 69;
+-pub const ECOMM: ::c_int = 70;
+-pub const EPROTO: ::c_int = 71;
+-pub const EDOTDOT: ::c_int = 73;
+-pub const SA_NODEFER: ::c_int = 1073741824;
+-pub const SA_RESETHAND: ::c_int = -2147483648;
+-pub const SA_RESTART: ::c_int = 268435456;
+-pub const SA_NOCLDSTOP: ::c_int = 1;
+-pub const EPOLL_CLOEXEC: ::c_int = 524288;
+-pub const EFD_CLOEXEC: ::c_int = 524288;
+-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+-pub const O_DIRECT: ::c_int = 16384;
+-pub const O_DIRECTORY: ::c_int = 65536;
+-pub const O_NOFOLLOW: ::c_int = 131072;
+-pub const MAP_HUGETLB: ::c_int = 262144;
+-pub const MAP_LOCKED: ::c_int = 8192;
+-pub const MAP_NORESERVE: ::c_int = 16384;
+-pub const MAP_ANON: ::c_int = 32;
+-pub const MAP_ANONYMOUS: ::c_int = 32;
+-pub const MAP_DENYWRITE: ::c_int = 2048;
+-pub const MAP_EXECUTABLE: ::c_int = 4096;
+-pub const MAP_POPULATE: ::c_int = 32768;
+-pub const MAP_NONBLOCK: ::c_int = 65536;
+-pub const MAP_STACK: ::c_int = 131072;
+-pub const MAP_SYNC : ::c_int = 0x080000;
+-pub const EDEADLOCK: ::c_int = 35;
+-pub const EUCLEAN: ::c_int = 117;
+-pub const ENOTNAM: ::c_int = 118;
+-pub const ENAVAIL: ::c_int = 119;
+-pub const EISNAM: ::c_int = 120;
+-pub const EREMOTEIO: ::c_int = 121;
+-pub const FIOCLEX: ::c_ulong = 21585;
+-pub const FIONCLEX: ::c_ulong = 21584;
+-pub const FIONBIO: ::c_ulong = 21537;
+-pub const MCL_CURRENT: ::c_int = 1;
+-pub const MCL_FUTURE: ::c_int = 2;
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-pub const CBAUD: ::tcflag_t = 4111;
+-pub const TAB1: ::tcflag_t = 2048;
+-pub const TAB2: ::tcflag_t = 4096;
+-pub const TAB3: ::tcflag_t = 6144;
+-pub const CR1: ::tcflag_t = 512;
+-pub const CR2: ::tcflag_t = 1024;
+-pub const CR3: ::tcflag_t = 1536;
+-pub const FF1: ::tcflag_t = 32768;
+-pub const BS1: ::tcflag_t = 8192;
+-pub const VT1: ::tcflag_t = 16384;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 1024;
+-pub const IXOFF: ::tcflag_t = 4096;
+-pub const ONLCR: ::tcflag_t = 4;
+-pub const CSIZE: ::tcflag_t = 48;
+-pub const CS6: ::tcflag_t = 16;
+-pub const CS7: ::tcflag_t = 32;
+-pub const CS8: ::tcflag_t = 48;
+-pub const CSTOPB: ::tcflag_t = 64;
+-pub const CREAD: ::tcflag_t = 128;
+-pub const PARENB: ::tcflag_t = 256;
+-pub const PARODD: ::tcflag_t = 512;
+-pub const HUPCL: ::tcflag_t = 1024;
+-pub const CLOCAL: ::tcflag_t = 2048;
+-pub const ECHOKE: ::tcflag_t = 2048;
+-pub const ECHOE: ::tcflag_t = 16;
+-pub const ECHOK: ::tcflag_t = 32;
+-pub const ECHONL: ::tcflag_t = 64;
+-pub const ECHOPRT: ::tcflag_t = 1024;
+-pub const ECHOCTL: ::tcflag_t = 512;
+-pub const ISIG: ::tcflag_t = 1;
+-pub const ICANON: ::tcflag_t = 2;
+-pub const PENDIN: ::tcflag_t = 16384;
+-pub const NOFLSH: ::tcflag_t = 128;
+-pub const CIBAUD: ::tcflag_t = 269418496;
+-pub const CBAUDEX: ::tcflag_t = 4096;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 2;
+-pub const NLDLY: ::tcflag_t = 256;
+-pub const CRDLY: ::tcflag_t = 1536;
+-pub const TABDLY: ::tcflag_t = 6144;
+-pub const BSDLY: ::tcflag_t = 8192;
+-pub const FFDLY: ::tcflag_t = 32768;
+-pub const VTDLY: ::tcflag_t = 16384;
+-pub const XTABS: ::tcflag_t = 6144;
+-pub const B0: ::speed_t = 0;
+-pub const B50: ::speed_t = 1;
+-pub const B75: ::speed_t = 2;
+-pub const B110: ::speed_t = 3;
+-pub const B134: ::speed_t = 4;
+-pub const B150: ::speed_t = 5;
+-pub const B200: ::speed_t = 6;
+-pub const B300: ::speed_t = 7;
+-pub const B600: ::speed_t = 8;
+-pub const B1200: ::speed_t = 9;
+-pub const B1800: ::speed_t = 10;
+-pub const B2400: ::speed_t = 11;
+-pub const B4800: ::speed_t = 12;
+-pub const B9600: ::speed_t = 13;
+-pub const B19200: ::speed_t = 14;
+-pub const B38400: ::speed_t = 15;
+-pub const EXTA: ::speed_t = 14;
+-pub const EXTB: ::speed_t = 15;
+-pub const B57600: ::speed_t = 4097;
+-pub const B115200: ::speed_t = 4098;
+-pub const B230400: ::speed_t = 4099;
+-pub const B460800: ::speed_t = 4100;
+-pub const B500000: ::speed_t = 4101;
+-pub const B576000: ::speed_t = 4102;
+-pub const B921600: ::speed_t = 4103;
+-pub const B1000000: ::speed_t = 4104;
+-pub const B1152000: ::speed_t = 4105;
+-pub const B1500000: ::speed_t = 4106;
+-pub const B2000000: ::speed_t = 4107;
+-pub const B2500000: ::speed_t = 4108;
+-pub const B3000000: ::speed_t = 4109;
+-pub const B3500000: ::speed_t = 4110;
+-pub const B4000000: ::speed_t = 4111;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 32768;
+-pub const TOSTOP: ::tcflag_t = 256;
+-pub const FLUSHO: ::tcflag_t = 4096;
+-pub const EXTPROC: ::tcflag_t = 65536;
+-pub const TCGETS: ::c_ulong = 21505;
+-pub const TCSETS: ::c_ulong = 21506;
+-pub const TCSETSW: ::c_ulong = 21507;
+-pub const TCSETSF: ::c_ulong = 21508;
+-pub const TCGETA: ::c_ulong = 21509;
+-pub const TCSETA: ::c_ulong = 21510;
+-pub const TCSETAW: ::c_ulong = 21511;
+-pub const TCSETAF: ::c_ulong = 21512;
+-pub const TCSBRK: ::c_ulong = 21513;
+-pub const TCXONC: ::c_ulong = 21514;
+-pub const TCFLSH: ::c_ulong = 21515;
+-pub const TIOCINQ: ::c_ulong = 21531;
+-pub const TIOCGPGRP: ::c_ulong = 21519;
+-pub const TIOCSPGRP: ::c_ulong = 21520;
+-pub const TIOCOUTQ: ::c_ulong = 21521;
+-pub const TIOCGWINSZ: ::c_ulong = 21523;
+-pub const TIOCSWINSZ: ::c_ulong = 21524;
+-pub const FIONREAD: ::c_ulong = 21531;
+-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const SYS_read: ::c_long = 63;
+ pub const SYS_write: ::c_long = 64;
+ pub const SYS_close: ::c_long = 57;
+@@ -863,5 +468,314 @@ pub const SYS_pkey_mprotect: ::c_long = 288;
+ pub const SYS_pkey_alloc: ::c_long = 289;
+ pub const SYS_pkey_free: ::c_long = 290;
+ pub const SYS_statx: ::c_long = 291;
+-pub const SYS_pidfd_open: ::c_long = 434;
+-pub const SYS_clone3: ::c_long = 435;
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_DIRECT: ::c_int = 0x4000;
++pub const O_DIRECTORY: ::c_int = 0x10000;
++pub const O_LARGEFILE: ::c_int = 0;
++pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_ASYNC: ::c_int = 0x2000;
++
++pub const TIOCGRS485: ::c_int = 0x542E;
++pub const TIOCSRS485: ::c_int = 0x542F;
++
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++
++pub const VEOF: usize = 4;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x02000;
++pub const MAP_NORESERVE: ::c_int = 0x04000;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++pub const MAP_SYNC : ::c_int = 0x080000;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_int = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONCLEX: ::c_int = 0x5450;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++extern "C" {
++    pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
new file mode 100644
index 0000000..23bb3af
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch
@@ -0,0 +1,23 @@
+From 2b1c373f9a3341e8926d6be8d7cdcedc1fc6fca3 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:19:24 +0200
+Subject: [PATCH 8/8] Update checksums for modified files for rust 1.54.0 and
+ libc-0.2.93
+
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/libc-0.2.93/.cargo-checksum.json b/vendor/libc-0.2.93/.cargo-checksum.json
+index 104eaa0ea..48576fb81 100644
+--- a/vendor/libc-0.2.93/.cargo-checksum.json
++++ b/vendor/libc-0.2.93/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"c65ce090d2ce0144faeb8d9ed9039d698ab19d92eee1121ef234238041ec6153","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"770bf9c7c799dd3536b1e716cb42e7b5569cb4721f02e1d67dd2b932718dea2c","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"e992965c141308f1ab38c9646b6197b308143dedd2771b6df2f12eb5909ce663","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"3fe42dd50ccc476255ebe7c1f5bf65950f3d1b5a62fbf8ac91c8c29c945781bc","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"06e3e4a8972f367275c7d1226a47cf86db13afad74a22344d91d1ec2ab043bd9","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"e777354db19a183fba4c616cb8c72ac88839528c5e2095bbdf7e47e8e5d2148e","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"f3dc5dc3ca3e9cf999ee73222c4fc2200a06f92ce6e9dd6fc357d019bb4999a5","src/unix/bsd/freebsdlike/freebsd/mod.rs":"154dfc0825d39fb19fcf87ccc43bb3923d7faec1eac7b50464a6106dc44a32a8","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"52a793977374d138c46e62b967e97dc5df06ef143701ffd8f4563658cbe77cf2","src/unix/bsd/mod.rs":"33df9bc4e6f92f78842defe59d9ac2c2afa0942ba990134ec0bf57aa76faa798","src/unix/bsd/netbsdlike/mod.rs":"c640eb7106c8af2ffee0644ea715528da3a8124fd2c9ca6ac617ab9eebc88787","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ff10f80b8182dc3a8fa5739bddd5362a2280f396b09d2da6c8adbf596d9643b0","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"135509edeaf3fb3f102d89d51ff1a8f82323497336a8dc7e1f0f23b5c2434b73","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"04372b08f57319b08002c1a5e1b200723ed1293754ea5b7d12beafa735c0c2db","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"34d74b3f86953c4bdba363b7b629fd3fc72d3842260ba208f91b9dc6024634ff","src/unix/haiku/native.rs":"7f43160df105a83a8527c59ad99b2578f479837a7c7d8bcdd5ee6607803e49f4","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"d611801c875a1066ff596ba813a80c1689aa54489bbd5bd8af4610c786d97a36","src/unix/linux_like/android/b32/mod.rs":"87c46d1ce6899df80b5eea1ca4fd30bc437028e281ea16b658209c2a9b4edbec","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"db23f94bc3ed46a0967dde748f0d4566fc885cc6171d0555007f3398ff99a708","src/unix/linux_like/android/b64/mod.rs":"e3078e856e43fde9b57d8a5aa840a590f2e18517a3e8de23e9c2a3d798596f43","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"e84176d838e663d351450bad218715db1fafbb531e47ea0e262cbb45829dae89","src/unix/linux_like/android/mod.rs":"ead1d5880fa288e11470e560e119c29b16198a0a1bbd853c51e10b1bf4db7583","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"d4c59585ca4802029a41e269092ccfa20f982b352a74abc54d3e7edc3102fb05","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"1e05278ab6295e95165d0fab1698bdc82a511bcbda3250093af4e5edf08991f8","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"7bf5c9813032db77b964ccb90bdce15236ae9ea06ea185595278ea4565c21b7b","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"08c8e94116dd5bc3e78bd9118647169d6decfbab4b15c6d4f2fc378c2d802cd1","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8fbd8e1d91f9e748755e11be5c385d9ba2c03acff741b4f75100d679cbcc44bf","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"273f58d7483c7b562725fba71ff0b1f9685258c040f7f4830032aa5f42eced23","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"33dfff5266bbc50c36d93e7b15381b9b9245031aa49e3db811b8984dd81851c0","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"bdfed99eb8beb541cc026a86eb99622687eecf603deb35204fee70f5464ad225","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"c34c06d1a2f02a761825a49ad6b37393c4f31afb9a3347de0a0c61979634b9b2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"3f01dbb2155877208ba58908396f75c7d3f57015662acb46cb19be6b2e81310b","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"028d235cb9d5af1b80e287b52373640532752ddce4812dee831948c6db4d434b","src/unix/linux_like/linux/musl/b64/s390x.rs":"38bbf839c22a07a46fd5b195812cf8a4d2966611a62213a5b4972422a7e5b8cc","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"aeb436f2575e4e34eb88b597923e480e1e8214b1c8be7f1e41d63c8a0dd9c78b","src/unix/linux_like/linux/musl/mod.rs":"1a8ff52e8f3c52ad53a0d423fae3d79a8f7e07a0b83d5ff9b759eb2a421bda9a","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"4320e8731666e30f850d45d51cd59311e23cd22dad5d04b3be98a6419e70e0a1","src/unix/linux_like/linux/uclibc/mod.rs":"0438ffcfa951516cbfdbd7bdc31ccee06614d5150fd271ca6ba9ba06890041ad","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"35e17aa16019a82bb1667c43a97ecef151c16ecb5f489793adac918e704e21de","src/unix/mod.rs":"a5fbb90b99244f04bb37dc7d79d56261f5c5a41e9a09b7958aed9a2b4882eae8","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/mod.rs":"407fe7e3c77f4c4c129788b3888a7da5d4b7b818ed3e96abb8de8cd780f83fb6","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"08b314a27797ee27989f48f5a0e66e0d73670071ceabd341076cdce7ea67201c","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"aa2fdf95ead6cde2937f2f0e7e0c72fdf2a6827d8b1bac647d3ca79e4d409348","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"e01acc1b176e15268ac0ca4d1de50bf372ba80a465af35cd612c8f7e702baf92","src/unix/solarish/mod.rs":"be9f7a37d17a7616f6dbebd871fe4ae83612af6b582ebf153284cff1e7162334","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"9caf6ff3faad5b39c9deb8eae497a61ef15aa5e03aa409a16299e700240c3b63","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"69460feb515652ec62ff258ccba4ed46738ee472938e78a3c34cbbf7a0e865c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"a0752b528fe6239536b9e915806326b20dc06183f078592b7394a10f5f56a621","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"c65ce090d2ce0144faeb8d9ed9039d698ab19d92eee1121ef234238041ec6153","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"770bf9c7c799dd3536b1e716cb42e7b5569cb4721f02e1d67dd2b932718dea2c","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"e992965c141308f1ab38c9646b6197b308143dedd2771b6df2f12eb5909ce663","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"3fe42dd50ccc476255ebe7c1f5bf65950f3d1b5a62fbf8ac91c8c29c945781bc","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"06e3e4a8972f367275c7d1226a47cf86db13afad74a22344d91d1ec2ab043bd9","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"14f0bd6693967d4fedec904f7042bd51f2138cb843ec4df18c911b357417cdd2","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"e777354db19a183fba4c616cb8c72ac88839528c5e2095bbdf7e47e8e5d2148e","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"f3dc5dc3ca3e9cf999ee73222c4fc2200a06f92ce6e9dd6fc357d019bb4999a5","src/unix/bsd/freebsdlike/freebsd/mod.rs":"154dfc0825d39fb19fcf87ccc43bb3923d7faec1eac7b50464a6106dc44a32a8","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"6132aa0973454379674ea6cbc77e6eace1e1032dd9f38182071388a036f1bc08","src/unix/bsd/freebsdlike/mod.rs":"52a793977374d138c46e62b967e97dc5df06ef143701ffd8f4563658cbe77cf2","src/unix/bsd/mod.rs":"33df9bc4e6f92f78842defe59d9ac2c2afa0942ba990134ec0bf57aa76faa798","src/unix/bsd/netbsdlike/mod.rs":"c640eb7106c8af2ffee0644ea715528da3a8124fd2c9ca6ac617ab9eebc88787","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"ff10f80b8182dc3a8fa5739bddd5362a2280f396b09d2da6c8adbf596d9643b0","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"135509edeaf3fb3f102d89d51ff1a8f82323497336a8dc7e1f0f23b5c2434b73","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/mod.rs":"04372b08f57319b08002c1a5e1b200723ed1293754ea5b7d12beafa735c0c2db","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"e59b7fd65f68f8e857eec39e0c03bac1d3af6ddc26c9ba58494336b83659bb9b","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"34d74b3f86953c4bdba363b7b629fd3fc72d3842260ba208f91b9dc6024634ff","src/unix/haiku/native.rs":"7f43160df105a83a8527c59ad99b2578f479837a7c7d8bcdd5ee6607803e49f4","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"d611801c875a1066ff596ba813a80c1689aa54489bbd5bd8af4610c786d97a36","src/unix/linux_like/android/b32/mod.rs":"87c46d1ce6899df80b5eea1ca4fd30bc437028e281ea16b658209c2a9b4edbec","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"db23f94bc3ed46a0967dde748f0d4566fc885cc6171d0555007f3398ff99a708","src/unix/linux_like/android/b64/mod.rs":"e3078e856e43fde9b57d8a5aa840a590f2e18517a3e8de23e9c2a3d798596f43","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"e84176d838e663d351450bad218715db1fafbb531e47ea0e262cbb45829dae89","src/unix/linux_like/android/mod.rs":"ead1d5880fa288e11470e560e119c29b16198a0a1bbd853c51e10b1bf4db7583","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"d4c59585ca4802029a41e269092ccfa20f982b352a74abc54d3e7edc3102fb05","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"1e05278ab6295e95165d0fab1698bdc82a511bcbda3250093af4e5edf08991f8","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"9c628cd97806181dc4d34b072f63fe1eb42f08108712002e0628ffe27f2fa93f","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"7bf5c9813032db77b964ccb90bdce15236ae9ea06ea185595278ea4565c21b7b","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"18edaa89c9746125863ff53182e0ef32cb1e1612e1ed9a2672558a9de85440e9","src/unix/linux_like/linux/gnu/b64/s390x.rs":"d9bb4e524e70d6fef49e0f77d89a92f478fd95d9a1aea32f4dc845275a7465d4","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"08c8e94116dd5bc3e78bd9118647169d6decfbab4b15c6d4f2fc378c2d802cd1","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8fbd8e1d91f9e748755e11be5c385d9ba2c03acff741b4f75100d679cbcc44bf","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"273f58d7483c7b562725fba71ff0b1f9685258c040f7f4830032aa5f42eced23","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"33dfff5266bbc50c36d93e7b15381b9b9245031aa49e3db811b8984dd81851c0","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"bdfed99eb8beb541cc026a86eb99622687eecf603deb35204fee70f5464ad225","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"c34c06d1a2f02a761825a49ad6b37393c4f31afb9a3347de0a0c61979634b9b2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"3f01dbb2155877208ba58908396f75c7d3f57015662acb46cb19be6b2e81310b","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"028d235cb9d5af1b80e287b52373640532752ddce4812dee831948c6db4d434b","src/unix/linux_like/linux/musl/b64/s390x.rs":"38bbf839c22a07a46fd5b195812cf8a4d2966611a62213a5b4972422a7e5b8cc","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"aeb436f2575e4e34eb88b597923e480e1e8214b1c8be7f1e41d63c8a0dd9c78b","src/unix/linux_like/linux/musl/mod.rs":"bc727b710a7ba23980ad13ad95d360070759074ff5e8ee4522501d256472862e","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"e0591197f0f9ebee3addb1a439f3db4d403712a859e76066d0484ee98a9ff724","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"9b691eeec0a9bf7b2abb87e09062d2c148d18e11c96ecad0edd0b74d1d0509fd","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"18753a99b820d69e062e3ba22a63fa86577b6dcc42f740479c7be1a4c658e1be","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"4320e8731666e30f850d45d51cd59311e23cd22dad5d04b3be98a6419e70e0a1","src/unix/linux_like/linux/uclibc/mod.rs":"0438ffcfa951516cbfdbd7bdc31ccee06614d5150fd271ca6ba9ba06890041ad","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"35e17aa16019a82bb1667c43a97ecef151c16ecb5f489793adac918e704e21de","src/unix/mod.rs":"a5fbb90b99244f04bb37dc7d79d56261f5c5a41e9a09b7958aed9a2b4882eae8","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/mod.rs":"407fe7e3c77f4c4c129788b3888a7da5d4b7b818ed3e96abb8de8cd780f83fb6","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"08b314a27797ee27989f48f5a0e66e0d73670071ceabd341076cdce7ea67201c","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"aa2fdf95ead6cde2937f2f0e7e0c72fdf2a6827d8b1bac647d3ca79e4d409348","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"e01acc1b176e15268ac0ca4d1de50bf372ba80a465af35cd612c8f7e702baf92","src/unix/solarish/mod.rs":"be9f7a37d17a7616f6dbebd871fe4ae83612af6b582ebf153284cff1e7162334","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"9caf6ff3faad5b39c9deb8eae497a61ef15aa5e03aa409a16299e700240c3b63","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"69460feb515652ec62ff258ccba4ed46738ee472938e78a3c34cbbf7a0e865c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"a0752b528fe6239536b9e915806326b20dc06183f078592b7394a10f5f56a621","src/windows/msvc.rs":"ea6d87a6a9cd668261b1c043e7c36cf599e80b5d09f6e4502e85daa4797c7927","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41"}
+\ No newline at end of file
+-- 
+2.27.0
+
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs.inc b/poky/meta/recipes-devtools/rust/libstd-rs.inc
new file mode 100644
index 0000000..9879563
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs.inc
@@ -0,0 +1,40 @@
+SUMMARY = "Rust standard libaries"
+HOMEPAGE = "http://www.rust-lang.org"
+SECTION = "devel"
+LICENSE = "MIT | Apache-2.0"
+LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
+
+RUSTLIB_DEP = ""
+inherit cargo
+
+DEPENDS:append:libc-musl = " libunwind"
+# rv32 does not have libunwind ported yet
+DEPENDS:remove:riscv32 = "libunwind"
+DEPENDS:remove:riscv64 = "libunwind"
+
+# Embed bitcode in order to allow compiling both with and without LTO
+RUSTFLAGS += "-Cembed-bitcode=yes"
+# Needed so cargo can find libbacktrace
+RUSTFLAGS += "-L ${STAGING_LIBDIR} -C link-arg=-Wl,-soname,libstd.so"
+
+S = "${RUSTSRC}/src/libstd"
+
+CARGO_FEATURES ?= "panic-unwind backtrace"
+CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
+CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
+
+do_compile:prepend () {
+    export CARGO_TARGET_DIR="${B}"
+    # For Rust 1.13.0 and newer
+    export RUSTC_BOOTSTRAP="1"
+}
+
+do_install () {
+    mkdir -p ${D}${rustlibdir}
+
+    # With the incremental build support added in 1.24, the libstd deps directory also includes dependency
+    # files that get installed. Those are really only needed to incrementally rebuild the libstd library
+    # itself and don't need to be installed.
+    rm -f ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/*.d
+    cp ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/* ${D}${rustlibdir}
+}
diff --git a/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb b/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb
new file mode 100644
index 0000000..1239f6a
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb
@@ -0,0 +1,11 @@
+require rust-source-${PV}.inc
+require libstd-rs.inc
+
+SRC_URI += " \
+            file://0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch;patchdir=../../ \
+            file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch;patchdir=../../ \
+            file://0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch;patchdir=../../ \
+            file://0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch;patchdir=../../ \
+            "
+# libstd moved from src/libstd to library/std in 1.47+
+S = "${RUSTSRC}/library/std"
diff --git a/poky/meta/recipes-devtools/rust/rust-common.inc b/poky/meta/recipes-devtools/rust/rust-common.inc
new file mode 100644
index 0000000..153fa3a
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-common.inc
@@ -0,0 +1,349 @@
+
+# Right now this is focused on arm-specific tune features.
+# We get away with this for now as one can only use x86-64 as the build host
+# (not arm).
+# Note that TUNE_FEATURES is _always_ refering to the target, so we really
+# don't want to use this for the host/build.
+def llvm_features_from_tune(d):
+    f = []
+    feat = d.getVar('TUNE_FEATURES')
+    if not feat:
+        return []
+    feat = frozenset(feat.split())
+
+    mach_overrides = d.getVar('MACHINEOVERRIDES')
+    mach_overrides = frozenset(mach_overrides.split(':'))
+
+    if 'vfpv4' in feat:
+        f.append("+vfp4")
+    if 'vfpv3' in feat:
+        f.append("+vfp3")
+    if 'vfpv3d16' in feat:
+        f.append("+d16")
+
+    if 'vfpv2' in feat or 'vfp' in feat:
+        f.append("+vfp2")
+
+    if 'neon' in feat:
+        f.append("+neon")
+
+    if 'mips32' in feat:
+        f.append("+mips32")
+
+    if 'mips32r2' in feat:
+        f.append("+mips32r2")
+
+    if target_is_armv7(d):
+        f.append('+v7')
+
+    if ('armv6' in mach_overrides) or ('armv6' in feat):
+        f.append("+v6")
+    if 'armv5te' in feat:
+        f.append("+strict-align")
+        f.append("+v5te")
+    elif 'armv5' in feat:
+        f.append("+strict-align")
+        f.append("+v5")
+
+    if ('armv4' in mach_overrides) or ('armv4' in feat):
+        f.append("+strict-align")
+
+    if 'dsp' in feat:
+        f.append("+dsp")
+
+    if 'thumb' in feat:
+        if d.getVar('ARM_THUMB_OPT') == "thumb":
+            if target_is_armv7(d):
+                f.append('+thumb2')
+            f.append("+thumb-mode")
+
+    if 'cortexa5' in feat:
+        f.append("+a5")
+    if 'cortexa7' in feat:
+        f.append("+a7")
+    if 'cortexa9' in feat:
+        f.append("+a9")
+    if 'cortexa15' in feat:
+        f.append("+a15")
+    if 'cortexa17' in feat:
+        f.append("+a17")
+    if ('riscv64' in feat) or ('riscv32' in feat):
+        f.append("+a,+c,+d,+f,+m")
+    return f
+llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}"
+
+# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
+# this should go away when https://github.com/rust-lang/rust/pull/31709 is
+# stable (1.9.0?)
+def llvm_features_from_cc_arch(d):
+    f = []
+    feat = d.getVar('TARGET_CC_ARCH')
+    if not feat:
+        return []
+    feat = frozenset(feat.split())
+
+    if '-mmmx' in feat:
+        f.append("+mmx")
+    if '-msse' in feat:
+        f.append("+sse")
+    if '-msse2' in feat:
+        f.append("+sse2")
+    if '-msse3' in feat:
+        f.append("+sse3")
+    if '-mssse3' in feat:
+        f.append("+ssse3")
+    if '-msse4.1' in feat:
+        f.append("+sse4.1")
+    if '-msse4.2' in feat:
+        f.append("+sse4.2")
+    if '-msse4a' in feat:
+        f.append("+sse4a")
+    if '-mavx' in feat:
+        f.append("+avx")
+    if '-mavx2' in feat:
+        f.append("+avx2")
+
+    return f
+
+def llvm_features_from_target_fpu(d):
+    # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
+    # ABI. There is no option for hard.
+
+    fpu = d.getVar('TARGET_FPU', True)
+    return ["+soft-float"] if fpu == "soft" else []
+
+def llvm_features(d):
+    return ','.join(llvm_features_from_tune(d) +
+                    llvm_features_from_cc_arch(d) +
+                    llvm_features_from_target_fpu(d))
+
+
+## arm-unknown-linux-gnueabihf
+DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[arm] = "little"
+TARGET_POINTER_WIDTH[arm] = "32"
+TARGET_C_INT_WIDTH[arm] = "32"
+MAX_ATOMIC_WIDTH[arm] = "64"
+FEATURES[arm] = "+v6,+vfp2"
+
+## armv7-unknown-linux-gnueabihf
+DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[armv7] = "little"
+TARGET_POINTER_WIDTH[armv7] = "32"
+TARGET_C_INT_WIDTH[armv7] = "32"
+MAX_ATOMIC_WIDTH[armv7] = "64"
+FEATURES[armv7] = "+v7,+vfp2,+thumb2"
+
+## aarch64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[aarch64] = "little"
+TARGET_POINTER_WIDTH[aarch64] = "64"
+TARGET_C_INT_WIDTH[aarch64] = "32"
+MAX_ATOMIC_WIDTH[aarch64] = "128"
+
+## x86_64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[x86_64] = "little"
+TARGET_POINTER_WIDTH[x86_64] = "64"
+TARGET_C_INT_WIDTH[x86_64] = "32"
+MAX_ATOMIC_WIDTH[x86_64] = "64"
+
+## i686-unknown-linux-{gnu, musl}
+DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
+LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[i686] = "little"
+TARGET_POINTER_WIDTH[i686] = "32"
+TARGET_C_INT_WIDTH[i686] = "32"
+MAX_ATOMIC_WIDTH[i686] = "64"
+
+## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
+DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
+LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[i586] = "little"
+TARGET_POINTER_WIDTH[i586] = "32"
+TARGET_C_INT_WIDTH[i586] = "32"
+MAX_ATOMIC_WIDTH[i586] = "64"
+
+## mips-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
+LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips] = "big"
+TARGET_POINTER_WIDTH[mips] = "32"
+TARGET_C_INT_WIDTH[mips] = "32"
+MAX_ATOMIC_WIDTH[mips] = "32"
+
+## mipsel-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
+LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mipsel] = "little"
+TARGET_POINTER_WIDTH[mipsel] = "32"
+TARGET_C_INT_WIDTH[mipsel] = "32"
+MAX_ATOMIC_WIDTH[mipsel] = "32"
+
+## mips64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
+LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips64] = "big"
+TARGET_POINTER_WIDTH[mips64] = "64"
+TARGET_C_INT_WIDTH[mips64] = "64"
+MAX_ATOMIC_WIDTH[mips64] = "64"
+
+## mips64el-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
+LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips64el] = "little"
+TARGET_POINTER_WIDTH[mips64el] = "64"
+TARGET_C_INT_WIDTH[mips64el] = "64"
+MAX_ATOMIC_WIDTH[mips64el] = "64"
+
+## powerpc-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
+LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc] = "big"
+TARGET_POINTER_WIDTH[powerpc] = "32"
+TARGET_C_INT_WIDTH[powerpc] = "32"
+MAX_ATOMIC_WIDTH[powerpc] = "32"
+
+## powerpc64le-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
+LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc64le] = "little"
+TARGET_POINTER_WIDTH[powerpc64le] = "64"
+TARGET_C_INT_WIDTH[powerpc64le] = "64"
+MAX_ATOMIC_WIDTH[powerpc64le] = "64"
+
+## riscv32-unknown-linux-{gnu, musl}
+DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128"
+LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[riscv32] = "little"
+TARGET_POINTER_WIDTH[riscv32] = "32"
+TARGET_C_INT_WIDTH[riscv32] = "32"
+MAX_ATOMIC_WIDTH[riscv32] = "32"
+
+## riscv64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
+LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[riscv64] = "little"
+TARGET_POINTER_WIDTH[riscv64] = "64"
+TARGET_C_INT_WIDTH[riscv64] = "64"
+MAX_ATOMIC_WIDTH[riscv64] = "64"
+
+def sys_for(d, thing):
+    return d.getVar('{}_SYS'.format(thing))
+
+def prefix_for(d, thing):
+    return d.getVar('{}_PREFIX'.format(thing))
+
+# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
+# rust's internals won't choke on.
+def arch_to_rust_target_arch(arch):
+    if arch == "i586" or arch == "i686":
+        return "x86"
+    elif arch == "mipsel":
+        return "mips"
+    elif arch == "mip64sel":
+        return "mips64"
+    elif arch == "armv7":
+        return "arm"
+    elif arch == "powerpc64le":
+        return "powerpc64"
+    else:
+        return arch
+
+# generates our target CPU value
+def llvm_cpu(d):
+    cpu = d.getVar('PACKAGE_ARCH')
+    target = d.getVar('TRANSLATED_TARGET_ARCH')
+
+    trans = {}
+    trans['corei7-64'] = "corei7"
+    trans['core2-32'] = "core2"
+    trans['x86-64'] = "x86-64"
+    trans['i686'] = "i686"
+    trans['i586'] = "i586"
+    trans['powerpc'] = "powerpc"
+    trans['mips64'] = "mips64"
+    trans['mips64el'] = "mips64"
+    trans['riscv64'] = "generic-rv64"
+    trans['riscv32'] = "generic-rv32"
+
+    if target in ["mips", "mipsel"]:
+        feat = frozenset(d.getVar('TUNE_FEATURES').split())
+        if "mips32r2" in feat:
+            trans['mipsel'] = "mips32r2"
+            trans['mips'] = "mips32r2"
+        elif "mips32" in feat:
+            trans['mipsel'] = "mips32"
+            trans['mips'] = "mips32"
+
+    try:
+        return trans[cpu]
+    except:
+        return trans.get(target, "generic")
+
+TARGET_LLVM_CPU="${@llvm_cpu(d)}"
+TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
+
+# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
+# (original) target.
+TARGET_LLVM_FEATURES:class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
+
+def rust_gen_target(d, thing, wd, features, cpu, arch):
+    import json
+    sys = sys_for(d, thing)
+    prefix = prefix_for(d, thing)
+
+    features = features or d.getVarFlag('FEATURES', arch) or ""
+    features = features.strip()
+
+    # build tspec
+    tspec = {}
+    tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
+    tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
+    tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch))
+    tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
+    tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
+    tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
+    tspec['arch'] = arch_to_rust_target_arch(arch)
+    tspec['os'] = "linux"
+    if "musl" in tspec['llvm-target']:
+        tspec['env'] = "musl"
+    else:
+        tspec['env'] = "gnu"
+    if "riscv64" in tspec['llvm-target']:
+        tspec['llvm-abiname'] = "lp64d"
+    if "riscv32" in tspec['llvm-target']:
+        tspec['llvm-abiname'] = "ilp32d"
+    tspec['vendor'] = "unknown"
+    tspec['target-family'] = "unix"
+    tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
+    tspec['ar'] = "{}ar".format(prefix)
+    tspec['cpu'] = cpu
+    if features != "":
+        tspec['features'] = features
+    tspec['dynamic-linking'] = True
+    tspec['executables'] = True
+    tspec['linker-is-gnu'] = True
+    tspec['linker-flavor'] = "gcc"
+    tspec['has-rpath'] = True
+    tspec['has-elf-tls'] = True
+    tspec['position-independent-executables'] = True
+    tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
+
+    # write out the target spec json file
+    with open(wd + sys + '.json', 'w') as f:
+        json.dump(tspec, f, indent=4)
+
+python do_rust_gen_targets () {
+    wd = d.getVar('WORKDIR') + '/targets/'
+    build_arch = d.getVar('BUILD_ARCH')
+    rust_gen_target(d, 'BUILD', wd, "", "generic", build_arch)
+}
+
+addtask rust_gen_targets after do_patch before do_compile
+do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian-common.inc b/poky/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
new file mode 100644
index 0000000..827000f
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
@@ -0,0 +1,55 @@
+
+RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+require rust.inc
+
+DEPENDS += "rust-llvm (=${PV})"
+
+inherit cross-canadian
+
+DEPENDS += "  \
+            virtual/${HOST_PREFIX}gcc-crosssdk \
+            virtual/nativesdk-libc rust-llvm-native \
+            virtual/${TARGET_PREFIX}compilerlibs \
+            virtual/nativesdk-${HOST_PREFIX}compilerlibs \
+            gcc-cross-${TARGET_ARCH} \
+           "
+
+# The host tools are likely not to be able to do the necessary operation on
+# the target architecturea. Alternatively one could check compatibility
+# between host/target.
+EXCLUDE_FROM_SHLIBS_${RUSTLIB_TARGET_PN} = "1"
+
+DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
+                    -fdebug-prefix-map=${STAGING_DIR_HOST}= \
+                    -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+                    "
+
+LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
+python do_rust_gen_targets () {
+    wd = d.getVar('WORKDIR') + '/targets/'
+    rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
+    rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
+    rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
+}
+
+INHIBIT_DEFAULT_RUST_DEPS = "1"
+
+export WRAPPER_TARGET_CC = "${CCACHE}${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_CXX = "${CCACHE}${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_CCLD = "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_LDFLAGS = "${TARGET_LDFLAGS}"
+export WRAPPER_TARGET_AR = "${TARGET_PREFIX}ar"
+
+python do_configure:prepend() {
+    targets = [d.getVar("TARGET_SYS", True), "{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
+    hosts = ["{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
+}
+
+INSANE_SKIP:${RUSTLIB_TARGET_PN} = "file-rdeps arch ldflags"
+SKIP_FILEDEPS:${RUSTLIB_TARGET_PN} = "1"
+
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_SYSROOT_STRIP = "1"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian.inc b/poky/meta/recipes-devtools/rust/rust-cross-canadian.inc
new file mode 100644
index 0000000..8bbbd61
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -0,0 +1,78 @@
+
+require rust-cross-canadian-common.inc
+
+RUSTLIB_TARGET_PN = "rust-cross-canadian-rustlib-target-${TRANSLATED_TARGET_ARCH}"
+RUSTLIB_HOST_PN = "rust-cross-canadian-rustlib-host-${TRANSLATED_TARGET_ARCH}"
+RUSTLIB_SRC_PN = "rust-cross-canadian-src"
+RUSTLIB_PKGS = "${RUSTLIB_SRC_PN} ${RUSTLIB_TARGET_PN} ${RUSTLIB_HOST_PN}"
+PN = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+PACKAGES = "${RUSTLIB_PKGS} ${PN}"
+RDEPENDS:${PN} += "${RUSTLIB_PKGS}"
+
+# The default behaviour of x.py changed in 1.47+ so now we need to
+# explicitly ask for the stage 2 compiler to be assembled.
+do_compile () {
+    rust_runx build --stage 2
+}
+
+do_install () {
+    # Rust requires /usr/lib to contain the libs.
+    # Similar story is with /usr/bin ruquiring  `lib` to be at the same level.
+    # The required structure is retained for simplicity.
+    SYS_LIBDIR=$(dirname ${D}${libdir})
+    SYS_BINDIR=$(dirname ${D}${bindir})
+    RUSTLIB_DIR=${SYS_LIBDIR}/${TARGET_SYS}/rustlib
+
+    install -d "${SYS_BINDIR}"
+    cp build/${SNAPSHOT_BUILD_SYS}/stage2/bin/* ${SYS_BINDIR}
+    for i in ${SYS_BINDIR}/*; do
+	chrpath -r "\$ORIGIN/../lib" ${i}
+    done
+
+    install -d "${D}${libdir}"
+    cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/*.so ${SYS_LIBDIR}
+    cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/rustlib ${RUSTLIB_DIR}
+
+    for i in ${SYS_LIBDIR}/*.so; do
+	chrpath -r "\$ORIGIN/../lib" ${i}
+    done
+    for i in ${RUSTLIB_DIR}/*/lib/*.so; do
+	chrpath -d ${i}
+    done
+
+    install -m 0644 "${WORKDIR}/targets/${TARGET_SYS}.json" "${RUSTLIB_DIR}"
+
+    SRC_DIR=${RUSTLIB_DIR}/src/rust
+    install -d ${SRC_DIR}/src/llvm-project
+    cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/src/llvm-project/libunwind ${SRC_DIR}/src/llvm-project
+    cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/library ${SRC_DIR}
+    cp --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/Cargo.lock ${SRC_DIR}
+    # Remove executable bit from any files so then SDK doesn't try to relocate.
+    chmod -R -x+X ${SRC_DIR}
+
+    ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+    mkdir "${ENV_SETUP_DIR}"
+    ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
+
+    cat <<- EOF > "${ENV_SETUP_SH}"
+	export RUSTFLAGS="--sysroot=\$OECORE_NATIVE_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
+	export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+	EOF
+
+    chown -R root.root ${D}
+}
+
+PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+PKG_RUSTLIB_DIR = "${PKG_SYS_LIBDIR}/${TARGET_SYS}/rustlib"
+FILES:${PN} = "${PKG_SYS_LIBDIR}/*.so ${PKG_SYS_BINDIR} ${base_prefix}/environment-setup.d"
+FILES:${RUSTLIB_TARGET_PN} = "${PKG_RUSTLIB_DIR}/${TARGET_SYS} ${PKG_RUSTLIB_DIR}/${TARGET_SYS}.json"
+FILES:${RUSTLIB_HOST_PN} = "${PKG_RUSTLIB_DIR}/${BUILD_ARCH}-unknown-linux-gnu"
+FILES:${RUSTLIB_SRC_PN} = "${PKG_RUSTLIB_DIR}/src"
+
+SUMMARY:${RUSTLIB_TARGET_PN} = "Rust cross canadian libaries for ${TARGET_SYS}"
+SUMMARY:${RUSTLIB_HOST_PN} = "Rust cross canadian libaries for ${HOST_SYS}"
+SUMMARY:${RUSTLIB_SRC_PN} = "Rust standard library sources for cross canadian toolchain"
+SUMMARY:${PN} = "Rust crost canadian compiler"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000..a5d02eb
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb
@@ -0,0 +1,6 @@
+require rust-cross-canadian.inc
+require rust-source-${PV}.inc
+require rust-snapshot-${PV}.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-cross.inc b/poky/meta/recipes-devtools/rust/rust-cross.inc
new file mode 100644
index 0000000..bee7c9f
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross.inc
@@ -0,0 +1,71 @@
+require rust.inc
+inherit cross
+
+python do_rust_gen_targets () {
+    wd = d.getVar('WORKDIR') + '/targets/'
+    # It is important 'TARGET' is last here so that it overrides our less
+    # informed choices for BUILD & HOST if TARGET happens to be the same as
+    # either of them.
+    for thing in ['BUILD', 'HOST', 'TARGET']:
+        bb.debug(1, "rust_gen_target for " + thing)
+        features = ""
+        cpu = "generic"
+        arch = d.getVar('{}_ARCH'.format(thing))
+        if thing is "TARGET":
+            # arm and armv7 have different targets in llvm
+            if arch == "arm" and target_is_armv7(d):
+                arch = 'armv7'
+            features = d.getVar('TARGET_LLVM_FEATURES') or ""
+            cpu = d.getVar('TARGET_LLVM_CPU')
+        rust_gen_target(d, thing, wd, features, cpu, arch)
+}
+
+# Otherwise we'll depend on what we provide
+INHIBIT_DEFAULT_RUST_DEPS = "1"
+
+# Unlike native (which nicely maps it's DEPENDS) cross wipes them out completely.
+# Generally, we (and cross in general) need the same things that native needs,
+# so it might make sense to take it's mapping. For now, though, we just mention
+# the bits we need explicitly.
+DEPENDS += "rust-llvm-native"
+DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
+DEPENDS += "rust-native"
+
+PROVIDES = "virtual/${TARGET_PREFIX}rust"
+PN = "rust-cross-${TARGET_ARCH}"
+
+# In the cross compilation case, rustc doesn't seem to get the rpath quite
+# right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
+# include the '../../lib' (ie: relative path from cross_bindir to normal
+# libdir. As a result, we end up not being able to properly reference files in normal ${libdir}.
+# Most of the time this happens to work fine as the systems libraries are
+# subsituted, but sometimes a host system will lack a library, or the right
+# version of a library (libtinfo was how I noticed this).
+#
+# FIXME: this should really be fixed in rust itself.
+# FIXME: using hard-coded relative paths is wrong, we should ask bitbake for
+#        the relative path between 2 of it's vars.
+HOST_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
+BUILD_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
+
+# We need the same thing for the calls to the compiler when building the runtime crap
+TARGET_CC_ARCH:append = " --sysroot=${STAGING_DIR_TARGET}"
+
+do_rust_setup_snapshot () {
+}
+
+do_configure () {
+}
+
+do_compile () {
+}
+
+do_install () {
+	mkdir -p ${D}${prefix}/${base_libdir_native}/rustlib
+	cp ${WORKDIR}/targets/${TARGET_SYS}.json ${D}${prefix}/${base_libdir_native}/rustlib
+}
+
+rust_cross_sysroot_preprocess() {
+    sysroot_stage_dir ${D}${prefix}/${base_libdir_native}/rustlib ${SYSROOT_DESTDIR}${prefix}/${base_libdir_native}/rustlib
+}
+SYSROOT_PREPROCESS_FUNCS += "rust_cross_sysroot_preprocess"
diff --git a/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb
new file mode 100644
index 0000000..ddc25d3
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-cross_1.54.0.bb
@@ -0,0 +1,2 @@
+require rust-cross.inc
+require rust-source-${PV}.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm.inc b/poky/meta/recipes-devtools/rust/rust-llvm.inc
new file mode 100644
index 0000000..d7f4453
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-llvm.inc
@@ -0,0 +1,64 @@
+SUMMARY = "LLVM compiler framework (packaged with rust)"
+LICENSE ?= "Apache-2.0-with-LLVM-exception"
+HOMEPAGE = "http://www.rust-lang.org"
+
+SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2"
+
+S = "${RUSTSRC}/src/llvm-project/llvm"
+
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
+
+inherit cmake python3native
+
+DEPENDS += "ninja-native rust-llvm-native"
+
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4t = "arm"
+
+LLVM_DIR = "llvm${LLVM_RELEASE}"
+
+EXTRA_OECMAKE = " \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DLLVM_TARGETS_TO_BUILD='ARM;AArch64;Mips;PowerPC;RISCV;X86' \
+    -DLLVM_BUILD_DOCS=OFF \
+    -DLLVM_ENABLE_TERMINFO=OFF \
+    -DLLVM_ENABLE_ZLIB=OFF \
+    -DLLVM_ENABLE_LIBXML2=OFF \
+    -DLLVM_ENABLE_FFI=OFF \
+    -DLLVM_INSTALL_UTILS=ON \
+    -DLLVM_BUILD_EXAMPLES=OFF \
+    -DLLVM_INCLUDE_EXAMPLES=OFF \
+    -DLLVM_BUILD_TESTS=OFF \
+    -DLLVM_INCLUDE_TESTS=OFF \
+    -DLLVM_TARGET_ARCH=${TARGET_ARCH} \
+    -DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
+"
+EXTRA_OECMAKE:append:class-target = "\
+    -DCMAKE_CROSSCOMPILING:BOOL=ON \
+    -DLLVM_BUILD_TOOLS=OFF \
+    -DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
+    -DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
+"
+
+# The debug symbols are huge here (>2GB) so suppress them since they
+# provide almost no value. If you really need them then override this
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
+
+do_install:append () {
+    # we don't need any of this stuff to build Rust
+    rm -rf "${D}/usr/lib/cmake"
+}
+
+PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liblto"
+
+# Add the extra locations to avoid the complaints about unpackaged files
+FILES:${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
+FILES:${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
+FILES:${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
+FILES:${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
+FILES:${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
+FILES:${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch b/poky/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch
new file mode 100644
index 0000000..943c211
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch
@@ -0,0 +1,32 @@
+From 7111770e8290082530d920e120995bf81431b0aa Mon Sep 17 00:00:00 2001
+From: Martin Kelly <mkelly@xevo.com>
+Date: Fri, 19 May 2017 00:22:57 -0700
+Subject: [PATCH 12/18] llvm: allow env override of exe path
+
+When using a native llvm-config from inside a sysroot, we need llvm-config to
+return the libraries, include directories, etc. from inside the sysroot rather
+than from the native sysroot. Thus provide an env override for calling
+llvm-config from a target sysroot.
+
+Signed-off-by: Martin Kelly <mkelly@xevo.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ llvm/tools/llvm-config/llvm-config.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/llvm/tools/llvm-config/llvm-config.cpp
++++ b/llvm/tools/llvm-config/llvm-config.cpp
+@@ -226,6 +226,13 @@ Typical components:\n\
+ 
+ /// Compute the path to the main executable.
+ std::string GetExecutablePath(const char *Argv0) {
++  // Hack for Yocto: we need to override the root path when we are using
++  // llvm-config from within a target sysroot.
++  const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH");
++  if (Sysroot != nullptr) {
++    return Sysroot;
++  }
++
+   // This just needs to be some symbol in the binary; C++ doesn't
+   // allow taking the address of ::main however.
+   void *P = (void *)(intptr_t)GetExecutablePath;
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb
new file mode 100644
index 0000000..81b2bd1
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb
@@ -0,0 +1,5 @@
+# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
+#
+LLVM_RELEASE = "12.0.1"
+require rust-source-${PV}.inc
+require rust-llvm.inc
diff --git a/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc b/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc
new file mode 100644
index 0000000..598f4ed
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc
@@ -0,0 +1,18 @@
+require rust-snapshot.inc
+
+## This is information on the rust-snapshot (binary) used to build our current release.
+## snapshot info is taken from rust/src/stage0.txt
+## TODO: find a way to add additional SRC_URIs based on the contents of an
+##       earlier SRC_URI.
+RS_VERSION = "1.53.0"
+CARGO_VERSION = "1.53.0"
+
+# TODO: Add hashes for other architecture toolchains as well. Make a script?
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "66d5257bbd194db08e67ca63a74cc80cdc4a36eaa30bf7dfe65861d9deaff7f7"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "9c2f0443a546dd18f1f020c7711a7b9864432545ceb812e79315c1e76508b193"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "e4437f6c83574fc60e183f4df439190f7610e4a669476802795645da66fbb83b"
+
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "fc261d0ff057c58b36057c30217bad1a29a9a3f257c70f5df88ad3f1d982386e"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "a857e5c615f6b5b3afc6b707ae007b3b4624585b0b2ba9b38b553114db37f8d5"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "4fa425a2d4633aeca67fa42695b3b9100f8b988dd1c21e60d6b2aa1164e55c0c"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-snapshot.inc b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
new file mode 100644
index 0000000..79d03af
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -0,0 +1,9 @@
+SRC_URI += " \
+    https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+    https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+    https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+"
+
+RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
+RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
+CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
diff --git a/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc b/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc
new file mode 100644
index 0000000..335c7ce
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-source-1.54.0.inc
@@ -0,0 +1,3 @@
+require rust-source.inc
+
+SRC_URI[rust.sha256sum] = "a2934f85f76a35a3796c0fefd31e91f5b6dd8377cd8c3769c1c10e7ce7a495f4"
diff --git a/poky/meta/recipes-devtools/rust/rust-source.inc b/poky/meta/recipes-devtools/rust/rust-source.inc
new file mode 100644
index 0000000..1529ecf
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-source.inc
@@ -0,0 +1,6 @@
+SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
+
+RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
+
+UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
+UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"
diff --git a/poky/meta/recipes-devtools/rust/rust-target.inc b/poky/meta/recipes-devtools/rust/rust-target.inc
new file mode 100644
index 0000000..3f637b3
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-target.inc
@@ -0,0 +1,10 @@
+require rust.inc
+
+DEPENDS += "rust-llvm (=${PV})"
+
+# Otherwise we'll depend on what we provide
+INHIBIT_DEFAULT_RUST_DEPS:class-native = "1"
+# We don't need to depend on gcc-native because yocto assumes it exists
+PROVIDES:class-native = "virtual/${TARGET_PREFIX}rust"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc
new file mode 100644
index 0000000..f035855
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc
@@ -0,0 +1,38 @@
+
+require rust-cross-canadian-common.inc
+
+RUST_TOOLS_CLIPPY_PN = "rust-tools-clippy-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS_RUSTFMT_PN = "rust-tools-rustfmt-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS_PKGS = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN}"
+PN = "rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+PACKAGES = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN} ${PN}"
+RDEPENDS:${PN} += "${RUST_TOOLS_PKGS}"
+
+do_compile () {
+    rust_runx build --stage 2 src/tools/clippy
+    rust_runx build --stage 2 src/tools/rustfmt
+}
+
+do_install () {
+    SYS_BINDIR=$(dirname ${D}${bindir})
+
+    install -d "${SYS_BINDIR}"
+    cp build/${SNAPSHOT_BUILD_SYS}/stage2-tools-bin/* ${SYS_BINDIR}
+    for i in ${SYS_BINDIR}/*; do
+	chrpath -r "\$ORIGIN/../lib" ${i}
+    done
+
+    chown -R root.root ${D}
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+FILES:${RUST_TOOLS_CLIPPY_PN} = "${PKG_SYS_BINDIR}/cargo-clippy ${PKG_SYS_BINDIR}/clippy-driver"
+FILES:${RUST_TOOLS_RUSTFMT_PN} = "${PKG_SYS_BINDIR}/rustfmt"
+
+SUMMARY:${PN} = "Rust helper tools"
+SUMMARY:${RUST_TOOLS_CLIPPY_PN} = "A collection of lints to catch common mistakes and improve your Rust code"
+SUMMARY:${RUST_TOOLS_RUSTFMT_PN} = "A tool for formatting Rust code according to style guidelines"
+
diff --git a/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000..053147b
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb
@@ -0,0 +1,6 @@
+require rust-tools-cross-canadian.inc
+require rust-source-${PV}.inc
+require rust-snapshot-${PV}.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/poky/meta/recipes-devtools/rust/rust.inc b/poky/meta/recipes-devtools/rust/rust.inc
new file mode 100644
index 0000000..dc92cf5
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust.inc
@@ -0,0 +1,201 @@
+SUMMARY = "Rust compiler and runtime libaries"
+HOMEPAGE = "http://www.rust-lang.org"
+SECTION = "devel"
+LICENSE = "MIT | Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
+
+inherit rust
+inherit cargo_common
+
+DEPENDS += "file-native python3-native"
+DEPENDS:append:class-native = " rust-llvm-native"
+
+S = "${RUSTSRC}"
+
+# We generate local targets, and need to be able to locate them
+export RUST_TARGET_PATH="${WORKDIR}/targets/"
+
+export FORCE_CRATE_HASH="${BB_TASKHASH}"
+
+RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
+export YOCTO_ALTERNATE_EXE_PATH = "${RUST_ALTERNATE_EXE_PATH}"
+export YOCTO_ALTERNATE_MULTILIB_NAME = "/${BASELIB}"
+
+# We don't want to use bitbakes vendoring because the rust sources do their
+# own vendoring.
+CARGO_DISABLE_BITBAKE_VENDORING = "1"
+
+# We can't use RUST_BUILD_SYS here because that may be "musl" if
+# TCLIBC="musl". Snapshots are always -unknown-linux-gnu
+SNAPSHOT_BUILD_SYS = "${BUILD_ARCH}-unknown-linux-gnu"
+setup_cargo_environment () {
+    # The first step is to build bootstrap and some early stage tools,
+    # these are build for the same target as the snapshot, e.g.
+    # x86_64-unknown-linux-gnu.
+    # Later stages are build for the native target (i.e. target.x86_64-linux)
+    cargo_common_do_configure
+
+    printf '[target.%s]\n' "${SNAPSHOT_BUILD_SYS}" >> ${CARGO_HOME}/config
+    printf "linker = '%s'\n" "${RUST_BUILD_CCLD}" >> ${CARGO_HOME}/config
+}
+
+include rust-common.inc
+
+do_rust_setup_snapshot () {
+    for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
+        "${installer}" --prefix="${WORKDIR}/rust-snapshot" --disable-ldconfig
+    done
+
+    # Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
+    # and fail without it there.
+    mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
+    ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
+
+    # Need to use uninative's loader if enabled/present since the library paths
+    # are used internally by rust and result in symbol mismatches if we don't
+    if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+        for bin in cargo rustc rustdoc; do
+            patchelf-uninative ${WORKDIR}/rust-snapshot/bin/$bin --set-interpreter ${UNINATIVE_LOADER}
+        done
+    fi
+}
+addtask rust_setup_snapshot after do_unpack before do_configure
+do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
+
+python do_configure() {
+    import json
+    try:
+        import configparser
+    except ImportError:
+        import ConfigParser as configparser
+
+    # toml is rather similar to standard ini like format except it likes values
+    # that look more JSON like. So for our purposes simply escaping all values
+    # as JSON seem to work fine.
+
+    e = lambda s: json.dumps(s)
+
+    config = configparser.RawConfigParser()
+
+    # [target.ARCH-poky-linux]
+    target_section = "target.{}".format(d.getVar('TARGET_SYS', True))
+    config.add_section(target_section)
+
+    llvm_config = d.expand("${YOCTO_ALTERNATE_EXE_PATH}")
+    config.set(target_section, "llvm-config", e(llvm_config))
+
+    config.set(target_section, "cxx", e(d.expand("${RUST_TARGET_CXX}")))
+    config.set(target_section, "cc", e(d.expand("${RUST_TARGET_CC}")))
+
+    # If we don't do this rust-native will compile it's own llvm for BUILD.
+    # [target.${BUILD_ARCH}-unknown-linux-gnu]
+    target_section = "target.{}".format(d.getVar('SNAPSHOT_BUILD_SYS', True))
+    config.add_section(target_section)
+
+    config.set(target_section, "llvm-config", e(llvm_config))
+
+    config.set(target_section, "cxx", e(d.expand("${RUST_BUILD_CXX}")))
+    config.set(target_section, "cc", e(d.expand("${RUST_BUILD_CC}")))
+
+    # [rust]
+    config.add_section("rust")
+    config.set("rust", "rpath", e(True))
+    config.set("rust", "channel", e("stable"))
+
+    # Whether or not to optimize the compiler and standard library
+    config.set("rust", "optimize", e(True))
+
+    # [build]
+    config.add_section("build")
+    config.set("build", "submodules", e(False))
+    config.set("build", "docs", e(False))
+
+    rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
+    config.set("build", "rustc", e(rustc))
+
+    # Support for the profiler runtime to generate e.g. coverage report,
+    # PGO etc.
+    config.set("build", "profiler", e(True))
+
+    cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
+    config.set("build", "cargo", e(cargo))
+
+    config.set("build", "vendor", e(True))
+
+    if not "targets" in locals():
+        targets = [d.getVar("TARGET_SYS", True)]
+    config.set("build", "target", e(targets))
+
+    if not "hosts" in locals():
+        hosts = [d.getVar("HOST_SYS", True)]
+    config.set("build", "host", e(hosts))
+
+    # We can't use BUILD_SYS since that is something the rust snapshot knows
+    # nothing about when trying to build some stage0 tools (like fabricate)
+    config.set("build", "build", e(d.getVar("SNAPSHOT_BUILD_SYS", True)))
+
+    # [install]
+    config.add_section("install")
+    # ./x.py install doesn't have any notion of "destdir"
+    # but we can prepend ${D} to all the directories instead
+    config.set("install", "prefix",  e(d.getVar("D", True) + d.getVar("prefix", True)))
+    config.set("install", "bindir",  e(d.getVar("D", True) + d.getVar("bindir", True)))
+    config.set("install", "libdir",  e(d.getVar("D", True) + d.getVar("libdir", True)))
+    config.set("install", "datadir", e(d.getVar("D", True) + d.getVar("datadir", True)))
+    config.set("install", "mandir",  e(d.getVar("D", True) + d.getVar("mandir", True)))
+
+    with open("config.toml", "w") as f:
+        f.write('changelog-seen = 2\n\n')
+        config.write(f)
+
+    # set up ${WORKDIR}/cargo_home
+    bb.build.exec_func("setup_cargo_environment", d)
+}
+
+
+rust_runx () {
+    echo "COMPILE ${PN}" "$@"
+
+    # CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
+    # wide range of targets (not just TARGET). Yocto's settings for them will
+    # be inappropriate, avoid using.
+    unset CFLAGS
+    unset LDFLAGS
+    unset CXXFLAGS
+    unset CPPFLAGS
+
+    oe_cargo_fix_env
+
+    python3 src/bootstrap/bootstrap.py ${@oe.utils.parallel_make_argument(d, '-j %d')} "$@" --verbose
+}
+rust_runx[vardepsexclude] += "PARALLEL_MAKE"
+
+do_compile () {
+    rust_runx build
+}
+
+rust_do_install () {
+    mkdir -p ${D}${bindir}
+    cp build/${HOST_SYS}/stage2/bin/* ${D}${bindir}
+
+    mkdir -p ${D}${libdir}/rustlib
+    cp -pRd build/${HOST_SYS}/stage2/lib/* ${D}${libdir}
+    # Remove absolute symlink so bitbake doesn't complain
+    rm -f ${D}${libdir}/rustlib/src/rust
+}
+
+rust_install_targets() {
+    # Install our custom target.json files
+    local td="${D}${libdir}/rustlib/"
+    install -d "$td"
+    for tgt in "${WORKDIR}/targets/"* ; do
+        install -m 0644 "$tgt" "$td"
+    done
+}
+
+
+do_install () {
+    rust_do_install
+    rust_install_targets
+}
+# ex: sts=4 et sw=4 ts=8
diff --git a/poky/meta/recipes-devtools/rust/rust_1.54.0.bb b/poky/meta/recipes-devtools/rust/rust_1.54.0.bb
new file mode 100644
index 0000000..e7d8d70
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust_1.54.0.bb
@@ -0,0 +1,20 @@
+require rust-target.inc
+require rust-source-${PV}.inc
+require rust-snapshot-${PV}.inc
+
+INSANE_SKIP:${PN}:class-native = "already-stripped"
+
+do_compile () {
+    rust_runx build --stage 2
+}
+
+rust_do_install() {
+    rust_runx install
+}
+
+python () {
+    pn = d.getVar('PN')
+
+    if not pn.endswith("-native"):
+        raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
+}
diff --git a/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch b/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch
deleted file mode 100644
index fc88186..0000000
--- a/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 94e1911ca24726b7cb3efe2f8b9eb7a784757e18 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Sun, 26 Jan 2020 18:35:13 +0000
-Subject: [PATCH] squashfs-tools: fix build failure against gcc-10
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On gcc-10 (and gcc-9 -fno-common) build fails as:
-
-```
-cc ... -o mksquashfs
-ld: read_fs.o:(.bss+0x0):
-  multiple definition of `fwriter_buffer'; mksquashfs.o:(.bss+0x400c90): first defined here
-ld: read_fs.o:(.bss+0x8):
-  multiple definition of `bwriter_buffer'; mksquashfs.o:(.bss+0x400c98): first defined here
-```
-
-gcc-10 will change the default from -fcommon to fno-common:
-https://gcc.gnu.org/PR85678.
-
-The error also happens if CFLAGS=-fno-common passed explicitly.
-
-Reported-by: Toralf Förster
-Bug: https://bugs.gentoo.org/706456
-Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
-Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/fe2f5da4b0f8994169c53e84b7cb8a0feefc97b5]
----
- squashfs-tools/mksquashfs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/squashfs-tools/mksquashfs.h b/squashfs-tools/mksquashfs.h
-index 1beefef..b650306 100644
---- a/squashfs-tools/mksquashfs.h
-+++ b/squashfs-tools/mksquashfs.h
-@@ -143,7 +143,7 @@ struct append_file {
- #endif
- 
- extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache;
--struct cache *bwriter_buffer, *fwriter_buffer;
-+extern struct cache *bwriter_buffer, *fwriter_buffer;
- extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer,
- 	*to_frag, *locked_fragment, *to_process_frag;
- extern struct append_file **file_mapping;
diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch
new file mode 100644
index 0000000..b505f05
--- /dev/null
+++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch
@@ -0,0 +1,34 @@
+From c9e263a7add76df1ed92e879d964264067c0f6e8 Mon Sep 17 00:00:00 2001
+From: Patrick McCarty <patrick.mccarty@intel.com>
+Date: Mon, 26 Jul 2021 11:38:43 -0700
+Subject: [PATCH] Avoid use of INSTALL_DIR for symlink targets
+
+In case INSTALL_DIR is overridden with a staged install location, using
+INSTALL_DIR for the symlink target path prefix will yield an incorrect location
+for the final installation.
+
+Because the symlink itself is already installed to INSTALL_DIR, simply removing
+the INSTALL_DIR prefix suffices as a fix.
+
+Note that using $DESTDIR/$INSTALL_DIR where appropriate can avoid this type of
+issue, but that can be considered a future enhancement.
+
+Upstream-Status: Backport
+Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ squashfs-tools/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/squashfs-tools/Makefile b/squashfs-tools/Makefile
+index 5795d0d..998c5fd 100755
+--- a/Makefile
++++ b/Makefile
+@@ -406,5 +406,5 @@ install: mksquashfs unsquashfs
+ 	mkdir -p $(INSTALL_DIR)
+ 	cp mksquashfs $(INSTALL_DIR)
+ 	cp unsquashfs $(INSTALL_DIR)
+-	ln -fs $(INSTALL_DIR)/unsquashfs $(INSTALL_DIR)/sqfscat
+-	ln -fs $(INSTALL_DIR)/mksquashfs $(INSTALL_DIR)/sqfstar
++	ln -fs unsquashfs $(INSTALL_DIR)/sqfscat
++	ln -fs mksquashfs $(INSTALL_DIR)/sqfstar
diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
index 1a9e8f1..c78f446 100644
--- a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
+++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
@@ -7,17 +7,17 @@
 LICENSE = "GPL-2"
 LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-PV = "4.4"
-SRCREV = "52eb4c279cd283ed9802dd1ceb686560b22ffb67"
+PV = "4.5"
+SRCREV = "0496d7c3de3e09da37ba492081c86159806ebb07"
 SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \
-           file://0001-squashfs-tools-fix-build-failure-against-gcc-10.patch;striplevel=2 \
-"
+           file://0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch \
+           "
 
 S = "${WORKDIR}/git/squashfs-tools"
 
 EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS}"
 
-PACKAGECONFIG ??= "gzip xz lzo lz4 lzma xattr reproducible"
+PACKAGECONFIG ??= "gzip xz lzo lz4 lzma xattr zstd reproducible"
 PACKAGECONFIG[gzip] = "GZIP_SUPPORT=1,GZIP_SUPPORT=0,zlib"
 PACKAGECONFIG[xz] = "XZ_SUPPORT=1,XZ_SUPPORT=0,xz"
 PACKAGECONFIG[lzo] = "LZO_SUPPORT=1,LZO_SUPPORT=0,lzo"
diff --git a/poky/meta/recipes-devtools/swig/swig.inc b/poky/meta/recipes-devtools/swig/swig.inc
index eb8d723..e8562a9 100644
--- a/poky/meta/recipes-devtools/swig/swig.inc
+++ b/poky/meta/recipes-devtools/swig/swig.inc
@@ -3,7 +3,7 @@
 code with other languages including Perl, Tcl, Ruby, Python, Java, Guile, \
 Mzscheme, Chicken, OCaml, Pike, and C#."
 HOMEPAGE = "http://swig.sourceforge.net/"
-LICENSE = "BSD & GPLv3"
+LICENSE = "BSD-3-Clause & GPLv3"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \
                     file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \
                     file://LICENSE-UNIVERSITIES;md5=8ce9dcc8f7c994de4a408b205c72ba08"
diff --git a/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
index 48e6e02..c186db6 100644
--- a/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/poky/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -10,7 +10,7 @@
 PV = "1.7.0+git${SRCPV}"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
-SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent \
+SRC_URI = "git://git.eclipse.org/r/tcf/org.eclipse.tcf.agent.git;protocol=https \
            file://fix_ranlib.patch \
            file://ldflags.patch \
            file://tcf-agent.init \
diff --git a/poky/meta/recipes-devtools/vala/vala_0.52.4.bb b/poky/meta/recipes-devtools/vala/vala_0.52.4.bb
deleted file mode 100644
index 8e2869d..0000000
--- a/poky/meta/recipes-devtools/vala/vala_0.52.4.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
-
-SRC_URI[sha256sum] = "ecde520e5160e659ee699f8b1cdc96065edbd44bbd08eb48ef5f2506751fdf31"
diff --git a/poky/meta/recipes-devtools/vala/vala_0.52.5.bb b/poky/meta/recipes-devtools/vala/vala_0.52.5.bb
new file mode 100644
index 0000000..2f78c4a
--- /dev/null
+++ b/poky/meta/recipes-devtools/vala/vala_0.52.5.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+
+SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
+
+SRC_URI[sha256sum] = "84a1bb312b3e5dcae4b7b25c45598d375e2cb69233cefb59a15d2350c76bdd91"