summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRandy MacLeod <Randy.MacLeod@windriver.com>2021-08-10 13:52:19 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-08-26 22:09:24 +0100
commit3ed57578cca93ff1ba4e0bf3f25566e10659a2f9 (patch)
treeadf55dc33aee6d0403bcf9a9c4f1da6c310e7f65
parent8e0a655a51bb8ce57a6581209325642d1b9a97de (diff)
downloadopenembedded-core-contrib-3ed57578cca93ff1ba4e0bf3f25566e10659a2f9.tar.gz
rust: initial merge of most of meta-rust
In the meta-rust repo at commit: 448047c Upgrade to 1.54.0 (#359) Make the required directories: mkdir ../oe-core/meta/recipes-devtools/rust mkdir ../oe-core/meta/recipes-devtools/cargo mkdir ../oe-core/meta/recipes-example and then: cp recipes-devtools/rust/* ../oe-core/meta/recipes-devtools/rust cp recipes-devtools/cargo/* ../oe-core/meta/recipes-devtools/cargo cp lib/crate.py ../oe-core/meta/lib cp recipes-example/* ../oe-core/meta/recipes-example cp conf/distro/include/rust_* ../oe-core/meta/conf/distro/include/ cp classes/* ../oe-core/meta/classes/ cp recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb ../oe-core/meta/recipes-core/packagegroups Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/cargo.bbclass89
-rw-r--r--meta/classes/cargo_common.bbclass129
-rw-r--r--meta/classes/crate-fetch.bbclass13
-rw-r--r--meta/classes/rust-bin.bbclass149
-rw-r--r--meta/classes/rust-common.bbclass174
-rw-r--r--meta/classes/rust.bbclass45
-rw-r--r--meta/conf/distro/include/rust_security_flags.inc7
-rw-r--r--meta/conf/distro/include/rust_versions.inc13
-rw-r--r--meta/lib/crate.py149
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb18
-rw-r--r--meta/recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch28
-rw-r--r--meta/recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch73
-rw-r--r--meta/recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch37
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian.inc74
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian_1.51.0.bb6
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb6
-rw-r--r--meta/recipes-devtools/cargo/cargo.inc50
-rw-r--r--meta/recipes-devtools/cargo/cargo_1.51.0.bb8
-rw-r--r--meta/recipes-devtools/cargo/cargo_1.54.0.bb4
-rw-r--r--meta/recipes-devtools/rust/files/riscv-march.patch73
-rw-r--r--meta/recipes-devtools/rust/files/rv64gc.patch37
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.51.0/0001-Add-base-definitions-for-riscv64-musl.patch904
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.51.0/0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch29
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.51.0/0003-FIXUP-Correct-definitions-to-match-musl.patch740
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-1.51.0-checksums-for-modified-files.patch21
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-checksums-for-modified-files.patch21
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch905
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch31
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch741
-rw-r--r--meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch23
-rw-r--r--meta/recipes-devtools/rust/libstd-rs.inc40
-rw-r--r--meta/recipes-devtools/rust/libstd-rs_1.51.0.bb12
-rw-r--r--meta/recipes-devtools/rust/libstd-rs_1.54.0.bb11
-rw-r--r--meta/recipes-devtools/rust/rust-common.inc346
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian-common.inc53
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian.inc78
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian_1.51.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-cross.inc71
-rw-r--r--meta/recipes-devtools/rust/rust-cross_1.51.0.bb2
-rw-r--r--meta/recipes-devtools/rust/rust-cross_1.54.0.bb2
-rw-r--r--meta/recipes-devtools/rust/rust-llvm.inc63
-rw-r--r--meta/recipes-devtools/rust/rust-llvm/0001-nfc-Fix-missing-include.patch26
-rw-r--r--meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch32
-rw-r--r--meta/recipes-devtools/rust/rust-llvm_1.51.0.bb7
-rw-r--r--meta/recipes-devtools/rust/rust-llvm_1.54.0.bb5
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot-1.51.0.inc18
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc18
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot.inc9
-rw-r--r--meta/recipes-devtools/rust/rust-source-1.51.0.inc3
-rw-r--r--meta/recipes-devtools/rust/rust-source-1.54.0.inc3
-rw-r--r--meta/recipes-devtools/rust/rust-source.inc3
-rw-r--r--meta/recipes-devtools/rust/rust-target.inc10
-rw-r--r--meta/recipes-devtools/rust/rust-tools-cross-canadian.inc38
-rw-r--r--meta/recipes-devtools/rust/rust-tools-cross-canadian_1.51.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust.inc193
-rw-r--r--meta/recipes-devtools/rust/rust/0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch75
-rw-r--r--meta/recipes-devtools/rust/rust_1.51.0.bb16
-rw-r--r--meta/recipes-devtools/rust/rust_1.54.0.bb11
-rw-r--r--meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch23
-rw-r--r--meta/recipes-example/rust-hello-world/rust-hello-world_git.bb17
-rw-r--r--meta/recipes-example/rustfmt/rustfmt_1.4.2.bb171
63 files changed, 5977 insertions, 0 deletions
diff --git a/meta/classes/cargo.bbclass b/meta/classes/cargo.bbclass
new file mode 100644
index 0000000000..0ca38143c0
--- /dev/null
+++ b/meta/classes/cargo.bbclass
@@ -0,0 +1,89 @@
+##
+## Purpose:
+## This class is used by any recipes that are built using
+## Cargo.
+
+inherit cargo_common
+
+# the binary we will use
+CARGO = "cargo"
+
+# We need cargo to compile for the target
+BASEDEPENDS:append = " cargo-native"
+
+# Ensure we get the right rust variant
+DEPENDS:append:class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
+DEPENDS:append:class-native = " rust-native"
+
+# Enable build separation
+B = "${WORKDIR}/build"
+
+# In case something fails in the build process, give a bit more feedback on
+# where the issue occured
+export RUST_BACKTRACE = "1"
+
+# The directory of the Cargo.toml relative to the root directory, per default
+# assume there's a Cargo.toml directly in the root directory
+CARGO_SRC_DIR ??= ""
+
+# The actual path to the Cargo.toml
+MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
+
+RUSTFLAGS ??= ""
+BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
+CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --manifest-path=${MANIFEST_PATH}"
+
+# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
+# change if CARGO_BUILD_FLAGS changes.
+BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
+CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
+oe_cargo_build () {
+ export RUSTFLAGS="${RUSTFLAGS}"
+ export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
+ bbnote "cargo = $(which ${CARGO})"
+ bbnote "rustc = $(which ${RUSTC})"
+ bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
+ "${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
+}
+
+do_compile[progress] = "outof:\s+(\d+)/(\d+)"
+cargo_do_compile () {
+ oe_cargo_fix_env
+ oe_cargo_build
+}
+
+cargo_do_install () {
+ local have_installed=false
+ for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
+ case $tgt in
+ *.so|*.rlib)
+ install -d "${D}${rustlibdir}"
+ install -m755 "$tgt" "${D}${rustlibdir}"
+ have_installed=true
+ ;;
+ *examples)
+ if [ -d "$tgt" ]; then
+ for example in "$tgt/"*; do
+ if [ -f "$example" ] && [ -x "$example" ]; then
+ install -d "${D}${bindir}"
+ install -m755 "$example" "${D}${bindir}"
+ have_installed=true
+ fi
+ done
+ fi
+ ;;
+ *)
+ if [ -f "$tgt" ] && [ -x "$tgt" ]; then
+ install -d "${D}${bindir}"
+ install -m755 "$tgt" "${D}${bindir}"
+ have_installed=true
+ fi
+ ;;
+ esac
+ done
+ if ! $have_installed; then
+ die "Did not find anything to install"
+ fi
+}
+
+EXPORT_FUNCTIONS do_compile do_install
diff --git a/meta/classes/cargo_common.bbclass b/meta/classes/cargo_common.bbclass
new file mode 100644
index 0000000000..b0b039a22e
--- /dev/null
+++ b/meta/classes/cargo_common.bbclass
@@ -0,0 +1,129 @@
+##
+## Purpose:
+## This class is to support building with cargo. It
+## must be different than cargo.bbclass because Rust
+## now builds with Cargo but cannot use cargo.bbclass
+## due to dependencies and assumptions in cargo.bbclass
+## that Rust & Cargo are already installed. So this
+## is used by cargo.bbclass and Rust
+##
+
+# add crate fetch support
+inherit crate-fetch
+inherit rust-common
+
+# Where we download our registry and dependencies to
+export CARGO_HOME = "${WORKDIR}/cargo_home"
+
+# The pkg-config-rs library used by cargo build scripts disables itself when
+# cross compiling unless this is defined. We set up pkg-config appropriately
+# for cross compilation, so tell it we know better than it.
+export PKG_CONFIG_ALLOW_CROSS = "1"
+
+# Don't instruct cargo to use crates downloaded by bitbake. Some rust packages,
+# for example the rust compiler itself, come with their own vendored sources.
+# Specifying two [source.crates-io] will not work.
+CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
+
+# Used by libstd-rs to point to the vendor dir included in rustc src
+CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
+
+CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
+cargo_common_do_configure () {
+ mkdir -p ${CARGO_HOME}/bitbake
+
+ cat <<- EOF > ${CARGO_HOME}/config
+ # EXTRA_OECARGO_PATHS
+ paths = [
+ $(for p in ${EXTRA_OECARGO_PATHS}; do echo \"$p\",; done)
+ ]
+ EOF
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # Local mirror vendored by bitbake
+ [source.bitbake]
+ directory = "${CARGO_VENDORING_DIRECTORY}"
+ EOF
+
+ if [ -z "${EXTERNALSRC}" ] && [ ${CARGO_DISABLE_BITBAKE_VENDORING} = "0" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [source.crates-io]
+ replace-with = "bitbake"
+ local-registry = "/nonexistant"
+ EOF
+ fi
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [http]
+ # Multiplexing can't be enabled because http2 can't be enabled
+ # in curl-native without dependency loops
+ multiplexing = false
+
+ # Ignore the hard coded and incorrect path to certificates
+ cainfo = "${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt"
+
+ EOF
+
+ if [ -n "${http_proxy}" ]; then
+ echo "proxy = \"${http_proxy}\"" >> ${CARGO_HOME}/config
+ fi
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # HOST_SYS
+ [target.${HOST_SYS}]
+ linker = "${CARGO_RUST_TARGET_CCLD}"
+ EOF
+
+ if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # BUILD_SYS
+ [target.${BUILD_SYS}]
+ linker = "${RUST_BUILD_CCLD}"
+ EOF
+ fi
+
+ # Put build output in build directory preferred by bitbake instead of
+ # inside source directory unless they are the same
+ if [ "${B}" != "${S}" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [build]
+ # Use out of tree build destination to avoid poluting the source tree
+ target-dir = "${B}/target"
+ EOF
+ fi
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [term]
+ progress.when = 'always'
+ progress.width = 80
+ EOF
+}
+
+oe_cargo_fix_env () {
+ export CC="${RUST_TARGET_CC}"
+ export CXX="${RUST_TARGET_CXX}"
+ export CFLAGS="${CFLAGS}"
+ export CXXFLAGS="${CXXFLAGS}"
+ export AR="${AR}"
+ export TARGET_CC="${RUST_TARGET_CC}"
+ export TARGET_CXX="${RUST_TARGET_CXX}"
+ export TARGET_CFLAGS="${CFLAGS}"
+ export TARGET_CXXFLAGS="${CXXFLAGS}"
+ export TARGET_AR="${AR}"
+ export HOST_CC="${RUST_BUILD_CC}"
+ export HOST_CXX="${RUST_BUILD_CXX}"
+ export HOST_CFLAGS="${BUILD_CFLAGS}"
+ export HOST_CXXFLAGS="${BUILD_CXXFLAGS}"
+ export HOST_AR="${BUILD_AR}"
+}
+
+EXTRA_OECARGO_PATHS ??= ""
+
+EXPORT_FUNCTIONS do_configure
diff --git a/meta/classes/crate-fetch.bbclass b/meta/classes/crate-fetch.bbclass
new file mode 100644
index 0000000000..c0ed434a96
--- /dev/null
+++ b/meta/classes/crate-fetch.bbclass
@@ -0,0 +1,13 @@
+#
+# crate-fetch class
+#
+# Registers 'crate' method for Bitbake fetch2.
+#
+# Adds support for following format in recipe SRC_URI:
+# crate://<packagename>/<version>
+#
+
+python () {
+ import crate
+ bb.fetch2.methods.append( crate.Crate() )
+}
diff --git a/meta/classes/rust-bin.bbclass b/meta/classes/rust-bin.bbclass
new file mode 100644
index 0000000000..c87343b3cf
--- /dev/null
+++ b/meta/classes/rust-bin.bbclass
@@ -0,0 +1,149 @@
+inherit rust
+
+RDEPENDS:${PN}:append:class-target = " ${RUSTLIB_DEP}"
+
+RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
+EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
+
+# Some libraries alias with the standard library but libstd is configured to
+# make it difficult or imposisble to use its version. Unfortunately libstd
+# must be explicitly overridden using extern.
+OVERLAP_LIBS = "\
+ libc \
+ log \
+ getopts \
+ rand \
+"
+def get_overlap_deps(d):
+ deps = d.getVar("DEPENDS").split()
+ overlap_deps = []
+ for o in d.getVar("OVERLAP_LIBS").split():
+ l = len([o for dep in deps if (o + '-rs' in dep)])
+ if l > 0:
+ overlap_deps.append(o)
+ return " ".join(overlap_deps)
+OVERLAP_DEPS = "${@get_overlap_deps(d)}"
+
+# Prevents multiple static copies of standard library modules
+# See https://github.com/rust-lang/rust/issues/19680
+RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
+RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
+
+CRATE_NAME ?= "${@d.getVar('BPN').replace('-rs', '').replace('-', '_')}"
+BINNAME ?= "${BPN}"
+LIBNAME ?= "lib${CRATE_NAME}-rs"
+CRATE_TYPE ?= "dylib"
+BIN_SRC ?= "${S}/src/main.rs"
+LIB_SRC ?= "${S}/src/lib.rs"
+
+rustbindest ?= "${bindir}"
+rustlibdest ?= "${rustlibdir}"
+RUST_RPATH_ABS ?= "${rustlibdir}:${rustlib}"
+
+def relative_rpaths(paths, base):
+ relpaths = set()
+ for p in paths.split(':'):
+ if p == base:
+ relpaths.add('$ORIGIN')
+ continue
+ relpaths.add(os.path.join('$ORIGIN', os.path.relpath(p, base)))
+ return '-rpath=' + ':'.join(relpaths) if len(relpaths) else ''
+
+RUST_LIB_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustlibdest', True))}"
+RUST_BIN_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustbindest', True))}"
+
+def libfilename(d):
+ if d.getVar('CRATE_TYPE', True) == 'dylib':
+ return d.getVar('LIBNAME', True) + '.so'
+ else:
+ return d.getVar('LIBNAME', True) + '.rlib'
+
+def link_args(d, bin):
+ linkargs = []
+ if bin:
+ rpaths = d.getVar('RUST_BIN_RPATH_FLAGS', False)
+ else:
+ rpaths = d.getVar('RUST_LIB_RPATH_FLAGS', False)
+ if d.getVar('CRATE_TYPE', True) == 'dylib':
+ linkargs.append('-soname')
+ linkargs.append(libfilename(d))
+ if len(rpaths):
+ linkargs.append(rpaths)
+ if len(linkargs):
+ return ' '.join(['-Wl,' + arg for arg in linkargs])
+ else:
+ return ''
+
+get_overlap_externs () {
+ externs=
+ for dep in ${OVERLAP_DEPS}; do
+ extern=$(ls ${STAGING_DIR_HOST}/${rustlibdir}/lib$dep-rs.{so,rlib} 2>/dev/null \
+ | awk '{print $1}');
+ if [ -n "$extern" ]; then
+ externs="$externs --extern $dep=$extern"
+ else
+ echo "$dep in depends but no such library found in ${rustlibdir}!" >&2
+ exit 1
+ fi
+ done
+ echo "$externs"
+}
+
+do_configure () {
+}
+
+oe_runrustc () {
+ export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
+ bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
+ "${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
+}
+
+oe_compile_rust_lib () {
+ rm -rf ${LIBNAME}.{rlib,so}
+ local -a link_args
+ if [ -n '${@link_args(d, False)}' ]; then
+ link_args[0]='-C'
+ link_args[1]='link-args=${@link_args(d, False)}'
+ fi
+ oe_runrustc $(get_overlap_externs) \
+ "${link_args[@]}" \
+ ${LIB_SRC} \
+ -o ${@libfilename(d)} \
+ --crate-name=${CRATE_NAME} --crate-type=${CRATE_TYPE} \
+ "$@"
+}
+oe_compile_rust_lib[vardeps] += "get_overlap_externs"
+
+oe_compile_rust_bin () {
+ rm -rf ${BINNAME}
+ local -a link_args
+ if [ -n '${@link_args(d, True)}' ]; then
+ link_args[0]='-C'
+ link_args[1]='link-args=${@link_args(d, True)}'
+ fi
+ oe_runrustc $(get_overlap_externs) \
+ "${link_args[@]}" \
+ ${BIN_SRC} -o ${BINNAME} "$@"
+}
+oe_compile_rust_bin[vardeps] += "get_overlap_externs"
+
+oe_install_rust_lib () {
+ for lib in $(ls ${LIBNAME}.{so,rlib} 2>/dev/null); do
+ echo Installing $lib
+ install -D -m 755 $lib ${D}/${rustlibdest}/$lib
+ done
+}
+
+oe_install_rust_bin () {
+ echo Installing ${BINNAME}
+ install -D -m 755 ${BINNAME} ${D}/${rustbindest}/${BINNAME}
+}
+
+do_rust_bin_fixups() {
+ for f in `find ${PKGD} -name '*.so*'`; do
+ echo "Strip rust note: $f"
+ ${OBJCOPY} -R .note.rustc $f $f
+ done
+}
+PACKAGE_PREPROCESS_FUNCS += "do_rust_bin_fixups"
+
diff --git a/meta/classes/rust-common.bbclass b/meta/classes/rust-common.bbclass
new file mode 100644
index 0000000000..2093654ac6
--- /dev/null
+++ b/meta/classes/rust-common.bbclass
@@ -0,0 +1,174 @@
+# Common variables used by all Rust builds
+export rustlibdir = "${libdir}/rust"
+FILES:${PN} += "${rustlibdir}/*.so"
+FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
+FILES:${PN}-dbg += "${rustlibdir}/.debug"
+
+RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
+RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
+RUSTLIB_DEP ?= "libstd-rs"
+RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
+RUST_PANIC_STRATEGY ?= "unwind"
+
+# Native builds are not effected by TCLIBC. Without this, rust-native
+# thinks it's "target" (i.e. x86_64-linux) is a musl target.
+RUST_LIBC = "${TCLIBC}"
+RUST_LIBC:class-native = "glibc"
+
+def determine_libc(d, thing):
+ '''Determine which libc something should target'''
+
+ # BUILD is never musl, TARGET may be musl or glibc,
+ # HOST could be musl, but only if a compiler is built to be run on
+ # target in which case HOST_SYS != BUILD_SYS.
+ if thing == 'TARGET':
+ libc = d.getVar('RUST_LIBC')
+ elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
+ libc = d.getVar('RUST_LIBC')
+ else:
+ libc = d.getVar('RUST_LIBC:class-native')
+
+ return libc
+
+def target_is_armv7(d):
+ '''Determine if target is armv7'''
+ # TUNE_FEATURES may include arm* even if the target is not arm
+ # in the case of *-native packages
+ if d.getVar('TARGET_ARCH') != 'arm':
+ return False
+
+ feat = d.getVar('TUNE_FEATURES')
+ feat = frozenset(feat.split())
+ mach_overrides = d.getVar('MACHINEOVERRIDES')
+ mach_overrides = frozenset(mach_overrides.split(':'))
+
+ v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
+ if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
+ return False
+ else:
+ return True
+
+# Responsible for taking Yocto triples and converting it to Rust triples
+def rust_base_triple(d, thing):
+ '''
+ Mangle bitbake's *_SYS into something that rust might support (see
+ rust/mk/cfg/* for a list)
+
+ Note that os is assumed to be some linux form
+ '''
+
+ # The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
+ if thing == "TARGET" and target_is_armv7(d):
+ arch = "armv7"
+ else:
+ arch = d.getVar('{}_ARCH'.format(thing))
+
+ # All the Yocto targets are Linux and are 'unknown'
+ vendor = "-unknown"
+ os = d.getVar('{}_OS'.format(thing))
+ libc = determine_libc(d, thing)
+
+ # Prefix with a dash and convert glibc -> gnu
+ if libc == "glibc":
+ libc = "-gnu"
+ elif libc == "musl":
+ libc = "-musl"
+
+ # Don't double up musl (only appears to be the case on aarch64)
+ if os == "linux-musl":
+ if libc != "-musl":
+ bb.fatal("{}_OS was '{}' but TCLIBC was not 'musl'".format(thing, os))
+ os = "linux"
+
+ # This catches ARM targets and appends the necessary hard float bits
+ if os == "linux-gnueabi" or os == "linux-musleabi":
+ libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
+ return arch + vendor + '-' + os + libc
+
+# Naming explanation
+# Yocto
+# - BUILD_SYS - Yocto triple of the build environment
+# - HOST_SYS - What we're building for in Yocto
+# - TARGET_SYS - What we're building for in Yocto
+#
+# So when building '-native' packages BUILD_SYS == HOST_SYS == TARGET_SYS
+# When building packages for the image HOST_SYS == TARGET_SYS
+# This is a gross over simplification as there are other modes but
+# currently this is all that's supported.
+#
+# Rust
+# - TARGET - the system where the binary will run
+# - HOST - the system where the binary is being built
+#
+# Rust additionally will use two additional cases:
+# - undecorated (e.g. CC) - equivalent to TARGET
+# - triple suffix (e.g. CC:x86_64_unknown_linux_gnu) - both
+# see: https://github.com/alexcrichton/gcc-rs
+# The way that Rust's internal triples and Yocto triples are mapped together
+# its likely best to not use the triple suffix due to potential confusion.
+
+RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
+RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
+RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
+
+# wrappers to get around the fact that Rust needs a single
+# binary but Yocto's compiler and linker commands have
+# arguments. Technically the archiver is always one command but
+# this is necessary for builds that determine the prefix and then
+# use those commands based on the prefix.
+WRAPPER_DIR = "${WORKDIR}/wrapper"
+RUST_BUILD_CC = "${WRAPPER_DIR}/build-rust-cc"
+RUST_BUILD_CXX = "${WRAPPER_DIR}/build-rust-cxx"
+RUST_BUILD_CCLD = "${WRAPPER_DIR}/build-rust-ccld"
+RUST_BUILD_AR = "${WRAPPER_DIR}/build-rust-ar"
+RUST_TARGET_CC = "${WRAPPER_DIR}/target-rust-cc"
+RUST_TARGET_CXX = "${WRAPPER_DIR}/target-rust-cxx"
+RUST_TARGET_CCLD = "${WRAPPER_DIR}/target-rust-ccld"
+RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
+
+create_wrapper () {
+ file="$1"
+ shift
+
+ cat <<- EOF > "${file}"
+ #!/bin/sh
+ exec $@ "\$@"
+ EOF
+ chmod +x "${file}"
+}
+
+export WRAPPER_TARGET_CC = "${CC}"
+export WRAPPER_TARGET_CXX = "${CXX}"
+export WRAPPER_TARGET_CCLD = "${CCLD}"
+export WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
+export WRAPPER_TARGET_AR = "${AR}"
+
+# compiler is used by gcc-rs
+# linker is used by rustc/cargo
+# archiver is used by the build of libstd-rs
+do_rust_create_wrappers () {
+ mkdir -p "${WRAPPER_DIR}"
+
+ # Yocto Build / Rust Host C compiler
+ create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
+ # Yocto Build / Rust Host C++ compiler
+ create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
+ # Yocto Build / Rust Host linker
+ create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
+ # Yocto Build / Rust Host archiver
+ create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
+
+ # Yocto Target / Rust Target C compiler
+ create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}"
+ # Yocto Target / Rust Target C++ compiler
+ create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}"
+ # Yocto Target / Rust Target linker
+ create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
+ # Yocto Target / Rust Target archiver
+ create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
+
+}
+
+addtask rust_create_wrappers before do_configure after do_patch
+do_rust_create_wrappers[dirs] += "${WRAPPER_DIR}"
diff --git a/meta/classes/rust.bbclass b/meta/classes/rust.bbclass
new file mode 100644
index 0000000000..5c8938d09f
--- /dev/null
+++ b/meta/classes/rust.bbclass
@@ -0,0 +1,45 @@
+inherit rust-common
+
+RUSTC = "rustc"
+
+RUSTC_ARCHFLAGS += "--target=${HOST_SYS} ${RUSTFLAGS}"
+
+def rust_base_dep(d):
+ # Taken from meta/classes/base.bbclass `base_dep_prepend` and modified to
+ # use rust instead of gcc
+ deps = ""
+ if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS'):
+ if (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
+ deps += " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
+ else:
+ deps += " rust-native"
+ return deps
+
+DEPENDS:append = " ${@rust_base_dep(d)}"
+
+# BUILD_LDFLAGS
+# ${STAGING_LIBDIR_NATIVE}
+# ${STAGING_BASE_LIBDIR_NATIVE}
+# BUILDSDK_LDFLAGS
+# ${STAGING_LIBDIR}
+# #{STAGING_DIR_HOST}
+# TARGET_LDFLAGS ?????
+#RUSTC_BUILD_LDFLAGS = "\
+# --sysroot ${STAGING_DIR_NATIVE} \
+# -L${STAGING_LIBDIR_NATIVE} \
+# -L${STAGING_BASE_LIBDIR_NATIVE} \
+#"
+
+# XXX: for some reason bitbake sets BUILD_* & TARGET_* but uses the bare
+# variables for HOST. Alias things to make it easier for us.
+HOST_LDFLAGS ?= "${LDFLAGS}"
+HOST_CFLAGS ?= "${CFLAGS}"
+HOST_CXXFLAGS ?= "${CXXFLAGS}"
+HOST_CPPFLAGS ?= "${CPPFLAGS}"
+
+rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
+# Native sysroot standard library path
+rustlib_src="${prefix}/lib/${rustlib_suffix}"
+# Host sysroot standard library path
+rustlib="${libdir}/${rustlib_suffix}"
+rustlib:class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
diff --git a/meta/conf/distro/include/rust_security_flags.inc b/meta/conf/distro/include/rust_security_flags.inc
new file mode 100644
index 0000000000..590bef17a0
--- /dev/null
+++ b/meta/conf/distro/include/rust_security_flags.inc
@@ -0,0 +1,7 @@
+# Build errors with PIE options enabled
+SECURITY_CFLAGS:pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
+
+SECURITY_LDFLAGS:pn-rust-cross-arm = " -lssp_nonshared -lssp"
diff --git a/meta/conf/distro/include/rust_versions.inc b/meta/conf/distro/include/rust_versions.inc
new file mode 100644
index 0000000000..a11ba22a8f
--- /dev/null
+++ b/meta/conf/distro/include/rust_versions.inc
@@ -0,0 +1,13 @@
+# include this in your distribution to easily switch between versions
+# just by changing RUST_VERSION variable
+
+RUST_VERSION ?= "1.51.0"
+
+PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
+PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
+PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
+PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
+PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
+PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
+PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
+PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"
diff --git a/meta/lib/crate.py b/meta/lib/crate.py
new file mode 100644
index 0000000000..d10f441875
--- /dev/null
+++ b/meta/lib/crate.py
@@ -0,0 +1,149 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementation for crates.io
+"""
+
+# Copyright (C) 2016 Doug Goldstein
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import hashlib
+import json
+import os
+import shutil
+import subprocess
+import bb
+from bb.fetch2 import logger, subprocess_setup, UnpackError
+from bb.fetch2.wget import Wget
+
+
+class Crate(Wget):
+
+ """Class to fetch crates via wget"""
+
+ def _cargo_bitbake_path(self, rootdir):
+ return os.path.join(rootdir, "cargo_home", "bitbake")
+
+ def supports(self, ud, d):
+ """
+ Check to see if a given url is for this fetcher
+ """
+ return ud.type in ['crate']
+
+ def recommends_checksum(self, urldata):
+ return False
+
+ def urldata_init(self, ud, d):
+ """
+ Sets up to download the respective crate from crates.io
+ """
+
+ if ud.type == 'crate':
+ self._crate_urldata_init(ud, d)
+
+ super(Crate, self).urldata_init(ud, d)
+
+ def _crate_urldata_init(self, ud, d):
+ """
+ Sets up the download for a crate
+ """
+
+ # URL syntax is: crate://NAME/VERSION
+ # break the URL apart by /
+ parts = ud.url.split('/')
+ if len(parts) < 5:
+ raise bb.fetch2.ParameterError("Invalid URL: Must be crate://HOST/NAME/VERSION", ud.url)
+
+ # last field is version
+ version = parts[len(parts) - 1]
+ # second to last field is name
+ name = parts[len(parts) - 2]
+ # host (this is to allow custom crate registries to be specified
+ host = '/'.join(parts[2:len(parts) - 2])
+
+ # if using upstream just fix it up nicely
+ if host == 'crates.io':
+ host = 'crates.io/api/v1/crates'
+
+ ud.url = "https://%s/%s/%s/download" % (host, name, version)
+ ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
+ ud.parm['name'] = name
+
+ logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
+
+ def unpack(self, ud, rootdir, d):
+ """
+ Uses the crate to build the necessary paths for cargo to utilize it
+ """
+ if ud.type == 'crate':
+ return self._crate_unpack(ud, rootdir, d)
+ else:
+ super(Crate, self).unpack(ud, rootdir, d)
+
+ def _crate_unpack(self, ud, rootdir, d):
+ """
+ Unpacks a crate
+ """
+ thefile = ud.localpath
+
+ # possible metadata we need to write out
+ metadata = {}
+
+ # change to the rootdir to unpack but save the old working dir
+ save_cwd = os.getcwd()
+ os.chdir(rootdir)
+
+ pn = d.getVar('BPN')
+ if pn == ud.parm.get('name'):
+ cmd = "tar -xz --no-same-owner -f %s" % thefile
+ else:
+ cargo_bitbake = self._cargo_bitbake_path(rootdir)
+
+ cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
+
+ # ensure we've got these paths made
+ bb.utils.mkdirhier(cargo_bitbake)
+
+ # generate metadata necessary
+ with open(thefile, 'rb') as f:
+ # get the SHA256 of the original tarball
+ tarhash = hashlib.sha256(f.read()).hexdigest()
+
+ metadata['files'] = {}
+ metadata['package'] = tarhash
+
+ # path it
+ path = d.getVar('PATH')
+ if path:
+ cmd = "PATH=\"%s\" %s" % (path, cmd)
+ bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
+
+ ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
+
+ os.chdir(save_cwd)
+
+ if ret != 0:
+ raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
+
+ # if we have metadata to write out..
+ if len(metadata) > 0:
+ cratepath = os.path.splitext(os.path.basename(thefile))[0]
+ bbpath = self._cargo_bitbake_path(rootdir)
+ mdfile = '.cargo-checksum.json'
+ mdpath = os.path.join(bbpath, cratepath, mdfile)
+ with open(mdpath, "w") as f:
+ json.dump(metadata, f)
diff --git a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
new file mode 100644
index 0000000000..0d4f5ec9ef
--- /dev/null
+++ b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Host SDK package for Rust cross canadian toolchain"
+PN = "packagegroup-rust-cross-canadian-${MACHINE}"
+
+inherit cross-canadian packagegroup
+
+PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
+
+RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+RDEPENDS:${PN} = " \
+ ${@all_multilib_tune_values(d, 'RUST')} \
+ ${@all_multilib_tune_values(d, 'CARGO')} \
+ rust-cross-canadian-src \
+ ${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
+"
+
diff --git a/meta/recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch b/meta/recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch
new file mode 100644
index 0000000000..9d47c9beb5
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch
@@ -0,0 +1,28 @@
+From 9844e63845da6cdafa485ad1ad3c99eaaa80312d Mon Sep 17 00:00:00 2001
+From: Johan Anderholm <johan.anderholm@gmail.com>
+Date: Sun, 27 Jan 2019 10:19:00 +0100
+Subject: [PATCH] Disable http2
+
+http2 requires that curl is build with nghttp2 which in turn depends on
+many dependencies and ultimately a dependency loop in the case of
+curl-native. As long as multiplexing is disabled in cargo this should
+be fine.
+
+Upstream-Status: Inappropriate
+---
+ Cargo.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 8a144a4..c4f856e 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -25,7 +25,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1.1" }
+ crates-io = { path = "crates/crates-io", version = "0.33.0" }
+ crossbeam-utils = "0.8"
+ crypto-hash = "0.3.1"
+-curl = { version = "0.4.23", features = ["http2"] }
++curl = { version = "0.4.23" }
+ curl-sys = "0.4.22"
+ env_logger = "0.8.1"
+ pretty_env_logger = { version = "0.4", optional = true }
diff --git a/meta/recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch b/meta/recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch
new file mode 100644
index 0000000000..a10b3a4d93
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-1.51.0/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/meta/recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch b/meta/recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch
new file mode 100644
index 0000000000..aab1e18453
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-1.51.0/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/meta/recipes-devtools/cargo/cargo-cross-canadian.inc b/meta/recipes-devtools/cargo/cargo-cross-canadian.inc
new file mode 100644
index 0000000000..840793c50b
--- /dev/null
+++ b/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/meta/recipes-devtools/cargo/cargo-cross-canadian_1.51.0.bb b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.51.0.bb
new file mode 100644
index 0000000000..dba400bcfb
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.51.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/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000000..dba400bcfb
--- /dev/null
+++ b/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/meta/recipes-devtools/cargo/cargo.inc b/meta/recipes-devtools/cargo/cargo.inc
new file mode 100644
index 0000000000..32ccf0b7ae
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo.inc
@@ -0,0 +1,50 @@
+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"
+
+inherit cargo
+
+do_cargo_setup_snapshot () {
+ ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
+}
+
+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"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# 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/meta/recipes-devtools/cargo/cargo_1.51.0.bb b/meta/recipes-devtools/cargo/cargo_1.51.0.bb
new file mode 100644
index 0000000000..335b491cc9
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo_1.51.0.bb
@@ -0,0 +1,8 @@
+require recipes-devtools/rust/rust-source-${PV}.inc
+require recipes-devtools/rust/rust-snapshot-${PV}.inc
+require cargo.inc
+
+SRC_URI += "file://0001-Disable-http2.patch \
+ file://riscv-march.patch;patchdir=../../.. \
+ file://rv64gc.patch;patchdir=../../.. \
+ "
diff --git a/meta/recipes-devtools/cargo/cargo_1.54.0.bb b/meta/recipes-devtools/cargo/cargo_1.54.0.bb
new file mode 100644
index 0000000000..1f69615640
--- /dev/null
+++ b/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
+
diff --git a/meta/recipes-devtools/rust/files/riscv-march.patch b/meta/recipes-devtools/rust/files/riscv-march.patch
new file mode 100644
index 0000000000..a10b3a4d93
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/files/rv64gc.patch b/meta/recipes-devtools/rust/files/rv64gc.patch
new file mode 100644
index 0000000000..aab1e18453
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs-1.51.0/0001-Add-base-definitions-for-riscv64-musl.patch b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0001-Add-base-definitions-for-riscv64-musl.patch
new file mode 100644
index 0000000000..85d0edc4d1
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0001-Add-base-definitions-for-riscv64-musl.patch
@@ -0,0 +1,904 @@
+From 23aa6dfba4f2745800d89f9ee67d390465c76bfa Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Feb 2021 00:32:57 -0800
+Subject: [PATCH 1/4] Add base definitions for riscv64 + musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Signed-off-by: Khem Raj <raj.khem@gmail.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/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+index 62abee00d..78e805b15 100644
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -164,6 +164,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/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+new file mode 100644
+index 000000000..14bae11d0
+--- /dev/null
++++ b/vendor/libc/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.30.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs-1.51.0/0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
new file mode 100644
index 0000000000..4edc0990c8
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
@@ -0,0 +1,29 @@
+From 2f418ff6fbe1dbdd2f56b3e208f3da6d71c0a7e4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Feb 2021 00:34:05 -0800
+Subject: [PATCH 2/4] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vendor/libc/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+index 0d427ae38..d7eb212f7 100644
+--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+@@ -601,7 +601,8 @@ cfg_if! {
+ if #[cfg(any(target_arch = "x86_64",
+ target_arch = "aarch64",
+ target_arch = "mips64",
+- target_arch = "powerpc64"))] {
++ target_arch = "powerpc64",
++ target_arch = "riscv64"))] {
+ mod b64;
+ pub use self::b64::*;
+ } else if #[cfg(any(target_arch = "x86",
+--
+2.30.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs-1.51.0/0003-FIXUP-Correct-definitions-to-match-musl.patch b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0003-FIXUP-Correct-definitions-to-match-musl.patch
new file mode 100644
index 0000000000..51c4b00a6d
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0003-FIXUP-Correct-definitions-to-match-musl.patch
@@ -0,0 +1,740 @@
+From f6a2f444d9deae167f4c939c6e874744986744a1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Feb 2021 00:34:56 -0800
+Subject: [PATCH 3/4] FIXUP Correct definitions to match musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+index 14bae11d0..c37190cca 100644
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc/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.30.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-1.51.0-checksums-for-modified-files.patch b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-1.51.0-checksums-for-modified-files.patch
new file mode 100644
index 0000000000..5102956fc4
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-1.51.0-checksums-for-modified-files.patch
@@ -0,0 +1,21 @@
+From 2a4fd6cb31072f0423980d034cdd2bd0e095ae43 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 28 Mar 2021 00:46:39 -0700
+Subject: [PATCH] Update checksums for modified files
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vendor/libc/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
+index 81e7ff477..491096135 100644
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"50547f85785c64798a3bb93515b795603a78fa131fb92c7e2d1e4d7b463eb829","Cargo.toml":"9daf7eede4ad99d8807bbed4bb2ace420bf40aaf7d4a20bc89cc2674902651c4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"e487789ca77b0015d75cecb253286d4a1406f11b1ae538929414fc0506842bef","rustfmt.toml":"8a654d5787585ca8f2c20580737336fc327f411a07b0dbd4870adf6e9bdf624f","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"d5d4488e8c0b8227f516fe13810f550a2a72af3bdfe769200ad8687c8755bdf6","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"0bc9db9863eca7e6254c9bf150812e8ad1c1460b3228126e4a12f26b9d7a03da","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":"974a1808d0d94bb2f168a6007a5302deb1e64f528fd3ee8feaadaae3814378c2","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"017fdd719cc85352a1c062d40edd96a821e19d25abe23b55e40ed6e7ac2892e1","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":"aa4d94b4440bd7c195f445658d0ac09555d2212bffdc9f90935ad5721e2373ec","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6b25421a27239d46983278d2f93d9e90dc125677b420c881a0b79e1b541584da","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":"2e9b8f8af44eb75539c7688c2723745a5f10079a7faac99e43ae7534bd111f48","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"09a2441852a6dfb7e7fce28d5115ce243109deab1c569d80c67c5b634ac4bb23","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"72a87d191189486d44bc19a3296817fcf828087ce1286bca20d474a3b2602602","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c12a475eed4a2ebc7f2261f82875dc6dfa33649cbb176073c03183bf26c5f5b9","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":"b6be7822a69713966c21efb879eb45f6f9e20c1b4342b524a587ed7350a5b063","src/unix/bsd/mod.rs":"26160c60a33cec65ccc3b28277d40bd95f7f62ee857f931ada76cbc7c2694858","src/unix/bsd/netbsdlike/mod.rs":"48dd60524119c1e09b255d5472d091e7e7b2b29eab04be51b4b1e740bd022859","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"a70f3c73b423bf44b06f16e44934ce3536517e60b3a4e256f41340a9e5dded40","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":"253888b365d4f0dd86d3eae1a63662248514b132031d4bf5434d8a63144ce296","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":"8b8a62f392c23fe4fd1c334ca6c2828617ece19f0a59115d116d957fa348eb74","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"2d8d3ce0299931199011bb73136bebbddf88edf7d263cc39d26dbfaaa1a14228","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"155994121906903a2e0afad895f0b3b7546f6e54d6305a3336ce2c4dfafbfdfa","src/unix/linux_like/android/b32/mod.rs":"6b3fd3e1eb21e50d000f496729b40968b1c728f5f10d4fb18a9aef44bff383ff","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"5b1e9fcd77ca5f939acb7fb5f5da12f305b0377698d8b8989feb236e26360aa0","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":"c56f1213b01cbf63ec68810bf14b30490bd44d2d5b927ec439d45c8ec2cd282e","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":"b7cfd66a54c512c9df9fbc0e25baf7ecca1f0deb0dd789f811b0e1cab72b2244","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"0770f13ce30b98752d5e868332bf5a55bee8389108fe9d91cf2c2bf71c237093","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","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":"4932bb1e4d6b00e3eea211f241a29d08a7a6cb310633d4cb585194ac088e19b7","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"5cf043f5342c37b1cf50bc09de9baaa8d120a8827640f328a74ebbff1fe5aca0","src/unix/linux_like/linux/gnu/b32/mod.rs":"3d282f97f171ce235e687169e7a494e65c21bdc4e59c28360dae60b6c2ffa80c","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"527284eff16dbbed819a12f169a4f957e1ece913a6756be32b2938610c25fc73","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"b16636eff9bcd1b6e23b4a915606f230a01cd8f2752e9331eb576cb023ad27f5","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"98cb96fb979947a2d141d298739649e241168ba7047e6cd1928abdd722281c1b","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"43ddb3fc0e8a9d4b32f929bdbd7dbf3e18167409a6f8e8f12aa694ce34a8d7dc","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":"d2bc7110c0ea616471474957cb16ef54fac9567a569d90ca82961a4eda3fadda","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"ca99bae93eb60138c698ec6b0e78f87cb1dd7181ed3c42c3281c8037c7468921","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":"facd49a8dfcd9e27c8dac6ebaefb07f801a1b8aa21b8d5f477ccf654a14b9d20","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"aa980f78651165fff4db9c9ff33966b3345b682a3600827b91c8141e86f0ff1e","src/unix/linux_like/linux/gnu/b64/s390x.rs":"86562ad9e0468597b13eb8a606f3df456097ad7a9df11ee8dc77c215fc2fc5fc","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"5eaf057e149846b07af6ccc17c6c1b7abf0b4a50ee4fbb100c7c81880c235398","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"f047199e4267bcb63a831379c72884ccf2189b5f2879479436342b2c5b58671e","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"74deaf2135168fd8a8fe3382a443d3800b95ea833e94150b265cc59a24872166","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"60ff6e9aca19226714cf0c7f58f4388f5f046cf099cc4f61f9a2913d94d7e846","src/unix/linux_like/linux/gnu/mod.rs":"1be1cd3b22972dc80d5d4e6d01300032726b8049e38c43508f0a86d991fa5a11","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"3f7e58dd79738ab1cf0724cc2239a259fccc4429cb0b2106cdef1b7a101ed1c8","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"5f65fb836de0f5d84dfb78894a045548dab3f62af5241319ec5da46686261a90","src/unix/linux_like/linux/musl/b32/hexagon.rs":"7c6c481f70da1fe6ca759f363784e130041f3d87906c45910fc1142b5ef17970","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"f7adecc4a36b4eb484c168b6c21e73f02ee23f607c0a0351f773f9d9c83b8400","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"cf286cbf4d2076aaa82662ace2b5c333480410fa59af5cb4542d59f04da84b31","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"ecb903211cb7a956ad1dab4dbef3a0344d9e4df4bd7b4a49ab5cc591df114dc2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"9870fd9a953c98b775c9e17a29a66bbe8019a6236eb69a0272f42232a226521d","src/unix/linux_like/linux/musl/b64/mips64.rs":"4bfd8ee1f22a163a7037e1e401d143573bcb14cc3321da0698528e9c0b68c81a","src/unix/linux_like/linux/musl/b64/mod.rs":"8b76e92a1505ad785d4aa0b7739e0b93647a1e81910949b49cedb6c88468be9c","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"8992be6cb56e403e9a712c0ca4761934f873cf89f3e6d3cc4483f43e5a192351","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"d6d98b6e5af5d9b1caa7e67fe18c3c4d76fdb92603b42efed83719a41c53defe","src/unix/linux_like/linux/musl/mod.rs":"9115ae4fa6ea6a4f56f6a4addffe643436e0a07ac4e0b118b4a43ab1a058e739","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/mod.rs":"e65c49d9ee229aee11118758e36beebd90629e2e0c59647786cb0e472837d705","src/unix/mod.rs":"01148308e021d9d616d8324e20a1911fcde65e3c11e8e74c359a468bba6fedcd","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":"35ea283f645afbc7ddebba90d46875c9dc5edc8d215d4becc9e2681a909c5aa1","src/unix/newlib/no_align.rs":"7123dcec13604a11b7765c380ff3a4d0da19c39f4b03919de7857723c0cf1502","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"4c72003c5e692e648c7e798358c49af6901e68850dbba0624af84c40baf208f5","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"b865c65438e102403708fa8a299d02ea635bda0879a256d99fadd0092d42f224","src/unix/solarish/compat.rs":"3f13657fc072462b85b5f937f0db1427c41acb2a714cc4f78fefba1ea8036846","src/unix/solarish/illumos.rs":"c42db942ab90813ecc7b2b32dea0e173e1e349e2e049a06021fd0dbc090c2c30","src/unix/solarish/mod.rs":"8d7ddc8dd25a9404f9181a49438d9506c676cfd4b6fa21dbe5c1f9969abc4b91","src/unix/solarish/solaris.rs":"3d3cc14b47839da1e4ec117bce1395e22ef86d8d1eb1fdcc6464d2fd8267efb4","src/unix/uclibc/align.rs":"a8540e1cce5913a45bc8d7422b79e86c0b12740e8a679478e0e4d863a31f8cc1","src/unix/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/arm/mod.rs":"d67dd46bc6f417169fc6a23832bde7ccdafc5d1bcb08b10debdd82edaf75d529","src/unix/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/mips/mips32/mod.rs":"a045ebc6619f540adf670b88a987abd2d6e42e440a552e8cfe9f8c77f397e873","src/unix/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/uclibc/mips/mod.rs":"a76e9b7cd24d05ca15e412d96d4b2d39f0b2320f7823b15873c6271c16b9c52b","src/unix/uclibc/mod.rs":"2ec3fbe6853807a796632bb8920c48dda18f46823d1c5121db19c29dc86d2800","src/unix/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/uclibc/x86_64/align.rs":"4e34cebb7955e9c98ae2f310be6f8ed16a861fc3817c08543867554aeec9524e","src/unix/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/uclibc/x86_64/mod.rs":"188fbaf06a8e23cac72718b1ef7eb4bd98bdfd946aa708151f3f7e3553b65876","src/unix/uclibc/x86_64/no_align.rs":"2ccc0107a6007c70dc49e656095b64a352ca5d8f9f3e65c1dba634effbc15636","src/unix/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"ce8eb593241f7ac0c9d5e91d535457cd169ddcb3d061d3982ba5bcf6b8d63876","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"11e1ca29d1a446845c551d5717ec5c6081459a2a850781c9194f557d53ecf44f","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"c7ab9793baaa3b6854d25fdf44266b7953533009e4fa722ca717b71d3e5d2c9d","src/windows/mod.rs":"7b74bf885712d16a3557df33ef02799dc03d4a1af953c7e6b4648954ce7a20fc","src/windows/msvc.rs":"2c2bfce66027d88021e7289139ebf5b0db258a7b6443f18872c84dbd4ef57131","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"7ccac4b00700875e6a07c6cde370d44d32fa01c5a65cdd2fca6858c479d28bb3"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"50547f85785c64798a3bb93515b795603a78fa131fb92c7e2d1e4d7b463eb829","Cargo.toml":"9daf7eede4ad99d8807bbed4bb2ace420bf40aaf7d4a20bc89cc2674902651c4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"e487789ca77b0015d75cecb253286d4a1406f11b1ae538929414fc0506842bef","rustfmt.toml":"8a654d5787585ca8f2c20580737336fc327f411a07b0dbd4870adf6e9bdf624f","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"d5d4488e8c0b8227f516fe13810f550a2a72af3bdfe769200ad8687c8755bdf6","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"0bc9db9863eca7e6254c9bf150812e8ad1c1460b3228126e4a12f26b9d7a03da","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":"974a1808d0d94bb2f168a6007a5302deb1e64f528fd3ee8feaadaae3814378c2","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"017fdd719cc85352a1c062d40edd96a821e19d25abe23b55e40ed6e7ac2892e1","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":"aa4d94b4440bd7c195f445658d0ac09555d2212bffdc9f90935ad5721e2373ec","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6b25421a27239d46983278d2f93d9e90dc125677b420c881a0b79e1b541584da","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":"2e9b8f8af44eb75539c7688c2723745a5f10079a7faac99e43ae7534bd111f48","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"09a2441852a6dfb7e7fce28d5115ce243109deab1c569d80c67c5b634ac4bb23","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"72a87d191189486d44bc19a3296817fcf828087ce1286bca20d474a3b2602602","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c12a475eed4a2ebc7f2261f82875dc6dfa33649cbb176073c03183bf26c5f5b9","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":"b6be7822a69713966c21efb879eb45f6f9e20c1b4342b524a587ed7350a5b063","src/unix/bsd/mod.rs":"26160c60a33cec65ccc3b28277d40bd95f7f62ee857f931ada76cbc7c2694858","src/unix/bsd/netbsdlike/mod.rs":"48dd60524119c1e09b255d5472d091e7e7b2b29eab04be51b4b1e740bd022859","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"a70f3c73b423bf44b06f16e44934ce3536517e60b3a4e256f41340a9e5dded40","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":"253888b365d4f0dd86d3eae1a63662248514b132031d4bf5434d8a63144ce296","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":"8b8a62f392c23fe4fd1c334ca6c2828617ece19f0a59115d116d957fa348eb74","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"2d8d3ce0299931199011bb73136bebbddf88edf7d263cc39d26dbfaaa1a14228","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"155994121906903a2e0afad895f0b3b7546f6e54d6305a3336ce2c4dfafbfdfa","src/unix/linux_like/android/b32/mod.rs":"6b3fd3e1eb21e50d000f496729b40968b1c728f5f10d4fb18a9aef44bff383ff","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"5b1e9fcd77ca5f939acb7fb5f5da12f305b0377698d8b8989feb236e26360aa0","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":"c56f1213b01cbf63ec68810bf14b30490bd44d2d5b927ec439d45c8ec2cd282e","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":"b7cfd66a54c512c9df9fbc0e25baf7ecca1f0deb0dd789f811b0e1cab72b2244","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"0770f13ce30b98752d5e868332bf5a55bee8389108fe9d91cf2c2bf71c237093","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","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":"4932bb1e4d6b00e3eea211f241a29d08a7a6cb310633d4cb585194ac088e19b7","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"5cf043f5342c37b1cf50bc09de9baaa8d120a8827640f328a74ebbff1fe5aca0","src/unix/linux_like/linux/gnu/b32/mod.rs":"3d282f97f171ce235e687169e7a494e65c21bdc4e59c28360dae60b6c2ffa80c","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"527284eff16dbbed819a12f169a4f957e1ece913a6756be32b2938610c25fc73","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"b16636eff9bcd1b6e23b4a915606f230a01cd8f2752e9331eb576cb023ad27f5","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"98cb96fb979947a2d141d298739649e241168ba7047e6cd1928abdd722281c1b","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"43ddb3fc0e8a9d4b32f929bdbd7dbf3e18167409a6f8e8f12aa694ce34a8d7dc","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":"d2bc7110c0ea616471474957cb16ef54fac9567a569d90ca82961a4eda3fadda","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"ca99bae93eb60138c698ec6b0e78f87cb1dd7181ed3c42c3281c8037c7468921","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":"facd49a8dfcd9e27c8dac6ebaefb07f801a1b8aa21b8d5f477ccf654a14b9d20","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"aa980f78651165fff4db9c9ff33966b3345b682a3600827b91c8141e86f0ff1e","src/unix/linux_like/linux/gnu/b64/s390x.rs":"86562ad9e0468597b13eb8a606f3df456097ad7a9df11ee8dc77c215fc2fc5fc","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"5eaf057e149846b07af6ccc17c6c1b7abf0b4a50ee4fbb100c7c81880c235398","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"f047199e4267bcb63a831379c72884ccf2189b5f2879479436342b2c5b58671e","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"74deaf2135168fd8a8fe3382a443d3800b95ea833e94150b265cc59a24872166","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"60ff6e9aca19226714cf0c7f58f4388f5f046cf099cc4f61f9a2913d94d7e846","src/unix/linux_like/linux/gnu/mod.rs":"1be1cd3b22972dc80d5d4e6d01300032726b8049e38c43508f0a86d991fa5a11","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"3f7e58dd79738ab1cf0724cc2239a259fccc4429cb0b2106cdef1b7a101ed1c8","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"5f65fb836de0f5d84dfb78894a045548dab3f62af5241319ec5da46686261a90","src/unix/linux_like/linux/musl/b32/hexagon.rs":"7c6c481f70da1fe6ca759f363784e130041f3d87906c45910fc1142b5ef17970","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"f7adecc4a36b4eb484c168b6c21e73f02ee23f607c0a0351f773f9d9c83b8400","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"cf286cbf4d2076aaa82662ace2b5c333480410fa59af5cb4542d59f04da84b31","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"ecb903211cb7a956ad1dab4dbef3a0344d9e4df4bd7b4a49ab5cc591df114dc2","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"9870fd9a953c98b775c9e17a29a66bbe8019a6236eb69a0272f42232a226521d","src/unix/linux_like/linux/musl/b64/mips64.rs":"4bfd8ee1f22a163a7037e1e401d143573bcb14cc3321da0698528e9c0b68c81a","src/unix/linux_like/linux/musl/b64/mod.rs":"190099be03d08125287eee7f46c1aa3a698681862ca7a505b24342b4ec789f2f","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"8992be6cb56e403e9a712c0ca4761934f873cf89f3e6d3cc4483f43e5a192351","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"d6d98b6e5af5d9b1caa7e67fe18c3c4d76fdb92603b42efed83719a41c53defe","src/unix/linux_like/linux/musl/mod.rs":"6f900a2b2958d920e3b029ffd69c9718a8f7d8e743ea48e4ab63b3dcb7fd7f74","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/mod.rs":"e65c49d9ee229aee11118758e36beebd90629e2e0c59647786cb0e472837d705","src/unix/mod.rs":"01148308e021d9d616d8324e20a1911fcde65e3c11e8e74c359a468bba6fedcd","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":"35ea283f645afbc7ddebba90d46875c9dc5edc8d215d4becc9e2681a909c5aa1","src/unix/newlib/no_align.rs":"7123dcec13604a11b7765c380ff3a4d0da19c39f4b03919de7857723c0cf1502","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"4c72003c5e692e648c7e798358c49af6901e68850dbba0624af84c40baf208f5","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"b865c65438e102403708fa8a299d02ea635bda0879a256d99fadd0092d42f224","src/unix/solarish/compat.rs":"3f13657fc072462b85b5f937f0db1427c41acb2a714cc4f78fefba1ea8036846","src/unix/solarish/illumos.rs":"c42db942ab90813ecc7b2b32dea0e173e1e349e2e049a06021fd0dbc090c2c30","src/unix/solarish/mod.rs":"8d7ddc8dd25a9404f9181a49438d9506c676cfd4b6fa21dbe5c1f9969abc4b91","src/unix/solarish/solaris.rs":"3d3cc14b47839da1e4ec117bce1395e22ef86d8d1eb1fdcc6464d2fd8267efb4","src/unix/uclibc/align.rs":"a8540e1cce5913a45bc8d7422b79e86c0b12740e8a679478e0e4d863a31f8cc1","src/unix/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/arm/mod.rs":"d67dd46bc6f417169fc6a23832bde7ccdafc5d1bcb08b10debdd82edaf75d529","src/unix/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/mips/mips32/mod.rs":"a045ebc6619f540adf670b88a987abd2d6e42e440a552e8cfe9f8c77f397e873","src/unix/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/uclibc/mips/mod.rs":"a76e9b7cd24d05ca15e412d96d4b2d39f0b2320f7823b15873c6271c16b9c52b","src/unix/uclibc/mod.rs":"2ec3fbe6853807a796632bb8920c48dda18f46823d1c5121db19c29dc86d2800","src/unix/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/uclibc/x86_64/align.rs":"4e34cebb7955e9c98ae2f310be6f8ed16a861fc3817c08543867554aeec9524e","src/unix/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/uclibc/x86_64/mod.rs":"188fbaf06a8e23cac72718b1ef7eb4bd98bdfd946aa708151f3f7e3553b65876","src/unix/uclibc/x86_64/no_align.rs":"2ccc0107a6007c70dc49e656095b64a352ca5d8f9f3e65c1dba634effbc15636","src/unix/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"ce8eb593241f7ac0c9d5e91d535457cd169ddcb3d061d3982ba5bcf6b8d63876","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"11e1ca29d1a446845c551d5717ec5c6081459a2a850781c9194f557d53ecf44f","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"c7ab9793baaa3b6854d25fdf44266b7953533009e4fa722ca717b71d3e5d2c9d","src/windows/mod.rs":"7b74bf885712d16a3557df33ef02799dc03d4a1af953c7e6b4648954ce7a20fc","src/windows/msvc.rs":"2c2bfce66027d88021e7289139ebf5b0db258a7b6443f18872c84dbd4ef57131","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"7ccac4b00700875e6a07c6cde370d44d32fa01c5a65cdd2fca6858c479d28bb3"}
+--
+2.31.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-checksums-for-modified-files.patch b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-checksums-for-modified-files.patch
new file mode 100644
index 0000000000..ffc4666be7
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs-1.51.0/0004-Update-checksums-for-modified-files.patch
@@ -0,0 +1,21 @@
+From 17c0fbd7a60c49189c22a8deb2070cdc76b97110 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Feb 2021 00:55:52 -0800
+Subject: [PATCH 4/4] Update checksums for modified files
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vendor/libc/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
+index 083640d91..0dcb9cc6c 100644
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"3a9f0037ad5f1198eada74a9d0363925ef09db664380b0e5a2840f03da260476","Cargo.toml":"2d34a451c2f1190e6eb72caa6387f7fd4947e1a60e7f248cff82a9f497867deb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"82011c39a455c4ba6fc81db69eac78225e697f4596eb29a1ac3da3a43a204f80","build.rs":"e487789ca77b0015d75cecb253286d4a1406f11b1ae538929414fc0506842bef","rustfmt.toml":"8a654d5787585ca8f2c20580737336fc327f411a07b0dbd4870adf6e9bdf624f","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"d5d4488e8c0b8227f516fe13810f550a2a72af3bdfe769200ad8687c8755bdf6","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"2bfb6ffad0170b3f56b9033a4c9ae2a3a3bb04b0ecb92cbdde7fafa7e868ca3e","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":"8aeb4106f57e956eb51f7a8dd06f299695c8738cf8adc20ac786b524615cedb5","src/macros.rs":"f024ec4ccd3762d4da198f14718d15a3ef70207f63aa3dceabf0de480fe780e9","src/psp.rs":"a621e34d2d31d9b29c725897b846122acce4763ac2017a1fe2200b133e5ad064","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/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"81254d89be1febc5bb20e787d014a624950d56e2e14973df5bbebfdabc95ae20","src/unix/bsd/apple/mod.rs":"9c6ba890cfd1f4ea834fc97260c79467cfcaaccf9c1d019347d50fec5c19f197","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"63f22519f7f4b18152f912c03b860532114b8726832c40b5590def6f02eeb13a","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"86a0e11f928db7c8587e94ea3ba5801025526ed9a35d8d592c2705f96df05c22","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":"16dd3e1a09f123d0aa544b3fd7c123654b4906cac94838fbed7f34a64413c930","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"c6152ce3db241d99e350d34352f3f3d167953ef0ee08bfbe2685cb9ebde2e83b","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c4d73339fda63f145134e9dc21bb40d96ba15c84fc62fb27bf90ba4db5e0f5d8","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":"a45d3095966dff5142d0b292a416a004c78d5689bb38ab7c8d4497b9b310e02f","src/unix/bsd/mod.rs":"4fd08b1fe9c9f74b50e8405a60dd506a6910190fbfbae7e968f1d9848f2b328e","src/unix/bsd/netbsdlike/mod.rs":"48dd60524119c1e09b255d5472d091e7e7b2b29eab04be51b4b1e740bd022859","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"d22dafd49e3b760a7644a7722f73f80434ddf64ab40cd7c3bd476c2e62eaeb16","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":"ebe8abc57672e55ab22d5ca5ef7735eb79a41a0fcae0020d0f9b52744b960693","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":"ecd6139a3656a2fb13e66fed8bed9dfceafea48c169b1fa533b9e1b09a8b18eb","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"2d8d3ce0299931199011bb73136bebbddf88edf7d263cc39d26dbfaaa1a14228","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"155994121906903a2e0afad895f0b3b7546f6e54d6305a3336ce2c4dfafbfdfa","src/unix/linux_like/android/b32/mod.rs":"0325adf3364fed7157fff5b24fabe1b36d806c39ee04ec82dd29a606d28f91f6","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"5b1e9fcd77ca5f939acb7fb5f5da12f305b0377698d8b8989feb236e26360aa0","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"655116966eb7846b933e5e28b073c329668588cd3c2120cc9ce60c697bd19978","src/unix/linux_like/android/b64/mod.rs":"6a71abfcbbcdae60c916de41cd4688d5f25bdbca83d1d9df49decd56ad726a06","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":"c6de4534c41d296519f31bee06fd6f06c0a07cd766bb0bd3421c3f897d84caa2","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"aeedf3c777bef979673f5bbaa373aa308ace6d25c33c23524d01cf7628587955","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"015ec9e064bf7dee63b5a16e6d87aef11aeeeea84a3b083f9e75a97bb7ab2f0b","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":"9e18ad197709bce3aab40537b6ea371ff13f3be7be1d50ff97964f937c517646","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"5cf043f5342c37b1cf50bc09de9baaa8d120a8827640f328a74ebbff1fe5aca0","src/unix/linux_like/linux/gnu/b32/mod.rs":"d7e392843f0a9a838566015192dbb8af7d1a5883a85547fa888b6ded78882087","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"5457ff8f90fb777cfc3cbe6c0c6a3b3f8eaecb28e66fffc53390e82010030ebe","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"7b2528fdcdbbfb5cd350b27a3f66a6950fb94be1c924c1156a1d93e8950496a1","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"796cf3eeb7319bef33afdb9c88caff8a3476842757381f75699e761aa01b89e3","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"b1005390da3ed2d95b612fdcc4b69f11165ce31cfbf50674fe877ed47ad1b431","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"e73a372b096951030ae7db4f0ad0c5a472ccd8f21973d61811b8441eaf5229af","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"e86403f310a14fc5355dd78746ac55056c91fa7cd3248d5d8a18430b4940cb2d","src/unix/linux_like/linux/gnu/b64/mod.rs":"b90d87f76bff37707a1725551fe45d70d0c106e01b1dbbcd5f60460e0a19b4c3","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"8aaaa4d9a5f79a7413930632c47382e845789dd9a191dc8bf084c8041ee350b1","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"b954a060f88cd03d0ca8bdeb864046230d0c52e2d2ab97394430f1356a357a82","src/unix/linux_like/linux/gnu/b64/s390x.rs":"818bdc54fdcb9d83190d78f31d0f4a082d06ded112ccb40daa1ab4c541ee58d5","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"22e57216290614616c671f35e24e881d6fcf9839dbfa8d2833a1a77ada28d156","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"e6197537739cb8628cad25827081c8bf6b371c02ad4b2132b30b9ae74143b1ef","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"74deaf2135168fd8a8fe3382a443d3800b95ea833e94150b265cc59a24872166","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"60ff6e9aca19226714cf0c7f58f4388f5f046cf099cc4f61f9a2913d94d7e846","src/unix/linux_like/linux/gnu/mod.rs":"714363d630eb8633390003721b5df6f49c867317077372254884d7537a3ecd3c","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"a8e9bd6e5567e81500ba9110b3d2835fd54572e7b7f33c1fd7740a09271d6ee9","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"45062a178b382ab17341a69d027b5c83325c4e79fecf45729ba9c47b1bcdc3da","src/unix/linux_like/linux/musl/b32/hexagon.rs":"7c6c481f70da1fe6ca759f363784e130041f3d87906c45910fc1142b5ef17970","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"9eb0e4953be5afaa0b9e3ac54c85ed40583cfb8cc0b03264b9bc8f763a8f3254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"cf286cbf4d2076aaa82662ace2b5c333480410fa59af5cb4542d59f04da84b31","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"9c3b6e98e7710d6c877a4e31726d36416115a58f53fc469bb173b7fe660b39e5","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"22da1c030c254c511bc335c824d40b693904975a4633f8243a8777ca68ef1c65","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"9870fd9a953c98b775c9e17a29a66bbe8019a6236eb69a0272f42232a226521d","src/unix/linux_like/linux/musl/b64/mips64.rs":"9d0158ac7a913222d0a62239ec043aa1aee73522a7a1e0e191d0642dde35c083","src/unix/linux_like/linux/musl/b64/mod.rs":"8b76e92a1505ad785d4aa0b7739e0b93647a1e81910949b49cedb6c88468be9c","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"ed9b879bb9cdc526ad83815875edeb4cad4e8829086dfba2578277c265336229","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"cfeb109c732ac6bc7d2be44069d3652e917a0509b8b545270b756ff2d52e27e8","src/unix/linux_like/linux/musl/mod.rs":"243e32b93641df7a77f970a32c0fb8e4fd4a13720e54e0e42a9da321fd169798","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/mod.rs":"377bf039b6bcdea77173687cb1e2d12d52548fd1b1b0d4113130da787684c145","src/unix/mod.rs":"856ba2bcba40d5d926ded8b6de9bf697bc5d2bd7e56ea01f73b10ea34b417435","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":"2f771ab23df36ab0c7a117e854483a917aaf9c5cbb9eded1bdda35827cdaf734","src/unix/newlib/no_align.rs":"7123dcec13604a11b7765c380ff3a4d0da19c39f4b03919de7857723c0cf1502","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"4c72003c5e692e648c7e798358c49af6901e68850dbba0624af84c40baf208f5","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"c6ac0812f85046e40f691357da8a1cbd72572bdb0f913c24aac106d7aa4ac240","src/unix/solarish/compat.rs":"3f13657fc072462b85b5f937f0db1427c41acb2a714cc4f78fefba1ea8036846","src/unix/solarish/illumos.rs":"1088c45b238e7d398dbb140d238257d5b5f93aeded98652c3f6747f0c07b4fa7","src/unix/solarish/mod.rs":"0134ce769d06b1b1f50ad15d1aa7bd8d44bcd2f66c6318dd906de8bc4a4044c7","src/unix/solarish/solaris.rs":"5914ded3ce8ec5638bb023d4cde147f016d736d5006964a1ef9839752ecb45f8","src/unix/uclibc/align.rs":"a8540e1cce5913a45bc8d7422b79e86c0b12740e8a679478e0e4d863a31f8cc1","src/unix/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/arm/mod.rs":"d67dd46bc6f417169fc6a23832bde7ccdafc5d1bcb08b10debdd82edaf75d529","src/unix/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/mips/mips32/mod.rs":"a045ebc6619f540adf670b88a987abd2d6e42e440a552e8cfe9f8c77f397e873","src/unix/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/uclibc/mips/mod.rs":"1054d0bfeb506b3346b9a4148564beced8a22da0d9c9a612101f6237756795fb","src/unix/uclibc/mod.rs":"907805e356738075844a704ef2eec8cfd628c59bb1408d3fff66e8f9ba36e4ba","src/unix/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/uclibc/x86_64/align.rs":"4e34cebb7955e9c98ae2f310be6f8ed16a861fc3817c08543867554aeec9524e","src/unix/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/uclibc/x86_64/mod.rs":"188fbaf06a8e23cac72718b1ef7eb4bd98bdfd946aa708151f3f7e3553b65876","src/unix/uclibc/x86_64/no_align.rs":"2ccc0107a6007c70dc49e656095b64a352ca5d8f9f3e65c1dba634effbc15636","src/unix/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"b7c57b72a0f312c20531ba393f6fab7331fb708170d141d898d705868a5ee780","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"11e1ca29d1a446845c551d5717ec5c6081459a2a850781c9194f557d53ecf44f","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"c7ab9793baaa3b6854d25fdf44266b7953533009e4fa722ca717b71d3e5d2c9d","src/windows/mod.rs":"7b74bf885712d16a3557df33ef02799dc03d4a1af953c7e6b4648954ce7a20fc","src/windows/msvc.rs":"2c2bfce66027d88021e7289139ebf5b0db258a7b6443f18872c84dbd4ef57131","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"3a9f0037ad5f1198eada74a9d0363925ef09db664380b0e5a2840f03da260476","Cargo.toml":"2d34a451c2f1190e6eb72caa6387f7fd4947e1a60e7f248cff82a9f497867deb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"82011c39a455c4ba6fc81db69eac78225e697f4596eb29a1ac3da3a43a204f80","build.rs":"e487789ca77b0015d75cecb253286d4a1406f11b1ae538929414fc0506842bef","rustfmt.toml":"8a654d5787585ca8f2c20580737336fc327f411a07b0dbd4870adf6e9bdf624f","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"d5d4488e8c0b8227f516fe13810f550a2a72af3bdfe769200ad8687c8755bdf6","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"2bfb6ffad0170b3f56b9033a4c9ae2a3a3bb04b0ecb92cbdde7fafa7e868ca3e","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":"8aeb4106f57e956eb51f7a8dd06f299695c8738cf8adc20ac786b524615cedb5","src/macros.rs":"f024ec4ccd3762d4da198f14718d15a3ef70207f63aa3dceabf0de480fe780e9","src/psp.rs":"a621e34d2d31d9b29c725897b846122acce4763ac2017a1fe2200b133e5ad064","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/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"81254d89be1febc5bb20e787d014a624950d56e2e14973df5bbebfdabc95ae20","src/unix/bsd/apple/mod.rs":"9c6ba890cfd1f4ea834fc97260c79467cfcaaccf9c1d019347d50fec5c19f197","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"63f22519f7f4b18152f912c03b860532114b8726832c40b5590def6f02eeb13a","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"86a0e11f928db7c8587e94ea3ba5801025526ed9a35d8d592c2705f96df05c22","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":"16dd3e1a09f123d0aa544b3fd7c123654b4906cac94838fbed7f34a64413c930","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"c6152ce3db241d99e350d34352f3f3d167953ef0ee08bfbe2685cb9ebde2e83b","src/unix/bsd/freebsdlike/freebsd/mod.rs":"c4d73339fda63f145134e9dc21bb40d96ba15c84fc62fb27bf90ba4db5e0f5d8","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":"a45d3095966dff5142d0b292a416a004c78d5689bb38ab7c8d4497b9b310e02f","src/unix/bsd/mod.rs":"4fd08b1fe9c9f74b50e8405a60dd506a6910190fbfbae7e968f1d9848f2b328e","src/unix/bsd/netbsdlike/mod.rs":"48dd60524119c1e09b255d5472d091e7e7b2b29eab04be51b4b1e740bd022859","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"b38fc046f9a40fea28bd26328b96629f4d5d63d7524936bd6af1865d401a8716","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"d22dafd49e3b760a7644a7722f73f80434ddf64ab40cd7c3bd476c2e62eaeb16","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":"ebe8abc57672e55ab22d5ca5ef7735eb79a41a0fcae0020d0f9b52744b960693","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":"ecd6139a3656a2fb13e66fed8bed9dfceafea48c169b1fa533b9e1b09a8b18eb","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"2d8d3ce0299931199011bb73136bebbddf88edf7d263cc39d26dbfaaa1a14228","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"155994121906903a2e0afad895f0b3b7546f6e54d6305a3336ce2c4dfafbfdfa","src/unix/linux_like/android/b32/mod.rs":"0325adf3364fed7157fff5b24fabe1b36d806c39ee04ec82dd29a606d28f91f6","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"5b1e9fcd77ca5f939acb7fb5f5da12f305b0377698d8b8989feb236e26360aa0","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"655116966eb7846b933e5e28b073c329668588cd3c2120cc9ce60c697bd19978","src/unix/linux_like/android/b64/mod.rs":"6a71abfcbbcdae60c916de41cd4688d5f25bdbca83d1d9df49decd56ad726a06","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":"c6de4534c41d296519f31bee06fd6f06c0a07cd766bb0bd3421c3f897d84caa2","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"aeedf3c777bef979673f5bbaa373aa308ace6d25c33c23524d01cf7628587955","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"015ec9e064bf7dee63b5a16e6d87aef11aeeeea84a3b083f9e75a97bb7ab2f0b","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":"9e18ad197709bce3aab40537b6ea371ff13f3be7be1d50ff97964f937c517646","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"5cf043f5342c37b1cf50bc09de9baaa8d120a8827640f328a74ebbff1fe5aca0","src/unix/linux_like/linux/gnu/b32/mod.rs":"d7e392843f0a9a838566015192dbb8af7d1a5883a85547fa888b6ded78882087","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"5457ff8f90fb777cfc3cbe6c0c6a3b3f8eaecb28e66fffc53390e82010030ebe","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"7b2528fdcdbbfb5cd350b27a3f66a6950fb94be1c924c1156a1d93e8950496a1","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"796cf3eeb7319bef33afdb9c88caff8a3476842757381f75699e761aa01b89e3","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"b1005390da3ed2d95b612fdcc4b69f11165ce31cfbf50674fe877ed47ad1b431","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"e73a372b096951030ae7db4f0ad0c5a472ccd8f21973d61811b8441eaf5229af","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"e86403f310a14fc5355dd78746ac55056c91fa7cd3248d5d8a18430b4940cb2d","src/unix/linux_like/linux/gnu/b64/mod.rs":"b90d87f76bff37707a1725551fe45d70d0c106e01b1dbbcd5f60460e0a19b4c3","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"8aaaa4d9a5f79a7413930632c47382e845789dd9a191dc8bf084c8041ee350b1","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"b954a060f88cd03d0ca8bdeb864046230d0c52e2d2ab97394430f1356a357a82","src/unix/linux_like/linux/gnu/b64/s390x.rs":"818bdc54fdcb9d83190d78f31d0f4a082d06ded112ccb40daa1ab4c541ee58d5","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"22e57216290614616c671f35e24e881d6fcf9839dbfa8d2833a1a77ada28d156","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"e6197537739cb8628cad25827081c8bf6b371c02ad4b2132b30b9ae74143b1ef","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"74deaf2135168fd8a8fe3382a443d3800b95ea833e94150b265cc59a24872166","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"60ff6e9aca19226714cf0c7f58f4388f5f046cf099cc4f61f9a2913d94d7e846","src/unix/linux_like/linux/gnu/mod.rs":"714363d630eb8633390003721b5df6f49c867317077372254884d7537a3ecd3c","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"a8e9bd6e5567e81500ba9110b3d2835fd54572e7b7f33c1fd7740a09271d6ee9","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"45062a178b382ab17341a69d027b5c83325c4e79fecf45729ba9c47b1bcdc3da","src/unix/linux_like/linux/musl/b32/hexagon.rs":"7c6c481f70da1fe6ca759f363784e130041f3d87906c45910fc1142b5ef17970","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"9eb0e4953be5afaa0b9e3ac54c85ed40583cfb8cc0b03264b9bc8f763a8f3254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"cf286cbf4d2076aaa82662ace2b5c333480410fa59af5cb4542d59f04da84b31","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"9c3b6e98e7710d6c877a4e31726d36416115a58f53fc469bb173b7fe660b39e5","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"22da1c030c254c511bc335c824d40b693904975a4633f8243a8777ca68ef1c65","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"9870fd9a953c98b775c9e17a29a66bbe8019a6236eb69a0272f42232a226521d","src/unix/linux_like/linux/musl/b64/mips64.rs":"9d0158ac7a913222d0a62239ec043aa1aee73522a7a1e0e191d0642dde35c083","src/unix/linux_like/linux/musl/b64/mod.rs":"190099be03d08125287eee7f46c1aa3a698681862ca7a505b24342b4ec789f2f","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"ed9b879bb9cdc526ad83815875edeb4cad4e8829086dfba2578277c265336229","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"cfeb109c732ac6bc7d2be44069d3652e917a0509b8b545270b756ff2d52e27e8","src/unix/linux_like/linux/musl/mod.rs":"9af0fab9f803eae48d566b2e92d4f943d8e02a5110d1ddf425927e8011d497f7","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/mod.rs":"377bf039b6bcdea77173687cb1e2d12d52548fd1b1b0d4113130da787684c145","src/unix/mod.rs":"856ba2bcba40d5d926ded8b6de9bf697bc5d2bd7e56ea01f73b10ea34b417435","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":"2f771ab23df36ab0c7a117e854483a917aaf9c5cbb9eded1bdda35827cdaf734","src/unix/newlib/no_align.rs":"7123dcec13604a11b7765c380ff3a4d0da19c39f4b03919de7857723c0cf1502","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/newlib/xtensa/mod.rs":"4c72003c5e692e648c7e798358c49af6901e68850dbba0624af84c40baf208f5","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"c6ac0812f85046e40f691357da8a1cbd72572bdb0f913c24aac106d7aa4ac240","src/unix/solarish/compat.rs":"3f13657fc072462b85b5f937f0db1427c41acb2a714cc4f78fefba1ea8036846","src/unix/solarish/illumos.rs":"1088c45b238e7d398dbb140d238257d5b5f93aeded98652c3f6747f0c07b4fa7","src/unix/solarish/mod.rs":"0134ce769d06b1b1f50ad15d1aa7bd8d44bcd2f66c6318dd906de8bc4a4044c7","src/unix/solarish/solaris.rs":"5914ded3ce8ec5638bb023d4cde147f016d736d5006964a1ef9839752ecb45f8","src/unix/uclibc/align.rs":"a8540e1cce5913a45bc8d7422b79e86c0b12740e8a679478e0e4d863a31f8cc1","src/unix/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/arm/mod.rs":"d67dd46bc6f417169fc6a23832bde7ccdafc5d1bcb08b10debdd82edaf75d529","src/unix/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/uclibc/mips/mips32/mod.rs":"a045ebc6619f540adf670b88a987abd2d6e42e440a552e8cfe9f8c77f397e873","src/unix/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/uclibc/mips/mod.rs":"1054d0bfeb506b3346b9a4148564beced8a22da0d9c9a612101f6237756795fb","src/unix/uclibc/mod.rs":"907805e356738075844a704ef2eec8cfd628c59bb1408d3fff66e8f9ba36e4ba","src/unix/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/uclibc/x86_64/align.rs":"4e34cebb7955e9c98ae2f310be6f8ed16a861fc3817c08543867554aeec9524e","src/unix/uclibc/x86_64/l4re.rs":"bb31053d6403091e11f95ac2203982f279f8b984a19adf30796878c45fdd8c25","src/unix/uclibc/x86_64/mod.rs":"188fbaf06a8e23cac72718b1ef7eb4bd98bdfd946aa708151f3f7e3553b65876","src/unix/uclibc/x86_64/no_align.rs":"2ccc0107a6007c70dc49e656095b64a352ca5d8f9f3e65c1dba634effbc15636","src/unix/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"b7c57b72a0f312c20531ba393f6fab7331fb708170d141d898d705868a5ee780","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"11e1ca29d1a446845c551d5717ec5c6081459a2a850781c9194f557d53ecf44f","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"c7ab9793baaa3b6854d25fdf44266b7953533009e4fa722ca717b71d3e5d2c9d","src/windows/mod.rs":"7b74bf885712d16a3557df33ef02799dc03d4a1af953c7e6b4648954ce7a20fc","src/windows/msvc.rs":"2c2bfce66027d88021e7289139ebf5b0db258a7b6443f18872c84dbd4ef57131","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743"}
+--
+2.30.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs-1.54.0/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch b/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 0000000000..7529c4ddd7
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs-1.54.0/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch b/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 0000000000..d0ddb3cbe7
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs-1.54.0/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch b/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 0000000000..8be8104f40
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs-1.54.0/0008-Update-checksums-for-modified-files-for-rust-1.54.0-.patch b/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 0000000000..23bb3aff38
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs.inc b/meta/recipes-devtools/rust/libstd-rs.inc
new file mode 100644
index 0000000000..987956344a
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/libstd-rs_1.51.0.bb b/meta/recipes-devtools/rust/libstd-rs_1.51.0.bb
new file mode 100644
index 0000000000..b4c629949c
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs_1.51.0.bb
@@ -0,0 +1,12 @@
+require rust-source-${PV}.inc
+require libstd-rs.inc
+
+SRC_URI += "file://riscv-march.patch;patchdir=../../ \
+ file://rv64gc.patch;patchdir=../../ \
+ file://0001-Add-base-definitions-for-riscv64-musl.patch;patchdir=../../ \
+ file://0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
+ file://0003-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
+ file://0004-Update-1.51.0-checksums-for-modified-files.patch;patchdir=../../ \
+"
+# libstd moved from src/libstd to library/std in 1.47+
+S = "${RUSTSRC}/library/std"
diff --git a/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb b/meta/recipes-devtools/rust/libstd-rs_1.54.0.bb
new file mode 100644
index 0000000000..1239f6a176
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
new file mode 100644
index 0000000000..350517c723
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -0,0 +1,346 @@
+
+# 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
+
+# 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"
+ 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/meta/recipes-devtools/rust/rust-cross-canadian-common.inc b/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
new file mode 100644
index 0000000000..c5d56bbeb4
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
@@ -0,0 +1,53 @@
+
+RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+require rust-target.inc
+
+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/meta/recipes-devtools/rust/rust-cross-canadian.inc b/meta/recipes-devtools/rust/rust-cross-canadian.inc
new file mode 100644
index 0000000000..8bbbd61bdc
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-cross-canadian_1.51.0.bb b/meta/recipes-devtools/rust/rust-cross-canadian_1.51.0.bb
new file mode 100644
index 0000000000..a5d02eb8d7
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian_1.51.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/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb b/meta/recipes-devtools/rust/rust-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000000..a5d02eb8d7
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-cross.inc b/meta/recipes-devtools/rust/rust-cross.inc
new file mode 100644
index 0000000000..bee7c9f12f
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-cross_1.51.0.bb b/meta/recipes-devtools/rust/rust-cross_1.51.0.bb
new file mode 100644
index 0000000000..ddc25d36b5
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross_1.51.0.bb
@@ -0,0 +1,2 @@
+require rust-cross.inc
+require rust-source-${PV}.inc
diff --git a/meta/recipes-devtools/rust/rust-cross_1.54.0.bb b/meta/recipes-devtools/rust/rust-cross_1.54.0.bb
new file mode 100644
index 0000000000..ddc25d36b5
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-llvm.inc b/meta/recipes-devtools/rust/rust-llvm.inc
new file mode 100644
index 0000000000..93e1866317
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm.inc
@@ -0,0 +1,63 @@
+SUMMARY = "LLVM compiler framework (packaged with rust)"
+LICENSE ?= "Apache-2.0-with-LLVM-exception"
+
+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/meta/recipes-devtools/rust/rust-llvm/0001-nfc-Fix-missing-include.patch b/meta/recipes-devtools/rust/rust-llvm/0001-nfc-Fix-missing-include.patch
new file mode 100644
index 0000000000..f6dee77ab2
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm/0001-nfc-Fix-missing-include.patch
@@ -0,0 +1,26 @@
+From 3b7e611bd58ba842470d17374c550e14bceca5c7 Mon Sep 17 00:00:00 2001
+From: serge-sans-paille <sguelton@redhat.com>
+Date: Tue, 10 Nov 2020 14:55:25 +0100
+Subject: [PATCH] [nfc] Fix missing include
+
+Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ llvm/utils/benchmark/src/benchmark_register.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/llvm/utils/benchmark/src/benchmark_register.h b/llvm/utils/benchmark/src/benchmark_register.h
+index 0705e219f2fa..4caa5ad4da07 100644
+--- a/llvm/utils/benchmark/src/benchmark_register.h
++++ b/llvm/utils/benchmark/src/benchmark_register.h
+@@ -1,6 +1,7 @@
+ #ifndef BENCHMARK_REGISTER_H
+ #define BENCHMARK_REGISTER_H
+
++#include <limits>
+ #include <vector>
+
+ #include "check.h"
+--
+2.30.1
+
diff --git a/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch b/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch
new file mode 100644
index 0000000000..943c2118bb
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-llvm_1.51.0.bb b/meta/recipes-devtools/rust/rust-llvm_1.51.0.bb
new file mode 100644
index 0000000000..fa4d77b1f9
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm_1.51.0.bb
@@ -0,0 +1,7 @@
+# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
+#
+LLVM_RELEASE = "11.0.1"
+require rust-source-${PV}.inc
+require rust-llvm.inc
+
+SRC_URI += "file://0001-nfc-Fix-missing-include.patch;striplevel=2" \ No newline at end of file
diff --git a/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb b/meta/recipes-devtools/rust/rust-llvm_1.54.0.bb
new file mode 100644
index 0000000000..81b2bd12b7
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-snapshot-1.51.0.inc b/meta/recipes-devtools/rust/rust-snapshot-1.51.0.inc
new file mode 100644
index 0000000000..48de352f76
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-snapshot-1.51.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.50.0"
+CARGO_VERSION = "1.50.0"
+
+# TODO: Add hashes for other architecture toolchains as well. Make a script?
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "f1eb68db2b28a56ed8701edba7cf3688011d903ca12ff9d85bd21d3f8f614792"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "9bebd360bcd9b5bb58f2a02930b9db4ae291adef259c96377f1f4cbd240bcf86"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "3cb2c68e987e5681fca9c930973f408a71151b1b255e69669a08e54d446ee803"
+
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "1a1b1a540d531c89e866083f84ef67125dee108844e4e415b07c3a1000006544"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "9b956d97d7e428ecd8634d467659ebdb5bd79c387b88363be8749eddd7f98756"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "f3c772f455406f67991ac20cff56a4fcd2d01454e29280c566119ab5180307ea"
+
diff --git a/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc b/meta/recipes-devtools/rust/rust-snapshot-1.54.0.inc
new file mode 100644
index 0000000000..598f4ed109
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-snapshot.inc b/meta/recipes-devtools/rust/rust-snapshot.inc
new file mode 100644
index 0000000000..79d03afd1b
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-source-1.51.0.inc b/meta/recipes-devtools/rust/rust-source-1.51.0.inc
new file mode 100644
index 0000000000..e9094c666a
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-source-1.51.0.inc
@@ -0,0 +1,3 @@
+require rust-source.inc
+
+SRC_URI[rust.sha256sum] = "92c68a91fca33cbafb83442cde722d010cc387dc1ee8a2680e2fb33a575821a1"
diff --git a/meta/recipes-devtools/rust/rust-source-1.54.0.inc b/meta/recipes-devtools/rust/rust-source-1.54.0.inc
new file mode 100644
index 0000000000..335c7ceb45
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
new file mode 100644
index 0000000000..52502fb49f
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -0,0 +1,3 @@
+SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
+
+RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
diff --git a/meta/recipes-devtools/rust/rust-target.inc b/meta/recipes-devtools/rust/rust-target.inc
new file mode 100644
index 0000000000..3f637b3ba5
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc b/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc
new file mode 100644
index 0000000000..f0358551ae
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.51.0.bb b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.51.0.bb
new file mode 100644
index 0000000000..053147ba46
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.51.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/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.54.0.bb
new file mode 100644
index 0000000000..053147ba46
--- /dev/null
+++ b/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/meta/recipes-devtools/rust/rust.inc b/meta/recipes-devtools/rust/rust.inc
new file mode 100644
index 0000000000..6045ab4d42
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust.inc
@@ -0,0 +1,193 @@
+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
+}
+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/meta/recipes-devtools/rust/rust/0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch b/meta/recipes-devtools/rust/rust/0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch
new file mode 100644
index 0000000000..13d81eaa37
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust/0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch
@@ -0,0 +1,75 @@
+From dd682cb48c8b667859dded98a4bbfbd891a1eca4 Mon Sep 17 00:00:00 2001
+From: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
+Date: Thu, 12 Nov 2020 19:16:59 +0300
+Subject: [PATCH] rustc_target: Fix dash vs underscore mismatches in option
+ names
+
+---
+ compiler/rustc_target/src/spec/mod.rs | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index f949bf95a50..f837114ee74 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -1428,8 +1428,8 @@ pub fn from_json(obj: Json) -> Result<Target, String> {
+ }
+
+ key!(is_builtin, bool);
+- key!(endian = "target_endian");
+- key!(c_int_width = "target_c_int_width");
++ key!(endian = "target-endian");
++ key!(c_int_width = "target-c-int-width");
+ key!(os);
+ key!(env);
+ key!(vendor);
+@@ -1466,7 +1466,7 @@ pub fn from_json(obj: Json) -> Result<Target, String> {
+ key!(exe_suffix);
+ key!(staticlib_prefix);
+ key!(staticlib_suffix);
+- key!(os_family = "target_family", optional);
++ key!(os_family = "target-family", optional);
+ key!(abi_return_struct_as_int, bool);
+ key!(is_like_osx, bool);
+ key!(is_like_solaris, bool);
+@@ -1511,7 +1511,7 @@ pub fn from_json(obj: Json) -> Result<Target, String> {
+ key!(limit_rdylib_exports, bool);
+ key!(override_export_symbols, opt_list);
+ key!(merge_functions, MergeFunctions)?;
+- key!(mcount = "target_mcount");
++ key!(mcount = "target-mcount");
+ key!(llvm_abiname);
+ key!(relax_elf_relocations, bool);
+ key!(llvm_args, list);
+@@ -1663,8 +1663,8 @@ fn to_json(&self) -> Json {
+ target_val!(data_layout);
+
+ target_option_val!(is_builtin);
+- target_option_val!(endian, "target_endian");
+- target_option_val!(c_int_width, "target_c_int_width");
++ target_option_val!(endian, "target-endian");
++ target_option_val!(c_int_width, "target-c-int-width");
+ target_option_val!(os);
+ target_option_val!(env);
+ target_option_val!(vendor);
+@@ -1701,7 +1701,7 @@ fn to_json(&self) -> Json {
+ target_option_val!(exe_suffix);
+ target_option_val!(staticlib_prefix);
+ target_option_val!(staticlib_suffix);
+- target_option_val!(os_family, "target_family");
++ target_option_val!(os_family, "target-family");
+ target_option_val!(abi_return_struct_as_int);
+ target_option_val!(is_like_osx);
+ target_option_val!(is_like_solaris);
+@@ -1746,7 +1746,7 @@ fn to_json(&self) -> Json {
+ target_option_val!(limit_rdylib_exports);
+ target_option_val!(override_export_symbols);
+ target_option_val!(merge_functions);
+- target_option_val!(mcount, "target_mcount");
++ target_option_val!(mcount, "target-mcount");
+ target_option_val!(llvm_abiname);
+ target_option_val!(relax_elf_relocations);
+ target_option_val!(llvm_args);
+--
+2.28.0
+
diff --git a/meta/recipes-devtools/rust/rust_1.51.0.bb b/meta/recipes-devtools/rust/rust_1.51.0.bb
new file mode 100644
index 0000000000..05904453f7
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust_1.51.0.bb
@@ -0,0 +1,16 @@
+require rust-target.inc
+require rust-source-${PV}.inc
+require rust-snapshot-${PV}.inc
+
+SRC_URI += " \
+ file://riscv-march.patch \
+ file://rv64gc.patch \
+ "
+
+do_compile () {
+ rust_runx build --stage 2
+}
+
+rust_do_install() {
+ rust_runx install
+}
diff --git a/meta/recipes-devtools/rust/rust_1.54.0.bb b/meta/recipes-devtools/rust/rust_1.54.0.bb
new file mode 100644
index 0000000000..07221ac127
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust_1.54.0.bb
@@ -0,0 +1,11 @@
+require rust-target.inc
+require rust-source-${PV}.inc
+require rust-snapshot-${PV}.inc
+
+do_compile () {
+ rust_runx build --stage 2
+}
+
+rust_do_install() {
+ rust_runx install
+}
diff --git a/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch b/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch
new file mode 100644
index 0000000000..56ef9e73e6
--- /dev/null
+++ b/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch
@@ -0,0 +1,23 @@
+From fa40b874f6470ec11a8fd7b0c9909d0cdd2d6feb Mon Sep 17 00:00:00 2001
+From: Dan Callaghan <dan.callaghan@opengear.com>
+Date: Fri, 5 Feb 2021 08:56:34 +1000
+Subject: [PATCH] enable LTO
+
+---
+ Cargo.toml | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 7a2f6c8..cdb6b5d 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -3,3 +3,6 @@
+ name = "rust-hello-world"
+ version = "0.0.1"
+ authors = ["Cody P Schafer <dev@codyps.com>"]
++
++[profile.release]
++lto = true
+--
+2.28.0
+
diff --git a/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb b/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb
new file mode 100644
index 0000000000..c29eac34e5
--- /dev/null
+++ b/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb
@@ -0,0 +1,17 @@
+inherit cargo
+
+SRC_URI = "git://github.com/meta-rust/rust-hello-world.git;protocol=https"
+SRCREV="e0fa23f1a3cb1eb1407165bd2fc36d2f6e6ad728"
+LIC_FILES_CHKSUM="file://COPYRIGHT;md5=e6b2207ac3740d2d01141c49208c2147"
+
+SRC_URI += "\
+ file://0001-enable-LTO.patch \
+ "
+
+SUMMARY = "Hello World by Cargo for Rust"
+HOMEPAGE = "https://github.com/meta-rust/rust-hello-world"
+LICENSE = "MIT | Apache-2.0"
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-example/rustfmt/rustfmt_1.4.2.bb b/meta/recipes-example/rustfmt/rustfmt_1.4.2.bb
new file mode 100644
index 0000000000..ecced49049
--- /dev/null
+++ b/meta/recipes-example/rustfmt/rustfmt_1.4.2.bb
@@ -0,0 +1,171 @@
+# Auto-Generated by cargo-bitbake 0.3.13
+#
+inherit cargo
+
+# If this is git based prefer versioned ones if they exist
+# DEFAULT_PREFERENCE = "-1"
+
+# how to get rustfmt-nightly could be as easy as but default to a git checkout:
+# SRC_URI += "crate://crates.io/rustfmt-nightly/1.4.2"
+SRC_URI += "git://github.com/rust-lang/rustfmt/;protocol=https;nobranch=1"
+SRCREV = "aeb3496f31a0dfa90fc511520d2023634e885260"
+S = "${WORKDIR}/git"
+CARGO_SRC_DIR = ""
+
+
+# please note if you have entries that do not begin with crate://
+# you must change them to how that package can be fetched
+SRC_URI += " \
+ crate://crates.io/aho-corasick/0.7.4 \
+ crate://crates.io/annotate-snippets/0.6.1 \
+ crate://crates.io/ansi_term/0.11.0 \
+ crate://crates.io/argon2rs/0.2.5 \
+ crate://crates.io/arrayvec/0.4.11 \
+ crate://crates.io/atty/0.2.13 \
+ crate://crates.io/autocfg/0.1.5 \
+ crate://crates.io/backtrace-sys/0.1.31 \
+ crate://crates.io/backtrace/0.3.33 \
+ crate://crates.io/bitflags/1.1.0 \
+ crate://crates.io/blake2-rfc/0.2.18 \
+ crate://crates.io/bstr/0.2.6 \
+ crate://crates.io/bytecount/0.5.1 \
+ crate://crates.io/byteorder/1.3.2 \
+ crate://crates.io/c2-chacha/0.2.2 \
+ crate://crates.io/cargo_metadata/0.8.1 \
+ crate://crates.io/cc/1.0.38 \
+ crate://crates.io/cfg-if/0.1.9 \
+ crate://crates.io/clap/2.33.0 \
+ crate://crates.io/cloudabi/0.0.3 \
+ crate://crates.io/constant_time_eq/0.1.3 \
+ crate://crates.io/crossbeam-channel/0.3.9 \
+ crate://crates.io/crossbeam-deque/0.2.0 \
+ crate://crates.io/crossbeam-epoch/0.3.1 \
+ crate://crates.io/crossbeam-utils/0.2.2 \
+ crate://crates.io/crossbeam-utils/0.6.6 \
+ crate://crates.io/derive-new/0.5.7 \
+ crate://crates.io/diff/0.1.11 \
+ crate://crates.io/dirs-sys/0.3.3 \
+ crate://crates.io/dirs/2.0.1 \
+ crate://crates.io/either/1.5.2 \
+ crate://crates.io/ena/0.13.0 \
+ crate://crates.io/env_logger/0.6.2 \
+ crate://crates.io/failure/0.1.5 \
+ crate://crates.io/failure_derive/0.1.5 \
+ crate://crates.io/fnv/1.0.6 \
+ crate://crates.io/fuchsia-cprng/0.1.1 \
+ crate://crates.io/getopts/0.2.19 \
+ crate://crates.io/getrandom/0.1.6 \
+ crate://crates.io/globset/0.4.4 \
+ crate://crates.io/heck/0.3.1 \
+ crate://crates.io/humantime/1.2.0 \
+ crate://crates.io/ignore/0.4.8 \
+ crate://crates.io/indexmap/1.0.2 \
+ crate://crates.io/itertools/0.8.0 \
+ crate://crates.io/itoa/0.4.4 \
+ crate://crates.io/jobserver/0.1.16 \
+ crate://crates.io/lazy_static/1.3.0 \
+ crate://crates.io/libc/0.2.60 \
+ crate://crates.io/lock_api/0.1.5 \
+ crate://crates.io/log/0.4.7 \
+ crate://crates.io/memchr/2.2.1 \
+ crate://crates.io/memoffset/0.2.1 \
+ crate://crates.io/nodrop/0.1.13 \
+ crate://crates.io/num_cpus/1.10.1 \
+ crate://crates.io/owning_ref/0.4.0 \
+ crate://crates.io/packed_simd/0.3.3 \
+ crate://crates.io/parking_lot/0.7.1 \
+ crate://crates.io/parking_lot_core/0.4.0 \
+ crate://crates.io/ppv-lite86/0.2.5 \
+ crate://crates.io/proc-macro2/0.4.30 \
+ crate://crates.io/quick-error/1.2.2 \
+ crate://crates.io/quote/0.6.13 \
+ crate://crates.io/rand/0.6.5 \
+ crate://crates.io/rand/0.7.0 \
+ crate://crates.io/rand_chacha/0.1.1 \
+ crate://crates.io/rand_chacha/0.2.1 \
+ crate://crates.io/rand_core/0.3.1 \
+ crate://crates.io/rand_core/0.4.0 \
+ crate://crates.io/rand_core/0.5.0 \
+ crate://crates.io/rand_hc/0.1.0 \
+ crate://crates.io/rand_hc/0.2.0 \
+ crate://crates.io/rand_isaac/0.1.1 \
+ crate://crates.io/rand_jitter/0.1.4 \
+ crate://crates.io/rand_os/0.1.3 \
+ crate://crates.io/rand_pcg/0.1.2 \
+ crate://crates.io/rand_xorshift/0.1.1 \
+ crate://crates.io/rdrand/0.4.0 \
+ crate://crates.io/redox_syscall/0.1.56 \
+ crate://crates.io/redox_users/0.3.0 \
+ crate://crates.io/regex-syntax/0.6.10 \
+ crate://crates.io/regex/1.2.0 \
+ crate://crates.io/rustc-ap-arena/542.0.0 \
+ crate://crates.io/rustc-ap-graphviz/542.0.0 \
+ crate://crates.io/rustc-ap-rustc_data_structures/542.0.0 \
+ crate://crates.io/rustc-ap-rustc_errors/542.0.0 \
+ crate://crates.io/rustc-ap-rustc_lexer/542.0.0 \
+ crate://crates.io/rustc-ap-rustc_macros/542.0.0 \
+ crate://crates.io/rustc-ap-rustc_target/542.0.0 \
+ crate://crates.io/rustc-ap-serialize/542.0.0 \
+ crate://crates.io/rustc-ap-syntax/542.0.0 \
+ crate://crates.io/rustc-ap-syntax_pos/542.0.0 \
+ crate://crates.io/rustc-demangle/0.1.15 \
+ crate://crates.io/rustc-hash/1.0.1 \
+ crate://crates.io/rustc-rayon-core/0.2.0 \
+ crate://crates.io/rustc-rayon/0.2.0 \
+ crate://crates.io/rustc-workspace-hack/1.0.0 \
+ crate://crates.io/rustc_version/0.2.3 \
+ crate://crates.io/ryu/1.0.0 \
+ crate://crates.io/same-file/1.0.5 \
+ crate://crates.io/scoped-tls/1.0.0 \
+ crate://crates.io/scoped_threadpool/0.1.9 \
+ crate://crates.io/scopeguard/0.3.3 \
+ crate://crates.io/semver-parser/0.7.0 \
+ crate://crates.io/semver/0.9.0 \
+ crate://crates.io/serde/1.0.97 \
+ crate://crates.io/serde_derive/1.0.97 \
+ crate://crates.io/serde_json/1.0.40 \
+ crate://crates.io/smallvec/0.6.10 \
+ crate://crates.io/spin/0.5.0 \
+ crate://crates.io/stable_deref_trait/1.1.1 \
+ crate://crates.io/strsim/0.8.0 \
+ crate://crates.io/structopt-derive/0.2.18 \
+ crate://crates.io/structopt/0.2.18 \
+ crate://crates.io/syn/0.15.42 \
+ crate://crates.io/synstructure/0.10.2 \
+ crate://crates.io/term/0.6.0 \
+ crate://crates.io/termcolor/1.0.5 \
+ crate://crates.io/textwrap/0.11.0 \
+ crate://crates.io/thread_local/0.3.6 \
+ crate://crates.io/toml/0.5.1 \
+ crate://crates.io/ucd-util/0.1.5 \
+ crate://crates.io/unicode-segmentation/1.3.0 \
+ crate://crates.io/unicode-width/0.1.5 \
+ crate://crates.io/unicode-xid/0.1.0 \
+ crate://crates.io/unicode_categories/0.1.1 \
+ crate://crates.io/utf8-ranges/1.0.3 \
+ crate://crates.io/vec_map/0.8.1 \
+ crate://crates.io/walkdir/2.2.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.2 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi/0.3.7 \
+ crate://crates.io/wincolor/1.0.1 \
+"
+
+
+
+# FIXME: update generateme with the real MD5 of the license file
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
+ file://LICENSE-MIT;md5=0b29d505d9225d1f0815cbdcf602b901 \
+"
+
+SUMMARY = "Tool to find and fix Rust formatting issues"
+HOMEPAGE = "https://github.com/rust-lang/rustfmt"
+LICENSE = "Apache-2.0 | MIT"
+
+# includes this file if it exists but does not fail
+# this is useful for anything you may want to override from
+# what cargo-bitbake generates.
+include rustfmt-nightly-${PV}.inc
+include rustfmt-nightly.inc