diff --git a/universe/rust/0001-Add-new-Tier-3-target-loongarch64-unknown-linux-musl.patch b/universe/rust/0001-Add-new-Tier-3-target-loongarch64-unknown-linux-musl.patch new file mode 100644 index 0000000000..dc119b781d --- /dev/null +++ b/universe/rust/0001-Add-new-Tier-3-target-loongarch64-unknown-linux-musl.patch @@ -0,0 +1,64 @@ +From 9499baeeabc8f4494460770714a9805ff8aeaaa8 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Mon, 5 Jun 2023 19:51:24 +0800 +Subject: [PATCH 01/12] Add new Tier-3 target: `loongarch64-unknown-linux-musl` + +MCP: https://github.com/rust-lang/compiler-team/issues/518 +--- + compiler/rustc_target/src/spec/mod.rs | 1 + + .../targets/loongarch64_unknown_linux_musl.rs | 18 ++++++++++++++++++ + src/doc/rustc/src/platform-support.md | 1 + + 3 files changed, 20 insertions(+) + create mode 100644 compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_musl.rs + +diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs +index 6c698c5b0..b3ee709c2 100644 +--- a/compiler/rustc_target/src/spec/mod.rs ++++ b/compiler/rustc_target/src/spec/mod.rs +@@ -1402,6 +1402,7 @@ supported_targets! { + ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), + ("i586-unknown-linux-gnu", i586_unknown_linux_gnu), + ("loongarch64-unknown-linux-gnu", loongarch64_unknown_linux_gnu), ++ ("loongarch64-unknown-linux-musl", loongarch64_unknown_linux_musl), + ("m68k-unknown-linux-gnu", m68k_unknown_linux_gnu), + ("csky-unknown-linux-gnuabiv2", csky_unknown_linux_gnuabiv2), + ("csky-unknown-linux-gnuabiv2hf", csky_unknown_linux_gnuabiv2hf), +diff --git a/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_musl.rs +new file mode 100644 +index 000000000..01a003ce8 +--- /dev/null ++++ b/compiler/rustc_target/src/spec/targets/loongarch64_unknown_linux_musl.rs +@@ -0,0 +1,18 @@ ++use crate::spec::{base, Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ Target { ++ llvm_target: "loongarch64-unknown-linux-musl".into(), ++ pointer_width: 64, ++ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(), ++ arch: "loongarch64".into(), ++ options: TargetOptions { ++ cpu: "generic".into(), ++ features: "+f,+d".into(), ++ llvm_abiname: "lp64d".into(), ++ max_atomic_width: Some(64), ++ crt_static_default: false, ++ ..base::linux_musl::opts() ++ }, ++ } ++} +diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md +index f648a60b6..bc2427d6a 100644 +--- a/src/doc/rustc/src/platform-support.md ++++ b/src/doc/rustc/src/platform-support.md +@@ -167,6 +167,7 @@ target | std | notes + `i686-unknown-freebsd` | ✓ | 32-bit FreeBSD [^x86_32-floats-return-ABI] + `i686-unknown-linux-musl` | ✓ | 32-bit Linux with MUSL [^x86_32-floats-return-ABI] + [`i686-unknown-uefi`](platform-support/unknown-uefi.md) | * | 32-bit UEFI ++[`loongarch64-unknown-linux-musl`](platform-support/loongarch-linux.md) | ? | | LoongArch64 Linux (LP64D ABI) + [`loongarch64-unknown-none`](platform-support/loongarch-none.md) | * | | LoongArch64 Bare-metal (LP64D ABI) + [`loongarch64-unknown-none-softfloat`](platform-support/loongarch-none.md) | * | | LoongArch64 Bare-metal (LP64S ABI) + [`nvptx64-nvidia-cuda`](platform-support/nvptx64-nvidia-cuda.md) | * | --emit=asm generates PTX code that [runs on NVIDIA GPUs] +-- +2.44.0 + diff --git a/universe/rust/0002-tests-Add-loongarch64-unknown-linux-musl-target.patch b/universe/rust/0002-tests-Add-loongarch64-unknown-linux-musl-target.patch new file mode 100644 index 0000000000..1b2e31fd4f --- /dev/null +++ b/universe/rust/0002-tests-Add-loongarch64-unknown-linux-musl-target.patch @@ -0,0 +1,26 @@ +From 440278d4971c82b366077d61f682105e197f9680 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Fri, 1 Mar 2024 11:43:27 +0800 +Subject: [PATCH 02/12] tests: Add loongarch64-unknown-linux-musl target + +--- + tests/assembly/targets/targets-elf.rs | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tests/assembly/targets/targets-elf.rs b/tests/assembly/targets/targets-elf.rs +index 41f5df0fb..bf89790a5 100644 +--- a/tests/assembly/targets/targets-elf.rs ++++ b/tests/assembly/targets/targets-elf.rs +@@ -231,6 +231,9 @@ + // revisions: loongarch64_unknown_linux_gnu + // [loongarch64_unknown_linux_gnu] compile-flags: --target loongarch64-unknown-linux-gnu + // [loongarch64_unknown_linux_gnu] needs-llvm-components: loongarch ++// revisions: loongarch64_unknown_linux_musl ++// [loongarch64_unknown_linux_musl] compile-flags: --target loongarch64-unknown-linux-musl ++// [loongarch64_unknown_linux_musl] needs-llvm-components: loongarch + // revisions: loongarch64_unknown_none + // [loongarch64_unknown_none] compile-flags: --target loongarch64-unknown-none + // [loongarch64_unknown_none] needs-llvm-components: loongarch +-- +2.44.0 + diff --git a/universe/rust/0005-configure.py-add-flag-for-loongarch64-musl-root.patch b/universe/rust/0005-configure.py-add-flag-for-loongarch64-musl-root.patch new file mode 100644 index 0000000000..9a6bccbe9d --- /dev/null +++ b/universe/rust/0005-configure.py-add-flag-for-loongarch64-musl-root.patch @@ -0,0 +1,25 @@ +From ac3ab633b1d4ca35e49c7dfe8dbe5a6be7cbc303 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Mon, 11 Mar 2024 11:28:34 +0800 +Subject: [PATCH 05/12] configure.py: add flag for loongarch64 musl-root + +--- + src/bootstrap/configure.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py +index d34c19a47..cba7f98e8 100755 +--- a/src/bootstrap/configure.py ++++ b/src/bootstrap/configure.py +@@ -130,6 +130,8 @@ v("musl-root-riscv32gc", "target.riscv32gc-unknown-linux-musl.musl-root", + "riscv32gc-unknown-linux-musl install directory") + v("musl-root-riscv64gc", "target.riscv64gc-unknown-linux-musl.musl-root", + "riscv64gc-unknown-linux-musl install directory") ++v("musl-root-loongarch64", "target.loongarch64-unknown-linux-musl.musl-root", ++ "loongarch64-unknown-linux-musl install directory") + v("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs", + "rootfs in qemu testing, you probably don't want to use this") + v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs", +-- +2.44.0 + diff --git a/universe/rust/0006-ci-Add-support-for-dist-loongarch64-musl.patch b/universe/rust/0006-ci-Add-support-for-dist-loongarch64-musl.patch new file mode 100644 index 0000000000..46cd5c2291 --- /dev/null +++ b/universe/rust/0006-ci-Add-support-for-dist-loongarch64-musl.patch @@ -0,0 +1,121 @@ +From fb5f17d6958e86af31e719482001b13bec3b29ce Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Tue, 5 Mar 2024 16:04:02 +0800 +Subject: [PATCH 06/12] ci: Add support for dist-loongarch64-musl + +--- + src/ci/docker/README.md | 16 +++++++++ + .../dist-loongarch64-musl/Dockerfile | 36 +++++++++++++++++++ + .../loongarch64-unknown-linux-musl.defconfig | 15 ++++++++ + src/ci/github-actions/ci.yml | 3 ++ + 4 files changed, 70 insertions(+) + create mode 100644 src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile + create mode 100644 src/ci/docker/host-x86_64/dist-loongarch64-musl/loongarch64-unknown-linux-musl.defconfig + +diff --git a/src/ci/docker/README.md b/src/ci/docker/README.md +index 2e6456837..c53cf28c0 100644 +--- a/src/ci/docker/README.md ++++ b/src/ci/docker/README.md +@@ -274,6 +274,22 @@ For targets: `loongarch64-unknown-linux-gnu` + - C compiler > gcc version = 13.2.0 + - C compiler > C++ = ENABLE -- to cross compile LLVM + ++### `loongarch64-linux-musl.defconfig` ++ ++For targets: `loongarch64-unknown-linux-musl` ++ ++- Path and misc options > Prefix directory = /x-tools/${CT\_TARGET} ++- Path and misc options > Use a mirror = ENABLE ++- Path and misc options > Base URL = https://ci-mirrors.rust-lang.org/rustc ++- Target options > Target Architecture = loongarch ++- Target options > Bitness = 64-bit ++- Operating System > Target OS = linux ++- Operating System > Linux kernel version = 5.19.16 ++- Binary utilities > Version of binutils = 2.41 ++- C-library > musl version = 1.2.5 ++- C compiler > gcc version = 13.2.0 ++- C compiler > C++ = ENABLE -- to cross compile LLVM ++ + ### `mips-linux-gnu.defconfig` + + For targets: `mips-unknown-linux-gnu` +diff --git a/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile b/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile +new file mode 100644 +index 000000000..201e83b2c +--- /dev/null ++++ b/src/ci/docker/host-x86_64/dist-loongarch64-musl/Dockerfile +@@ -0,0 +1,36 @@ ++FROM ubuntu:22.04 ++ ++COPY scripts/cross-apt-packages.sh /scripts/ ++RUN sh /scripts/cross-apt-packages.sh ++ ++COPY scripts/crosstool-ng.sh /scripts/ ++RUN sh /scripts/crosstool-ng.sh ++ ++COPY scripts/rustbuild-setup.sh /scripts/ ++RUN sh /scripts/rustbuild-setup.sh ++WORKDIR /tmp ++ ++COPY scripts/crosstool-ng-build.sh /scripts/ ++COPY host-x86_64/dist-loongarch64-linux/loongarch64-unknown-linux-musl.defconfig /tmp/crosstool.defconfig ++RUN /scripts/crosstool-ng-build.sh ++ ++COPY scripts/sccache.sh /scripts/ ++RUN sh /scripts/sccache.sh ++ ++ENV PATH=$PATH:/x-tools/loongarch64-unknown-linux-musl/bin ++ ++ENV CC_loongarch64_unknown_linux_musl=loongarch64-unknown-linux-musl-gcc \ ++ AR_loongarch64_unknown_linux_musl=loongarch64-unknown-linux-musl-ar \ ++ CXX_loongarch64_unknown_linux_musl=loongarch64-unknown-linux-musl-g++ ++ ++ENV HOSTS=loongarch64-unknown-linux-musl ++ ++ENV RUST_CONFIGURE_ARGS \ ++ --enable-extended \ ++ --enable-lld \ ++ --disable-docs \ ++ --set target.loongarch64-unknown-linux-musl.crt-static=false \ ++ --set target.loongarch64-unknown-linux-musl.musl-root=/x-tools/loongarch64-unknown-linux-musl/loongarch64-unknown-linux-musl/sysroot/usr \ ++ --build $HOSTS ++ ++ENV SCRIPT python3 ../x.py dist --host $HOSTS --target $HOSTS +diff --git a/src/ci/docker/host-x86_64/dist-loongarch64-musl/loongarch64-unknown-linux-musl.defconfig b/src/ci/docker/host-x86_64/dist-loongarch64-musl/loongarch64-unknown-linux-musl.defconfig +new file mode 100644 +index 000000000..3ab676ed9 +--- /dev/null ++++ b/src/ci/docker/host-x86_64/dist-loongarch64-musl/loongarch64-unknown-linux-musl.defconfig +@@ -0,0 +1,15 @@ ++CT_CONFIG_VERSION="4" ++CT_EXPERIMENTAL=y ++CT_PREFIX_DIR="/x-tools/${CT_TARGET}" ++CT_USE_MIRROR=y ++CT_MIRROR_BASE_URL="https://ci-mirrors.rust-lang.org/rustc" ++CT_ARCH_LOONGARCH=y ++# CT_DEMULTILIB is not set ++CT_ARCH_USE_MMU=y ++CT_ARCH_ARCH="loongarch64" ++CT_KERNEL_LINUX=y ++CT_LINUX_V_5_19=y ++CT_LIBC_MUSL=y ++CT_CC_GCC_ENABLE_DEFAULT_PIE=y ++CT_CC_LANG_CXX=y ++CT_GETTEXT_NEEDED=y +diff --git a/src/ci/github-actions/ci.yml b/src/ci/github-actions/ci.yml +index f2effcbd8..81fc89ab8 100644 +--- a/src/ci/github-actions/ci.yml ++++ b/src/ci/github-actions/ci.yml +@@ -392,6 +392,9 @@ jobs: + - name: dist-loongarch64-linux + <<: *job-linux-8c + ++ - name: dist-loongarch64-musl ++ <<: *job-linux-8c ++ + - name: dist-powerpc-linux + <<: *job-linux-8c + +-- +2.44.0 + diff --git a/universe/rust/0007-Promote-loongarch64-unknown-linux-musl-to-Tier-2-wit.patch b/universe/rust/0007-Promote-loongarch64-unknown-linux-musl-to-Tier-2-wit.patch new file mode 100644 index 0000000000..f42bb2ef2a --- /dev/null +++ b/universe/rust/0007-Promote-loongarch64-unknown-linux-musl-to-Tier-2-wit.patch @@ -0,0 +1,47 @@ +From 713ed86a10cc2a95937d7165c05603ab12984f87 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Mon, 13 Nov 2023 19:45:27 +0800 +Subject: [PATCH 07/12] Promote loongarch64-unknown-linux-musl to Tier 2 with + host tools + +MCP: https://github.com/rust-lang/compiler-team/issues/518 +--- + src/bootstrap/src/core/build_steps/llvm.rs | 1 + + src/tools/build-manifest/src/main.rs | 2 ++ + 2 files changed, 3 insertions(+), 0 deletion(-) + +diff --git a/src/bootstrap/src/core/build_steps/llvm.rs b/src/bootstrap/src/core/build_steps/llvm.rs +index 4b2d3e9ab..1409acc3b 100644 +--- a/src/bootstrap/src/core/build_steps/llvm.rs ++++ b/src/bootstrap/src/core/build_steps/llvm.rs +@@ -201,6 +201,7 @@ pub(crate) fn is_ci_llvm_available(config: &Config, asserts: bool) -> bool { + ("arm-unknown-linux-gnueabihf", false), + ("armv7-unknown-linux-gnueabihf", false), + ("loongarch64-unknown-linux-gnu", false), ++ ("loongarch64-unknown-linux-musl", false), + ("mips-unknown-linux-gnu", false), + ("mips64-unknown-linux-gnuabi64", false), + ("mips64el-unknown-linux-gnuabi64", false), +diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs +index 1ef8cf7de..8fb36c3c7 100644 +--- a/src/tools/build-manifest/src/main.rs ++++ b/src/tools/build-manifest/src/main.rs +@@ -25,6 +25,7 @@ static HOSTS: &[&str] = &[ + "i686-pc-windows-msvc", + "i686-unknown-linux-gnu", + "loongarch64-unknown-linux-gnu", ++ "loongarch64-unknown-linux-musl", + "mips-unknown-linux-gnu", + "mips64-unknown-linux-gnuabi64", + "mips64el-unknown-linux-gnuabi64", +@@ -99,6 +100,7 @@ static TARGETS: &[&str] = &[ + "i686-unknown-linux-musl", + "i686-unknown-uefi", + "loongarch64-unknown-linux-gnu", ++ "loongarch64-unknown-linux-musl", + "loongarch64-unknown-none", + "loongarch64-unknown-none-softfloat", + "m68k-unknown-linux-gnu", +-- +2.44.0 + diff --git a/universe/rust/0008-vendor-libc-Add-support-for-loongarch64-linux-musl.patch b/universe/rust/0008-vendor-libc-Add-support-for-loongarch64-linux-musl.patch new file mode 100644 index 0000000000..6d541d1843 --- /dev/null +++ b/universe/rust/0008-vendor-libc-Add-support-for-loongarch64-linux-musl.patch @@ -0,0 +1,760 @@ +From 2e312d2600215e12e88ab9827f7b7c92abaa6606 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Tue, 26 Mar 2024 17:37:01 +0800 +Subject: [PATCH 08/12] vendor: libc: Add support for loongarch64-linux-musl + +--- + .../linux/musl/b64/loongarch64/align.rs | 40 ++ + .../linux/musl/b64/loongarch64/mod.rs | 663 ++++++++++++++++++ + .../src/unix/linux_like/linux/musl/b64/mod.rs | 3 + + .../src/unix/linux_like/linux/musl/mod.rs | 3 +- + 4 files changed, 708 insertions(+), 1 deletions(-) + create mode 100644 vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs + create mode 100644 vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs + +diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +new file mode 100644 +index 000000000..dc191f51f +--- /dev/null ++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +@@ -0,0 +1,40 @@ ++s_no_extra_traits! { ++ #[allow(missing_debug_implementations)] ++ #[repr(align(16))] ++ pub struct max_align_t { ++ priv_: [f64; 4] ++ } ++} ++ ++s! { ++ pub struct ucontext_t { ++ pub uc_flags: ::c_ulong, ++ pub uc_link: *mut ucontext_t, ++ pub uc_stack: ::stack_t, ++ pub uc_sigmask: ::sigset_t, ++ pub uc_mcontext: mcontext_t, ++ } ++ ++ #[repr(align(16))] ++ pub struct mcontext_t { ++ pub __pc: ::c_ulonglong, ++ pub __gregs: [::c_ulonglong; 32], ++ pub __flags: ::c_uint, ++ pub __extcontext: [::c_ulonglong; 0], ++ } ++ ++ #[repr(align(8))] ++ pub struct clone_args { ++ pub flags: ::c_ulonglong, ++ pub pidfd: ::c_ulonglong, ++ pub child_tid: ::c_ulonglong, ++ pub parent_tid: ::c_ulonglong, ++ pub exit_signal: ::c_ulonglong, ++ pub stack: ::c_ulonglong, ++ pub stack_size: ::c_ulonglong, ++ pub tls: ::c_ulonglong, ++ pub set_tid: ::c_ulonglong, ++ pub set_tid_size: ::c_ulonglong, ++ pub cgroup: ::c_ulonglong, ++ } ++} +diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +new file mode 100644 +index 000000000..dffbc2341 +--- /dev/null ++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +@@ -0,0 +1,663 @@ ++//! LoongArch-specific definitions for 64-bit linux-like values ++ ++pub type c_char = i8; ++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 __u64 = ::c_ulonglong; ++pub type __s64 = ::c_longlong; ++ ++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, ++ __pad1: ::dev_t, ++ pub st_size: ::off_t, ++ pub st_blksize: ::blksize_t, ++ __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 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_uint, ++ pub __seq: ::c_ushort, ++ __pad2: ::c_ushort, ++ __unused1: ::c_ulong, ++ __unused2: ::c_ulong, ++ } ++ ++ pub struct user_regs_struct { ++ pub regs: [u64; 32], ++ pub orig_a0: u64, ++ pub csr_era: u64, ++ pub csr_badv: u64, ++ pub reserved: [u64; 10], ++ ++ } ++ ++ pub struct user_fp_struct { ++ pub fpr: [u64; 32], ++ pub fcc: u64, ++ pub fcsr: u32, ++ } ++} ++ ++pub const SYS_io_setup: ::c_long = 0; ++pub const SYS_io_destroy: ::c_long = 1; ++pub const SYS_io_submit: ::c_long = 2; ++pub const SYS_io_cancel: ::c_long = 3; ++pub const SYS_io_getevents: ::c_long = 4; ++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_getcwd: ::c_long = 17; ++pub const SYS_lookup_dcookie: ::c_long = 18; ++pub const SYS_eventfd2: ::c_long = 19; ++pub const SYS_epoll_create1: ::c_long = 20; ++pub const SYS_epoll_ctl: ::c_long = 21; ++pub const SYS_epoll_pwait: ::c_long = 22; ++pub const SYS_dup: ::c_long = 23; ++pub const SYS_dup3: ::c_long = 24; ++pub const SYS_fcntl: ::c_long = 25; ++pub const SYS_inotify_init1: ::c_long = 26; ++pub const SYS_inotify_add_watch: ::c_long = 27; ++pub const SYS_inotify_rm_watch: ::c_long = 28; ++pub const SYS_ioctl: ::c_long = 29; ++pub const SYS_ioprio_set: ::c_long = 30; ++pub const SYS_ioprio_get: ::c_long = 31; ++pub const SYS_flock: ::c_long = 32; ++pub const SYS_mknodat: ::c_long = 33; ++pub const SYS_mkdirat: ::c_long = 34; ++pub const SYS_unlinkat: ::c_long = 35; ++pub const SYS_symlinkat: ::c_long = 36; ++pub const SYS_linkat: ::c_long = 37; ++pub const SYS_umount2: ::c_long = 39; ++pub const SYS_mount: ::c_long = 40; ++pub const SYS_pivot_root: ::c_long = 41; ++pub const SYS_nfsservctl: ::c_long = 42; ++pub const SYS_statfs: ::c_long = 43; ++pub const SYS_fstatfs: ::c_long = 44; ++pub const SYS_truncate: ::c_long = 45; ++pub const SYS_ftruncate: ::c_long = 46; ++pub const SYS_fallocate: ::c_long = 47; ++pub const SYS_faccessat: ::c_long = 48; ++pub const SYS_chdir: ::c_long = 49; ++pub const SYS_fchdir: ::c_long = 50; ++pub const SYS_chroot: ::c_long = 51; ++pub const SYS_fchmod: ::c_long = 52; ++pub const SYS_fchmodat: ::c_long = 53; ++pub const SYS_fchownat: ::c_long = 54; ++pub const SYS_fchown: ::c_long = 55; ++pub const SYS_openat: ::c_long = 56; ++pub const SYS_close: ::c_long = 57; ++pub const SYS_vhangup: ::c_long = 58; ++pub const SYS_pipe2: ::c_long = 59; ++pub const SYS_quotactl: ::c_long = 60; ++pub const SYS_getdents64: ::c_long = 61; ++pub const SYS_lseek: ::c_long = 62; ++pub const SYS_read: ::c_long = 63; ++pub const SYS_write: ::c_long = 64; ++pub const SYS_readv: ::c_long = 65; ++pub const SYS_writev: ::c_long = 66; ++pub const SYS_pread64: ::c_long = 67; ++pub const SYS_pwrite64: ::c_long = 68; ++pub const SYS_preadv: ::c_long = 69; ++pub const SYS_pwritev: ::c_long = 70; ++pub const SYS_sendfile: ::c_long = 71; ++pub const SYS_pselect6: ::c_long = 72; ++pub const SYS_ppoll: ::c_long = 73; ++pub const SYS_signalfd4: ::c_long = 74; ++pub const SYS_vmsplice: ::c_long = 75; ++pub const SYS_splice: ::c_long = 76; ++pub const SYS_tee: ::c_long = 77; ++pub const SYS_readlinkat: ::c_long = 78; ++pub const SYS_sync: ::c_long = 81; ++pub const SYS_fsync: ::c_long = 82; ++pub const SYS_fdatasync: ::c_long = 83; ++pub const SYS_sync_file_range: ::c_long = 84; ++pub const SYS_timerfd_create: ::c_long = 85; ++pub const SYS_timerfd_settime: ::c_long = 86; ++pub const SYS_timerfd_gettime: ::c_long = 87; ++pub const SYS_utimensat: ::c_long = 88; ++pub const SYS_acct: ::c_long = 89; ++pub const SYS_capget: ::c_long = 90; ++pub const SYS_capset: ::c_long = 91; ++pub const SYS_personality: ::c_long = 92; ++pub const SYS_exit: ::c_long = 93; ++pub const SYS_exit_group: ::c_long = 94; ++pub const SYS_waitid: ::c_long = 95; ++pub const SYS_set_tid_address: ::c_long = 96; ++pub const SYS_unshare: ::c_long = 97; ++pub const SYS_futex: ::c_long = 98; ++pub const SYS_set_robust_list: ::c_long = 99; ++pub const SYS_get_robust_list: ::c_long = 100; ++pub const SYS_nanosleep: ::c_long = 101; ++pub const SYS_getitimer: ::c_long = 102; ++pub const SYS_setitimer: ::c_long = 103; ++pub const SYS_kexec_load: ::c_long = 104; ++pub const SYS_init_module: ::c_long = 105; ++pub const SYS_delete_module: ::c_long = 106; ++pub const SYS_timer_create: ::c_long = 107; ++pub const SYS_timer_gettime: ::c_long = 108; ++pub const SYS_timer_getoverrun: ::c_long = 109; ++pub const SYS_timer_settime: ::c_long = 110; ++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_syslog: ::c_long = 116; ++pub const SYS_ptrace: ::c_long = 117; ++pub const SYS_sched_setparam: ::c_long = 118; ++pub const SYS_sched_setscheduler: ::c_long = 119; ++pub const SYS_sched_getscheduler: ::c_long = 120; ++pub const SYS_sched_getparam: ::c_long = 121; ++pub const SYS_sched_setaffinity: ::c_long = 122; ++pub const SYS_sched_getaffinity: ::c_long = 123; ++pub const SYS_sched_yield: ::c_long = 124; ++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_restart_syscall: ::c_long = 128; ++pub const SYS_kill: ::c_long = 129; ++pub const SYS_tkill: ::c_long = 130; ++pub const SYS_tgkill: ::c_long = 131; ++pub const SYS_sigaltstack: ::c_long = 132; ++pub const SYS_rt_sigsuspend: ::c_long = 133; ++pub const SYS_rt_sigaction: ::c_long = 134; ++pub const SYS_rt_sigprocmask: ::c_long = 135; ++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_sigreturn: ::c_long = 139; ++pub const SYS_setpriority: ::c_long = 140; ++pub const SYS_getpriority: ::c_long = 141; ++pub const SYS_reboot: ::c_long = 142; ++pub const SYS_setregid: ::c_long = 143; ++pub const SYS_setgid: ::c_long = 144; ++pub const SYS_setreuid: ::c_long = 145; ++pub const SYS_setuid: ::c_long = 146; ++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_setfsuid: ::c_long = 151; ++pub const SYS_setfsgid: ::c_long = 152; ++pub const SYS_times: ::c_long = 153; ++pub const SYS_setpgid: ::c_long = 154; ++pub const SYS_getpgid: ::c_long = 155; ++pub const SYS_getsid: ::c_long = 156; ++pub const SYS_setsid: ::c_long = 157; ++pub const SYS_getgroups: ::c_long = 158; ++pub const SYS_setgroups: ::c_long = 159; ++pub const SYS_uname: ::c_long = 160; ++pub const SYS_sethostname: ::c_long = 161; ++pub const SYS_setdomainname: ::c_long = 162; ++pub const SYS_getrusage: ::c_long = 165; ++pub const SYS_umask: ::c_long = 166; ++pub const SYS_prctl: ::c_long = 167; ++pub const SYS_getcpu: ::c_long = 168; ++pub const SYS_gettimeofday: ::c_long = 169; ++pub const SYS_settimeofday: ::c_long = 170; ++pub const SYS_adjtimex: ::c_long = 171; ++pub const SYS_getpid: ::c_long = 172; ++pub const SYS_getppid: ::c_long = 173; ++pub const SYS_getuid: ::c_long = 174; ++pub const SYS_geteuid: ::c_long = 175; ++pub const SYS_getgid: ::c_long = 176; ++pub const SYS_getegid: ::c_long = 177; ++pub const SYS_gettid: ::c_long = 178; ++pub const SYS_sysinfo: ::c_long = 179; ++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_msgget: ::c_long = 186; ++pub const SYS_msgctl: ::c_long = 187; ++pub const SYS_msgrcv: ::c_long = 188; ++pub const SYS_msgsnd: ::c_long = 189; ++pub const SYS_semget: ::c_long = 190; ++pub const SYS_semctl: ::c_long = 191; ++pub const SYS_semtimedop: ::c_long = 192; ++pub const SYS_semop: ::c_long = 193; ++pub const SYS_shmget: ::c_long = 194; ++pub const SYS_shmctl: ::c_long = 195; ++pub const SYS_shmat: ::c_long = 196; ++pub const SYS_shmdt: ::c_long = 197; ++pub const SYS_socket: ::c_long = 198; ++pub const SYS_socketpair: ::c_long = 199; ++pub const SYS_bind: ::c_long = 200; ++pub const SYS_listen: ::c_long = 201; ++pub const SYS_accept: ::c_long = 202; ++pub const SYS_connect: ::c_long = 203; ++pub const SYS_getsockname: ::c_long = 204; ++pub const SYS_getpeername: ::c_long = 205; ++pub const SYS_sendto: ::c_long = 206; ++pub const SYS_recvfrom: ::c_long = 207; ++pub const SYS_setsockopt: ::c_long = 208; ++pub const SYS_getsockopt: ::c_long = 209; ++pub const SYS_shutdown: ::c_long = 210; ++pub const SYS_sendmsg: ::c_long = 211; ++pub const SYS_recvmsg: ::c_long = 212; ++pub const SYS_readahead: ::c_long = 213; ++pub const SYS_brk: ::c_long = 214; ++pub const SYS_munmap: ::c_long = 215; ++pub const SYS_mremap: ::c_long = 216; ++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_clone: ::c_long = 220; ++pub const SYS_execve: ::c_long = 221; ++pub const SYS_mmap: ::c_long = 222; ++pub const SYS_fadvise64: ::c_long = 223; ++pub const SYS_swapon: ::c_long = 224; ++pub const SYS_swapoff: ::c_long = 225; ++pub const SYS_mprotect: ::c_long = 226; ++pub const SYS_msync: ::c_long = 227; ++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_mincore: ::c_long = 232; ++pub const SYS_madvise: ::c_long = 233; ++pub const SYS_remap_file_pages: ::c_long = 234; ++pub const SYS_mbind: ::c_long = 235; ++pub const SYS_get_mempolicy: ::c_long = 236; ++pub const SYS_set_mempolicy: ::c_long = 237; ++pub const SYS_migrate_pages: ::c_long = 238; ++pub const SYS_move_pages: ::c_long = 239; ++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240; ++pub const SYS_perf_event_open: ::c_long = 241; ++pub const SYS_accept4: ::c_long = 242; ++pub const SYS_recvmmsg: ::c_long = 243; ++pub const SYS_arch_specific_syscall: ::c_long = 244; ++pub const SYS_wait4: ::c_long = 260; ++pub const SYS_prlimit64: ::c_long = 261; ++pub const SYS_fanotify_init: ::c_long = 262; ++pub const SYS_fanotify_mark: ::c_long = 263; ++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_setns: ::c_long = 268; ++pub const SYS_sendmmsg: ::c_long = 269; ++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_io_pgetevents: ::c_long = 292; ++pub const SYS_rseq: ::c_long = 293; ++pub const SYS_kexec_file_load: ::c_long = 294; ++pub const SYS_pidfd_send_signal: ::c_long = 424; ++pub const SYS_io_uring_setup: ::c_long = 425; ++pub const SYS_io_uring_enter: ::c_long = 426; ++pub const SYS_io_uring_register: ::c_long = 427; ++pub const SYS_open_tree: ::c_long = 428; ++pub const SYS_move_mount: ::c_long = 429; ++pub const SYS_fsopen: ::c_long = 430; ++pub const SYS_fsconfig: ::c_long = 431; ++pub const SYS_fsmount: ::c_long = 432; ++pub const SYS_fspick: ::c_long = 433; ++pub const SYS_pidfd_open: ::c_long = 434; ++pub const SYS_clone3: ::c_long = 435; ++pub const SYS_close_range: ::c_long = 436; ++pub const SYS_openat2: ::c_long = 437; ++pub const SYS_pidfd_getfd: ::c_long = 438; ++pub const SYS_faccessat2: ::c_long = 439; ++pub const SYS_process_madvise: ::c_long = 440; ++pub const SYS_epoll_pwait2: ::c_long = 441; ++pub const SYS_mount_setattr: ::c_long = 442; ++pub const SYS_quotactl_fd: ::c_long = 443; ++pub const SYS_landlock_create_ruleset: ::c_long = 444; ++pub const SYS_landlock_add_rule: ::c_long = 445; ++pub const SYS_landlock_restrict_self: ::c_long = 446; ++pub const SYS_process_mrelease: ::c_long = 448; ++pub const SYS_futex_waitv: ::c_long = 449; ++pub const SYS_set_mempolicy_home_node: ::c_long = 450; ++ ++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 = 4096; ++ ++pub const SIGSTKSZ: ::size_t = 16384; ++pub const MINSIGSTKSZ: ::size_t = 4096; ++ ++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 ENOTSUP: ::c_int = EOPNOTSUPP; ++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 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 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 = 0; ++pub const SIG_UNBLOCK: ::c_int = 1; ++ ++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 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 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 MCL_CURRENT: ::c_int = 0x0001; ++pub const MCL_FUTURE: ::c_int = 0x0002; ++pub const MCL_ONFAULT: ::c_int = 0x0004; ++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 EDEADLK: ::c_int = 35; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++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; ++ ++cfg_if! { ++ if #[cfg(libc_align)] { ++ mod align; ++ pub use self::align::*; ++ } ++} +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 05586cdb4..d59343064 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 +@@ -157,6 +157,9 @@ cfg_if! { + } else if #[cfg(any(target_arch = "riscv64"))] { + mod riscv64; + pub use self::riscv64::*; ++ } else if #[cfg(any(target_arch = "loongarch64"))] { ++ mod loongarch64; ++ pub use self::loongarch64::*; + } else { + // Unknown target_arch + } +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 97429a7f3..bb7c9b2de 100644 +--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs ++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs +@@ -905,7 +905,8 @@ cfg_if! { + target_arch = "mips64", + target_arch = "powerpc64", + target_arch = "s390x", +- target_arch = "riscv64"))] { ++ target_arch = "riscv64", ++ target_arch = "loongarch64"))] { + mod b64; + pub use self::b64::*; + } else if #[cfg(any(target_arch = "x86", +-- +2.44.0 + diff --git a/universe/rust/0009-vendor-libc-0.2.148-Add-support-for-loongarch64-linu.patch b/universe/rust/0009-vendor-libc-0.2.148-Add-support-for-loongarch64-linu.patch new file mode 100644 index 0000000000..c7d1985eb6 --- /dev/null +++ b/universe/rust/0009-vendor-libc-0.2.148-Add-support-for-loongarch64-linu.patch @@ -0,0 +1,761 @@ +From 82b58c66bc60152236fc3009147681dff0bc364e Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Tue, 26 Mar 2024 16:27:33 +0800 +Subject: [PATCH 09/12] vendor: libc-0.2.148: Add support for + loongarch64-linux-musl + +--- + .../linux/musl/b64/loongarch64/align.rs | 40 ++ + .../linux/musl/b64/loongarch64/mod.rs | 663 ++++++++++++++++++ + .../src/unix/linux_like/linux/musl/b64/mod.rs | 3 + + .../src/unix/linux_like/linux/musl/mod.rs | 3 +- + 4 files changed, 708 insertions(+), 1 deletions(-) + create mode 100644 vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs + create mode 100644 vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs + +diff --git a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +new file mode 100644 +index 000000000..dc191f51f +--- /dev/null ++++ b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +@@ -0,0 +1,40 @@ ++s_no_extra_traits! { ++ #[allow(missing_debug_implementations)] ++ #[repr(align(16))] ++ pub struct max_align_t { ++ priv_: [f64; 4] ++ } ++} ++ ++s! { ++ pub struct ucontext_t { ++ pub uc_flags: ::c_ulong, ++ pub uc_link: *mut ucontext_t, ++ pub uc_stack: ::stack_t, ++ pub uc_sigmask: ::sigset_t, ++ pub uc_mcontext: mcontext_t, ++ } ++ ++ #[repr(align(16))] ++ pub struct mcontext_t { ++ pub __pc: ::c_ulonglong, ++ pub __gregs: [::c_ulonglong; 32], ++ pub __flags: ::c_uint, ++ pub __extcontext: [::c_ulonglong; 0], ++ } ++ ++ #[repr(align(8))] ++ pub struct clone_args { ++ pub flags: ::c_ulonglong, ++ pub pidfd: ::c_ulonglong, ++ pub child_tid: ::c_ulonglong, ++ pub parent_tid: ::c_ulonglong, ++ pub exit_signal: ::c_ulonglong, ++ pub stack: ::c_ulonglong, ++ pub stack_size: ::c_ulonglong, ++ pub tls: ::c_ulonglong, ++ pub set_tid: ::c_ulonglong, ++ pub set_tid_size: ::c_ulonglong, ++ pub cgroup: ::c_ulonglong, ++ } ++} +diff --git a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +new file mode 100644 +index 000000000..dffbc2341 +--- /dev/null ++++ b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +@@ -0,0 +1,663 @@ ++//! LoongArch-specific definitions for 64-bit linux-like values ++ ++pub type c_char = i8; ++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 __u64 = ::c_ulonglong; ++pub type __s64 = ::c_longlong; ++ ++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, ++ __pad1: ::dev_t, ++ pub st_size: ::off_t, ++ pub st_blksize: ::blksize_t, ++ __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 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_uint, ++ pub __seq: ::c_ushort, ++ __pad2: ::c_ushort, ++ __unused1: ::c_ulong, ++ __unused2: ::c_ulong, ++ } ++ ++ pub struct user_regs_struct { ++ pub regs: [u64; 32], ++ pub orig_a0: u64, ++ pub csr_era: u64, ++ pub csr_badv: u64, ++ pub reserved: [u64; 10], ++ ++ } ++ ++ pub struct user_fp_struct { ++ pub fpr: [u64; 32], ++ pub fcc: u64, ++ pub fcsr: u32, ++ } ++} ++ ++pub const SYS_io_setup: ::c_long = 0; ++pub const SYS_io_destroy: ::c_long = 1; ++pub const SYS_io_submit: ::c_long = 2; ++pub const SYS_io_cancel: ::c_long = 3; ++pub const SYS_io_getevents: ::c_long = 4; ++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_getcwd: ::c_long = 17; ++pub const SYS_lookup_dcookie: ::c_long = 18; ++pub const SYS_eventfd2: ::c_long = 19; ++pub const SYS_epoll_create1: ::c_long = 20; ++pub const SYS_epoll_ctl: ::c_long = 21; ++pub const SYS_epoll_pwait: ::c_long = 22; ++pub const SYS_dup: ::c_long = 23; ++pub const SYS_dup3: ::c_long = 24; ++pub const SYS_fcntl: ::c_long = 25; ++pub const SYS_inotify_init1: ::c_long = 26; ++pub const SYS_inotify_add_watch: ::c_long = 27; ++pub const SYS_inotify_rm_watch: ::c_long = 28; ++pub const SYS_ioctl: ::c_long = 29; ++pub const SYS_ioprio_set: ::c_long = 30; ++pub const SYS_ioprio_get: ::c_long = 31; ++pub const SYS_flock: ::c_long = 32; ++pub const SYS_mknodat: ::c_long = 33; ++pub const SYS_mkdirat: ::c_long = 34; ++pub const SYS_unlinkat: ::c_long = 35; ++pub const SYS_symlinkat: ::c_long = 36; ++pub const SYS_linkat: ::c_long = 37; ++pub const SYS_umount2: ::c_long = 39; ++pub const SYS_mount: ::c_long = 40; ++pub const SYS_pivot_root: ::c_long = 41; ++pub const SYS_nfsservctl: ::c_long = 42; ++pub const SYS_statfs: ::c_long = 43; ++pub const SYS_fstatfs: ::c_long = 44; ++pub const SYS_truncate: ::c_long = 45; ++pub const SYS_ftruncate: ::c_long = 46; ++pub const SYS_fallocate: ::c_long = 47; ++pub const SYS_faccessat: ::c_long = 48; ++pub const SYS_chdir: ::c_long = 49; ++pub const SYS_fchdir: ::c_long = 50; ++pub const SYS_chroot: ::c_long = 51; ++pub const SYS_fchmod: ::c_long = 52; ++pub const SYS_fchmodat: ::c_long = 53; ++pub const SYS_fchownat: ::c_long = 54; ++pub const SYS_fchown: ::c_long = 55; ++pub const SYS_openat: ::c_long = 56; ++pub const SYS_close: ::c_long = 57; ++pub const SYS_vhangup: ::c_long = 58; ++pub const SYS_pipe2: ::c_long = 59; ++pub const SYS_quotactl: ::c_long = 60; ++pub const SYS_getdents64: ::c_long = 61; ++pub const SYS_lseek: ::c_long = 62; ++pub const SYS_read: ::c_long = 63; ++pub const SYS_write: ::c_long = 64; ++pub const SYS_readv: ::c_long = 65; ++pub const SYS_writev: ::c_long = 66; ++pub const SYS_pread64: ::c_long = 67; ++pub const SYS_pwrite64: ::c_long = 68; ++pub const SYS_preadv: ::c_long = 69; ++pub const SYS_pwritev: ::c_long = 70; ++pub const SYS_sendfile: ::c_long = 71; ++pub const SYS_pselect6: ::c_long = 72; ++pub const SYS_ppoll: ::c_long = 73; ++pub const SYS_signalfd4: ::c_long = 74; ++pub const SYS_vmsplice: ::c_long = 75; ++pub const SYS_splice: ::c_long = 76; ++pub const SYS_tee: ::c_long = 77; ++pub const SYS_readlinkat: ::c_long = 78; ++pub const SYS_sync: ::c_long = 81; ++pub const SYS_fsync: ::c_long = 82; ++pub const SYS_fdatasync: ::c_long = 83; ++pub const SYS_sync_file_range: ::c_long = 84; ++pub const SYS_timerfd_create: ::c_long = 85; ++pub const SYS_timerfd_settime: ::c_long = 86; ++pub const SYS_timerfd_gettime: ::c_long = 87; ++pub const SYS_utimensat: ::c_long = 88; ++pub const SYS_acct: ::c_long = 89; ++pub const SYS_capget: ::c_long = 90; ++pub const SYS_capset: ::c_long = 91; ++pub const SYS_personality: ::c_long = 92; ++pub const SYS_exit: ::c_long = 93; ++pub const SYS_exit_group: ::c_long = 94; ++pub const SYS_waitid: ::c_long = 95; ++pub const SYS_set_tid_address: ::c_long = 96; ++pub const SYS_unshare: ::c_long = 97; ++pub const SYS_futex: ::c_long = 98; ++pub const SYS_set_robust_list: ::c_long = 99; ++pub const SYS_get_robust_list: ::c_long = 100; ++pub const SYS_nanosleep: ::c_long = 101; ++pub const SYS_getitimer: ::c_long = 102; ++pub const SYS_setitimer: ::c_long = 103; ++pub const SYS_kexec_load: ::c_long = 104; ++pub const SYS_init_module: ::c_long = 105; ++pub const SYS_delete_module: ::c_long = 106; ++pub const SYS_timer_create: ::c_long = 107; ++pub const SYS_timer_gettime: ::c_long = 108; ++pub const SYS_timer_getoverrun: ::c_long = 109; ++pub const SYS_timer_settime: ::c_long = 110; ++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_syslog: ::c_long = 116; ++pub const SYS_ptrace: ::c_long = 117; ++pub const SYS_sched_setparam: ::c_long = 118; ++pub const SYS_sched_setscheduler: ::c_long = 119; ++pub const SYS_sched_getscheduler: ::c_long = 120; ++pub const SYS_sched_getparam: ::c_long = 121; ++pub const SYS_sched_setaffinity: ::c_long = 122; ++pub const SYS_sched_getaffinity: ::c_long = 123; ++pub const SYS_sched_yield: ::c_long = 124; ++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_restart_syscall: ::c_long = 128; ++pub const SYS_kill: ::c_long = 129; ++pub const SYS_tkill: ::c_long = 130; ++pub const SYS_tgkill: ::c_long = 131; ++pub const SYS_sigaltstack: ::c_long = 132; ++pub const SYS_rt_sigsuspend: ::c_long = 133; ++pub const SYS_rt_sigaction: ::c_long = 134; ++pub const SYS_rt_sigprocmask: ::c_long = 135; ++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_sigreturn: ::c_long = 139; ++pub const SYS_setpriority: ::c_long = 140; ++pub const SYS_getpriority: ::c_long = 141; ++pub const SYS_reboot: ::c_long = 142; ++pub const SYS_setregid: ::c_long = 143; ++pub const SYS_setgid: ::c_long = 144; ++pub const SYS_setreuid: ::c_long = 145; ++pub const SYS_setuid: ::c_long = 146; ++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_setfsuid: ::c_long = 151; ++pub const SYS_setfsgid: ::c_long = 152; ++pub const SYS_times: ::c_long = 153; ++pub const SYS_setpgid: ::c_long = 154; ++pub const SYS_getpgid: ::c_long = 155; ++pub const SYS_getsid: ::c_long = 156; ++pub const SYS_setsid: ::c_long = 157; ++pub const SYS_getgroups: ::c_long = 158; ++pub const SYS_setgroups: ::c_long = 159; ++pub const SYS_uname: ::c_long = 160; ++pub const SYS_sethostname: ::c_long = 161; ++pub const SYS_setdomainname: ::c_long = 162; ++pub const SYS_getrusage: ::c_long = 165; ++pub const SYS_umask: ::c_long = 166; ++pub const SYS_prctl: ::c_long = 167; ++pub const SYS_getcpu: ::c_long = 168; ++pub const SYS_gettimeofday: ::c_long = 169; ++pub const SYS_settimeofday: ::c_long = 170; ++pub const SYS_adjtimex: ::c_long = 171; ++pub const SYS_getpid: ::c_long = 172; ++pub const SYS_getppid: ::c_long = 173; ++pub const SYS_getuid: ::c_long = 174; ++pub const SYS_geteuid: ::c_long = 175; ++pub const SYS_getgid: ::c_long = 176; ++pub const SYS_getegid: ::c_long = 177; ++pub const SYS_gettid: ::c_long = 178; ++pub const SYS_sysinfo: ::c_long = 179; ++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_msgget: ::c_long = 186; ++pub const SYS_msgctl: ::c_long = 187; ++pub const SYS_msgrcv: ::c_long = 188; ++pub const SYS_msgsnd: ::c_long = 189; ++pub const SYS_semget: ::c_long = 190; ++pub const SYS_semctl: ::c_long = 191; ++pub const SYS_semtimedop: ::c_long = 192; ++pub const SYS_semop: ::c_long = 193; ++pub const SYS_shmget: ::c_long = 194; ++pub const SYS_shmctl: ::c_long = 195; ++pub const SYS_shmat: ::c_long = 196; ++pub const SYS_shmdt: ::c_long = 197; ++pub const SYS_socket: ::c_long = 198; ++pub const SYS_socketpair: ::c_long = 199; ++pub const SYS_bind: ::c_long = 200; ++pub const SYS_listen: ::c_long = 201; ++pub const SYS_accept: ::c_long = 202; ++pub const SYS_connect: ::c_long = 203; ++pub const SYS_getsockname: ::c_long = 204; ++pub const SYS_getpeername: ::c_long = 205; ++pub const SYS_sendto: ::c_long = 206; ++pub const SYS_recvfrom: ::c_long = 207; ++pub const SYS_setsockopt: ::c_long = 208; ++pub const SYS_getsockopt: ::c_long = 209; ++pub const SYS_shutdown: ::c_long = 210; ++pub const SYS_sendmsg: ::c_long = 211; ++pub const SYS_recvmsg: ::c_long = 212; ++pub const SYS_readahead: ::c_long = 213; ++pub const SYS_brk: ::c_long = 214; ++pub const SYS_munmap: ::c_long = 215; ++pub const SYS_mremap: ::c_long = 216; ++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_clone: ::c_long = 220; ++pub const SYS_execve: ::c_long = 221; ++pub const SYS_mmap: ::c_long = 222; ++pub const SYS_fadvise64: ::c_long = 223; ++pub const SYS_swapon: ::c_long = 224; ++pub const SYS_swapoff: ::c_long = 225; ++pub const SYS_mprotect: ::c_long = 226; ++pub const SYS_msync: ::c_long = 227; ++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_mincore: ::c_long = 232; ++pub const SYS_madvise: ::c_long = 233; ++pub const SYS_remap_file_pages: ::c_long = 234; ++pub const SYS_mbind: ::c_long = 235; ++pub const SYS_get_mempolicy: ::c_long = 236; ++pub const SYS_set_mempolicy: ::c_long = 237; ++pub const SYS_migrate_pages: ::c_long = 238; ++pub const SYS_move_pages: ::c_long = 239; ++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240; ++pub const SYS_perf_event_open: ::c_long = 241; ++pub const SYS_accept4: ::c_long = 242; ++pub const SYS_recvmmsg: ::c_long = 243; ++pub const SYS_arch_specific_syscall: ::c_long = 244; ++pub const SYS_wait4: ::c_long = 260; ++pub const SYS_prlimit64: ::c_long = 261; ++pub const SYS_fanotify_init: ::c_long = 262; ++pub const SYS_fanotify_mark: ::c_long = 263; ++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_setns: ::c_long = 268; ++pub const SYS_sendmmsg: ::c_long = 269; ++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_io_pgetevents: ::c_long = 292; ++pub const SYS_rseq: ::c_long = 293; ++pub const SYS_kexec_file_load: ::c_long = 294; ++pub const SYS_pidfd_send_signal: ::c_long = 424; ++pub const SYS_io_uring_setup: ::c_long = 425; ++pub const SYS_io_uring_enter: ::c_long = 426; ++pub const SYS_io_uring_register: ::c_long = 427; ++pub const SYS_open_tree: ::c_long = 428; ++pub const SYS_move_mount: ::c_long = 429; ++pub const SYS_fsopen: ::c_long = 430; ++pub const SYS_fsconfig: ::c_long = 431; ++pub const SYS_fsmount: ::c_long = 432; ++pub const SYS_fspick: ::c_long = 433; ++pub const SYS_pidfd_open: ::c_long = 434; ++pub const SYS_clone3: ::c_long = 435; ++pub const SYS_close_range: ::c_long = 436; ++pub const SYS_openat2: ::c_long = 437; ++pub const SYS_pidfd_getfd: ::c_long = 438; ++pub const SYS_faccessat2: ::c_long = 439; ++pub const SYS_process_madvise: ::c_long = 440; ++pub const SYS_epoll_pwait2: ::c_long = 441; ++pub const SYS_mount_setattr: ::c_long = 442; ++pub const SYS_quotactl_fd: ::c_long = 443; ++pub const SYS_landlock_create_ruleset: ::c_long = 444; ++pub const SYS_landlock_add_rule: ::c_long = 445; ++pub const SYS_landlock_restrict_self: ::c_long = 446; ++pub const SYS_process_mrelease: ::c_long = 448; ++pub const SYS_futex_waitv: ::c_long = 449; ++pub const SYS_set_mempolicy_home_node: ::c_long = 450; ++ ++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 = 4096; ++ ++pub const SIGSTKSZ: ::size_t = 16384; ++pub const MINSIGSTKSZ: ::size_t = 4096; ++ ++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 ENOTSUP: ::c_int = EOPNOTSUPP; ++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 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 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 = 0; ++pub const SIG_UNBLOCK: ::c_int = 1; ++ ++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 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 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 MCL_CURRENT: ::c_int = 0x0001; ++pub const MCL_FUTURE: ::c_int = 0x0002; ++pub const MCL_ONFAULT: ::c_int = 0x0004; ++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 EDEADLK: ::c_int = 35; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++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; ++ ++cfg_if! { ++ if #[cfg(libc_align)] { ++ mod align; ++ pub use self::align::*; ++ } ++} +diff --git a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/mod.rs +index f437355d9..fc1e275df 100644 +--- a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/mod.rs ++++ b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/b64/mod.rs +@@ -161,6 +161,9 @@ cfg_if! { + } else if #[cfg(any(target_arch = "riscv64"))] { + mod riscv64; + pub use self::riscv64::*; ++ } else if #[cfg(any(target_arch = "loongarch64"))] { ++ mod loongarch64; ++ pub use self::loongarch64::*; + } else { + // Unknown target_arch + } +diff --git a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/mod.rs +index 4c6053389..40b7ac786 100644 +--- a/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/mod.rs ++++ b/vendor/libc-0.2.148/src/unix/linux_like/linux/musl/mod.rs +@@ -791,7 +791,8 @@ cfg_if! { + target_arch = "mips64", + target_arch = "powerpc64", + target_arch = "s390x", +- target_arch = "riscv64"))] { ++ target_arch = "riscv64", ++ target_arch = "loongarch64"))] { + mod b64; + pub use self::b64::*; + } else if #[cfg(any(target_arch = "x86", +-- +2.44.0 + diff --git a/universe/rust/0010-vendor-libc-0.2.150-Add-support-for-loongarch64-linu.patch b/universe/rust/0010-vendor-libc-0.2.150-Add-support-for-loongarch64-linu.patch new file mode 100644 index 0000000000..8c88f920c8 --- /dev/null +++ b/universe/rust/0010-vendor-libc-0.2.150-Add-support-for-loongarch64-linu.patch @@ -0,0 +1,761 @@ +From 6396be7ffc6ca273bba0958c80547cb32281a964 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Mon, 4 Mar 2024 19:28:13 +0800 +Subject: [PATCH 10/12] vendor: libc-0.2.150: Add support for + loongarch64-linux-musl + +--- + .../linux/musl/b64/loongarch64/align.rs | 40 ++ + .../linux/musl/b64/loongarch64/mod.rs | 663 ++++++++++++++++++ + .../src/unix/linux_like/linux/musl/b64/mod.rs | 3 + + .../src/unix/linux_like/linux/musl/mod.rs | 3 +- + 4 files changed, 708 insertions(+), 1 deletions(-) + create mode 100644 vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs + create mode 100644 vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs + +diff --git a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +new file mode 100644 +index 000000000..dc191f51f +--- /dev/null ++++ b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/align.rs +@@ -0,0 +1,40 @@ ++s_no_extra_traits! { ++ #[allow(missing_debug_implementations)] ++ #[repr(align(16))] ++ pub struct max_align_t { ++ priv_: [f64; 4] ++ } ++} ++ ++s! { ++ pub struct ucontext_t { ++ pub uc_flags: ::c_ulong, ++ pub uc_link: *mut ucontext_t, ++ pub uc_stack: ::stack_t, ++ pub uc_sigmask: ::sigset_t, ++ pub uc_mcontext: mcontext_t, ++ } ++ ++ #[repr(align(16))] ++ pub struct mcontext_t { ++ pub __pc: ::c_ulonglong, ++ pub __gregs: [::c_ulonglong; 32], ++ pub __flags: ::c_uint, ++ pub __extcontext: [::c_ulonglong; 0], ++ } ++ ++ #[repr(align(8))] ++ pub struct clone_args { ++ pub flags: ::c_ulonglong, ++ pub pidfd: ::c_ulonglong, ++ pub child_tid: ::c_ulonglong, ++ pub parent_tid: ::c_ulonglong, ++ pub exit_signal: ::c_ulonglong, ++ pub stack: ::c_ulonglong, ++ pub stack_size: ::c_ulonglong, ++ pub tls: ::c_ulonglong, ++ pub set_tid: ::c_ulonglong, ++ pub set_tid_size: ::c_ulonglong, ++ pub cgroup: ::c_ulonglong, ++ } ++} +diff --git a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +new file mode 100644 +index 000000000..dffbc2341 +--- /dev/null ++++ b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/loongarch64/mod.rs +@@ -0,0 +1,663 @@ ++//! LoongArch-specific definitions for 64-bit linux-like values ++ ++pub type c_char = i8; ++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 __u64 = ::c_ulonglong; ++pub type __s64 = ::c_longlong; ++ ++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, ++ __pad1: ::dev_t, ++ pub st_size: ::off_t, ++ pub st_blksize: ::blksize_t, ++ __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 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_uint, ++ pub __seq: ::c_ushort, ++ __pad2: ::c_ushort, ++ __unused1: ::c_ulong, ++ __unused2: ::c_ulong, ++ } ++ ++ pub struct user_regs_struct { ++ pub regs: [u64; 32], ++ pub orig_a0: u64, ++ pub csr_era: u64, ++ pub csr_badv: u64, ++ pub reserved: [u64; 10], ++ ++ } ++ ++ pub struct user_fp_struct { ++ pub fpr: [u64; 32], ++ pub fcc: u64, ++ pub fcsr: u32, ++ } ++} ++ ++pub const SYS_io_setup: ::c_long = 0; ++pub const SYS_io_destroy: ::c_long = 1; ++pub const SYS_io_submit: ::c_long = 2; ++pub const SYS_io_cancel: ::c_long = 3; ++pub const SYS_io_getevents: ::c_long = 4; ++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_getcwd: ::c_long = 17; ++pub const SYS_lookup_dcookie: ::c_long = 18; ++pub const SYS_eventfd2: ::c_long = 19; ++pub const SYS_epoll_create1: ::c_long = 20; ++pub const SYS_epoll_ctl: ::c_long = 21; ++pub const SYS_epoll_pwait: ::c_long = 22; ++pub const SYS_dup: ::c_long = 23; ++pub const SYS_dup3: ::c_long = 24; ++pub const SYS_fcntl: ::c_long = 25; ++pub const SYS_inotify_init1: ::c_long = 26; ++pub const SYS_inotify_add_watch: ::c_long = 27; ++pub const SYS_inotify_rm_watch: ::c_long = 28; ++pub const SYS_ioctl: ::c_long = 29; ++pub const SYS_ioprio_set: ::c_long = 30; ++pub const SYS_ioprio_get: ::c_long = 31; ++pub const SYS_flock: ::c_long = 32; ++pub const SYS_mknodat: ::c_long = 33; ++pub const SYS_mkdirat: ::c_long = 34; ++pub const SYS_unlinkat: ::c_long = 35; ++pub const SYS_symlinkat: ::c_long = 36; ++pub const SYS_linkat: ::c_long = 37; ++pub const SYS_umount2: ::c_long = 39; ++pub const SYS_mount: ::c_long = 40; ++pub const SYS_pivot_root: ::c_long = 41; ++pub const SYS_nfsservctl: ::c_long = 42; ++pub const SYS_statfs: ::c_long = 43; ++pub const SYS_fstatfs: ::c_long = 44; ++pub const SYS_truncate: ::c_long = 45; ++pub const SYS_ftruncate: ::c_long = 46; ++pub const SYS_fallocate: ::c_long = 47; ++pub const SYS_faccessat: ::c_long = 48; ++pub const SYS_chdir: ::c_long = 49; ++pub const SYS_fchdir: ::c_long = 50; ++pub const SYS_chroot: ::c_long = 51; ++pub const SYS_fchmod: ::c_long = 52; ++pub const SYS_fchmodat: ::c_long = 53; ++pub const SYS_fchownat: ::c_long = 54; ++pub const SYS_fchown: ::c_long = 55; ++pub const SYS_openat: ::c_long = 56; ++pub const SYS_close: ::c_long = 57; ++pub const SYS_vhangup: ::c_long = 58; ++pub const SYS_pipe2: ::c_long = 59; ++pub const SYS_quotactl: ::c_long = 60; ++pub const SYS_getdents64: ::c_long = 61; ++pub const SYS_lseek: ::c_long = 62; ++pub const SYS_read: ::c_long = 63; ++pub const SYS_write: ::c_long = 64; ++pub const SYS_readv: ::c_long = 65; ++pub const SYS_writev: ::c_long = 66; ++pub const SYS_pread64: ::c_long = 67; ++pub const SYS_pwrite64: ::c_long = 68; ++pub const SYS_preadv: ::c_long = 69; ++pub const SYS_pwritev: ::c_long = 70; ++pub const SYS_sendfile: ::c_long = 71; ++pub const SYS_pselect6: ::c_long = 72; ++pub const SYS_ppoll: ::c_long = 73; ++pub const SYS_signalfd4: ::c_long = 74; ++pub const SYS_vmsplice: ::c_long = 75; ++pub const SYS_splice: ::c_long = 76; ++pub const SYS_tee: ::c_long = 77; ++pub const SYS_readlinkat: ::c_long = 78; ++pub const SYS_sync: ::c_long = 81; ++pub const SYS_fsync: ::c_long = 82; ++pub const SYS_fdatasync: ::c_long = 83; ++pub const SYS_sync_file_range: ::c_long = 84; ++pub const SYS_timerfd_create: ::c_long = 85; ++pub const SYS_timerfd_settime: ::c_long = 86; ++pub const SYS_timerfd_gettime: ::c_long = 87; ++pub const SYS_utimensat: ::c_long = 88; ++pub const SYS_acct: ::c_long = 89; ++pub const SYS_capget: ::c_long = 90; ++pub const SYS_capset: ::c_long = 91; ++pub const SYS_personality: ::c_long = 92; ++pub const SYS_exit: ::c_long = 93; ++pub const SYS_exit_group: ::c_long = 94; ++pub const SYS_waitid: ::c_long = 95; ++pub const SYS_set_tid_address: ::c_long = 96; ++pub const SYS_unshare: ::c_long = 97; ++pub const SYS_futex: ::c_long = 98; ++pub const SYS_set_robust_list: ::c_long = 99; ++pub const SYS_get_robust_list: ::c_long = 100; ++pub const SYS_nanosleep: ::c_long = 101; ++pub const SYS_getitimer: ::c_long = 102; ++pub const SYS_setitimer: ::c_long = 103; ++pub const SYS_kexec_load: ::c_long = 104; ++pub const SYS_init_module: ::c_long = 105; ++pub const SYS_delete_module: ::c_long = 106; ++pub const SYS_timer_create: ::c_long = 107; ++pub const SYS_timer_gettime: ::c_long = 108; ++pub const SYS_timer_getoverrun: ::c_long = 109; ++pub const SYS_timer_settime: ::c_long = 110; ++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_syslog: ::c_long = 116; ++pub const SYS_ptrace: ::c_long = 117; ++pub const SYS_sched_setparam: ::c_long = 118; ++pub const SYS_sched_setscheduler: ::c_long = 119; ++pub const SYS_sched_getscheduler: ::c_long = 120; ++pub const SYS_sched_getparam: ::c_long = 121; ++pub const SYS_sched_setaffinity: ::c_long = 122; ++pub const SYS_sched_getaffinity: ::c_long = 123; ++pub const SYS_sched_yield: ::c_long = 124; ++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_restart_syscall: ::c_long = 128; ++pub const SYS_kill: ::c_long = 129; ++pub const SYS_tkill: ::c_long = 130; ++pub const SYS_tgkill: ::c_long = 131; ++pub const SYS_sigaltstack: ::c_long = 132; ++pub const SYS_rt_sigsuspend: ::c_long = 133; ++pub const SYS_rt_sigaction: ::c_long = 134; ++pub const SYS_rt_sigprocmask: ::c_long = 135; ++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_sigreturn: ::c_long = 139; ++pub const SYS_setpriority: ::c_long = 140; ++pub const SYS_getpriority: ::c_long = 141; ++pub const SYS_reboot: ::c_long = 142; ++pub const SYS_setregid: ::c_long = 143; ++pub const SYS_setgid: ::c_long = 144; ++pub const SYS_setreuid: ::c_long = 145; ++pub const SYS_setuid: ::c_long = 146; ++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_setfsuid: ::c_long = 151; ++pub const SYS_setfsgid: ::c_long = 152; ++pub const SYS_times: ::c_long = 153; ++pub const SYS_setpgid: ::c_long = 154; ++pub const SYS_getpgid: ::c_long = 155; ++pub const SYS_getsid: ::c_long = 156; ++pub const SYS_setsid: ::c_long = 157; ++pub const SYS_getgroups: ::c_long = 158; ++pub const SYS_setgroups: ::c_long = 159; ++pub const SYS_uname: ::c_long = 160; ++pub const SYS_sethostname: ::c_long = 161; ++pub const SYS_setdomainname: ::c_long = 162; ++pub const SYS_getrusage: ::c_long = 165; ++pub const SYS_umask: ::c_long = 166; ++pub const SYS_prctl: ::c_long = 167; ++pub const SYS_getcpu: ::c_long = 168; ++pub const SYS_gettimeofday: ::c_long = 169; ++pub const SYS_settimeofday: ::c_long = 170; ++pub const SYS_adjtimex: ::c_long = 171; ++pub const SYS_getpid: ::c_long = 172; ++pub const SYS_getppid: ::c_long = 173; ++pub const SYS_getuid: ::c_long = 174; ++pub const SYS_geteuid: ::c_long = 175; ++pub const SYS_getgid: ::c_long = 176; ++pub const SYS_getegid: ::c_long = 177; ++pub const SYS_gettid: ::c_long = 178; ++pub const SYS_sysinfo: ::c_long = 179; ++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_msgget: ::c_long = 186; ++pub const SYS_msgctl: ::c_long = 187; ++pub const SYS_msgrcv: ::c_long = 188; ++pub const SYS_msgsnd: ::c_long = 189; ++pub const SYS_semget: ::c_long = 190; ++pub const SYS_semctl: ::c_long = 191; ++pub const SYS_semtimedop: ::c_long = 192; ++pub const SYS_semop: ::c_long = 193; ++pub const SYS_shmget: ::c_long = 194; ++pub const SYS_shmctl: ::c_long = 195; ++pub const SYS_shmat: ::c_long = 196; ++pub const SYS_shmdt: ::c_long = 197; ++pub const SYS_socket: ::c_long = 198; ++pub const SYS_socketpair: ::c_long = 199; ++pub const SYS_bind: ::c_long = 200; ++pub const SYS_listen: ::c_long = 201; ++pub const SYS_accept: ::c_long = 202; ++pub const SYS_connect: ::c_long = 203; ++pub const SYS_getsockname: ::c_long = 204; ++pub const SYS_getpeername: ::c_long = 205; ++pub const SYS_sendto: ::c_long = 206; ++pub const SYS_recvfrom: ::c_long = 207; ++pub const SYS_setsockopt: ::c_long = 208; ++pub const SYS_getsockopt: ::c_long = 209; ++pub const SYS_shutdown: ::c_long = 210; ++pub const SYS_sendmsg: ::c_long = 211; ++pub const SYS_recvmsg: ::c_long = 212; ++pub const SYS_readahead: ::c_long = 213; ++pub const SYS_brk: ::c_long = 214; ++pub const SYS_munmap: ::c_long = 215; ++pub const SYS_mremap: ::c_long = 216; ++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_clone: ::c_long = 220; ++pub const SYS_execve: ::c_long = 221; ++pub const SYS_mmap: ::c_long = 222; ++pub const SYS_fadvise64: ::c_long = 223; ++pub const SYS_swapon: ::c_long = 224; ++pub const SYS_swapoff: ::c_long = 225; ++pub const SYS_mprotect: ::c_long = 226; ++pub const SYS_msync: ::c_long = 227; ++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_mincore: ::c_long = 232; ++pub const SYS_madvise: ::c_long = 233; ++pub const SYS_remap_file_pages: ::c_long = 234; ++pub const SYS_mbind: ::c_long = 235; ++pub const SYS_get_mempolicy: ::c_long = 236; ++pub const SYS_set_mempolicy: ::c_long = 237; ++pub const SYS_migrate_pages: ::c_long = 238; ++pub const SYS_move_pages: ::c_long = 239; ++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240; ++pub const SYS_perf_event_open: ::c_long = 241; ++pub const SYS_accept4: ::c_long = 242; ++pub const SYS_recvmmsg: ::c_long = 243; ++pub const SYS_arch_specific_syscall: ::c_long = 244; ++pub const SYS_wait4: ::c_long = 260; ++pub const SYS_prlimit64: ::c_long = 261; ++pub const SYS_fanotify_init: ::c_long = 262; ++pub const SYS_fanotify_mark: ::c_long = 263; ++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_setns: ::c_long = 268; ++pub const SYS_sendmmsg: ::c_long = 269; ++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_io_pgetevents: ::c_long = 292; ++pub const SYS_rseq: ::c_long = 293; ++pub const SYS_kexec_file_load: ::c_long = 294; ++pub const SYS_pidfd_send_signal: ::c_long = 424; ++pub const SYS_io_uring_setup: ::c_long = 425; ++pub const SYS_io_uring_enter: ::c_long = 426; ++pub const SYS_io_uring_register: ::c_long = 427; ++pub const SYS_open_tree: ::c_long = 428; ++pub const SYS_move_mount: ::c_long = 429; ++pub const SYS_fsopen: ::c_long = 430; ++pub const SYS_fsconfig: ::c_long = 431; ++pub const SYS_fsmount: ::c_long = 432; ++pub const SYS_fspick: ::c_long = 433; ++pub const SYS_pidfd_open: ::c_long = 434; ++pub const SYS_clone3: ::c_long = 435; ++pub const SYS_close_range: ::c_long = 436; ++pub const SYS_openat2: ::c_long = 437; ++pub const SYS_pidfd_getfd: ::c_long = 438; ++pub const SYS_faccessat2: ::c_long = 439; ++pub const SYS_process_madvise: ::c_long = 440; ++pub const SYS_epoll_pwait2: ::c_long = 441; ++pub const SYS_mount_setattr: ::c_long = 442; ++pub const SYS_quotactl_fd: ::c_long = 443; ++pub const SYS_landlock_create_ruleset: ::c_long = 444; ++pub const SYS_landlock_add_rule: ::c_long = 445; ++pub const SYS_landlock_restrict_self: ::c_long = 446; ++pub const SYS_process_mrelease: ::c_long = 448; ++pub const SYS_futex_waitv: ::c_long = 449; ++pub const SYS_set_mempolicy_home_node: ::c_long = 450; ++ ++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 = 4096; ++ ++pub const SIGSTKSZ: ::size_t = 16384; ++pub const MINSIGSTKSZ: ::size_t = 4096; ++ ++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 ENOTSUP: ::c_int = EOPNOTSUPP; ++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 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 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 = 0; ++pub const SIG_UNBLOCK: ::c_int = 1; ++ ++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 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 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 MCL_CURRENT: ::c_int = 0x0001; ++pub const MCL_FUTURE: ::c_int = 0x0002; ++pub const MCL_ONFAULT: ::c_int = 0x0004; ++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 EDEADLK: ::c_int = 35; ++pub const EDEADLOCK: ::c_int = EDEADLK; ++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; ++ ++cfg_if! { ++ if #[cfg(libc_align)] { ++ mod align; ++ pub use self::align::*; ++ } ++} +diff --git a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/mod.rs +index 05586cdb4..d59343064 100644 +--- a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/mod.rs ++++ b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/b64/mod.rs +@@ -157,6 +157,9 @@ cfg_if! { + } else if #[cfg(any(target_arch = "riscv64"))] { + mod riscv64; + pub use self::riscv64::*; ++ } else if #[cfg(any(target_arch = "loongarch64"))] { ++ mod loongarch64; ++ pub use self::loongarch64::*; + } else { + // Unknown target_arch + } +diff --git a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs +index b67d55e99..d4cc61484 100644 +--- a/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs ++++ b/vendor/libc-0.2.150/src/unix/linux_like/linux/musl/mod.rs +@@ -794,7 +794,8 @@ cfg_if! { + target_arch = "mips64", + target_arch = "powerpc64", + target_arch = "s390x", +- target_arch = "riscv64"))] { ++ target_arch = "riscv64", ++ target_arch = "loongarch64"))] { + mod b64; + pub use self::b64::*; + } else if #[cfg(any(target_arch = "x86", +-- +2.44.0 + diff --git a/universe/rust/0011-vendor-compiler_builtins-Add-support-for-loongarch64.patch b/universe/rust/0011-vendor-compiler_builtins-Add-support-for-loongarch64.patch new file mode 100644 index 0000000000..f62dd43fc0 --- /dev/null +++ b/universe/rust/0011-vendor-compiler_builtins-Add-support-for-loongarch64.patch @@ -0,0 +1,42 @@ +From cb7423b824e8ca224f93cad7fa196b608dff8655 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Tue, 26 Mar 2024 17:41:40 +0800 +Subject: [PATCH 11/12] vendor: compiler_builtins: Add support for + loongarch64-linux-musl + +--- + vendor/compiler_builtins/build.rs | 18 ++++++++++++++++++ + 1 files changed, 18 insertions(+), 0 deletion(-) + +diff --git a/vendor/compiler_builtins/build.rs b/vendor/compiler_builtins/build.rs +index 048611677..afbac6247 100644 +--- a/vendor/compiler_builtins/build.rs ++++ b/vendor/compiler_builtins/build.rs +@@ -541,6 +541,24 @@ mod c { + ]); + } + ++ if target_arch == "loongarch64" { ++ sources.extend(&[ ++ ("__extenddftf2", "extenddftf2.c"), ++ ("__netf2", "comparetf2.c"), ++ ("__addtf3", "addtf3.c"), ++ ("__multf3", "multf3.c"), ++ ("__subtf3", "subtf3.c"), ++ ("__fixtfsi", "fixtfsi.c"), ++ ("__floatsitf", "floatsitf.c"), ++ ("__fixunstfsi", "fixunstfsi.c"), ++ ("__floatunsitf", "floatunsitf.c"), ++ ("__fe_getround", "fp_mode.c"), ++ ("__divtf3", "divtf3.c"), ++ ("__trunctfdf2", "trunctfdf2.c"), ++ ("__trunctfsf2", "trunctfsf2.c"), ++ ]); ++ } ++ + // Remove the assembly implementations that won't compile for the target + if llvm_target[0] == "thumbv6m" || llvm_target[0] == "thumbv8m.base" || target_os == "uefi" + { +-- +2.44.0 + diff --git a/universe/rust/0012-vendor-openssl-src-Add-support-for-loongarch64-linux.patch b/universe/rust/0012-vendor-openssl-src-Add-support-for-loongarch64-linux.patch new file mode 100644 index 0000000000..45cacb4581 --- /dev/null +++ b/universe/rust/0012-vendor-openssl-src-Add-support-for-loongarch64-linux.patch @@ -0,0 +1,25 @@ +From 7179bedc985cebe2ff945ecf280754b3c0abae36 Mon Sep 17 00:00:00 2001 +From: WANG Rui +Date: Tue, 26 Mar 2024 17:42:25 +0800 +Subject: [PATCH 12/12] vendor: openssl-src: Add support for + loongarch64-linux-musl + +--- + vendor/openssl-src/src/lib.rs | 1 + + 1 files changed, 1 insertions(+), 0 deletion(-) + +diff --git a/vendor/openssl-src/src/lib.rs b/vendor/openssl-src/src/lib.rs +index 1264742dc..1ef018081 100644 +--- a/vendor/openssl-src/src/lib.rs ++++ b/vendor/openssl-src/src/lib.rs +@@ -265,6 +265,7 @@ impl Build { + "i686-unknown-linux-gnu" => "linux-elf", + "i686-unknown-linux-musl" => "linux-elf", + "loongarch64-unknown-linux-gnu" => "linux-generic64", ++ "loongarch64-unknown-linux-musl" => "linux-generic64", + "mips-unknown-linux-gnu" => "linux-mips32", + "mips-unknown-linux-musl" => "linux-mips32", + "mips64-unknown-linux-gnuabi64" => "linux64-mips64", +-- +2.44.0 + diff --git a/universe/rust/APKBUILD b/universe/rust/APKBUILD index 46f5ed294d..b196e24fce 100644 --- a/universe/rust/APKBUILD +++ b/universe/rust/APKBUILD @@ -88,6 +88,18 @@ source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz no-export-ld-library-path.patch revert-rustc_codegen_ssa-use-try_canonicalize-in-rpath.patch system-wasm-ld.patch + + 0001-Add-new-Tier-3-target-loongarch64-unknown-linux-musl.patch + 0002-tests-Add-loongarch64-unknown-linux-musl-target.patch + 0005-configure.py-add-flag-for-loongarch64-musl-root.patch + 0006-ci-Add-support-for-dist-loongarch64-musl.patch + 0007-Promote-loongarch64-unknown-linux-musl-to-Tier-2-wit.patch + 0008-vendor-libc-Add-support-for-loongarch64-linux-musl.patch + 0009-vendor-libc-0.2.148-Add-support-for-loongarch64-linu.patch + 0010-vendor-libc-0.2.150-Add-support-for-loongarch64-linu.patch + 0011-vendor-compiler_builtins-Add-support-for-loongarch64.patch + 0012-vendor-openssl-src-Add-support-for-loongarch64-linux.patch + check-rustc 0100-Add-Alpaquita-targets.patch @@ -164,6 +176,15 @@ _unpack_build_dist() { --exclude=manifest.in --no-same-owner } +prepare() { + default_prepare + _clear_vendor_checksums libc + _clear_vendor_checksums libc-0.2.148 + _clear_vendor_checksums libc-0.2.150 + _clear_vendor_checksums compiler_builtins + _clear_vendor_checksums openssl-src +} + build() { if [ "$_build" != "$_target" ]; then export PKG_CONFIG_ALLOW_CROSS=1 @@ -453,7 +474,7 @@ _mv() { sha512sums=" 59f19d9def93b613ac72925625e6662622f445506489b8f1cd405d037c28becd53ae1446b46edfd63734f6f236af2dc326a57a184f01bc10d497c96227f09034 rustc-1.77.0-src.tar.xz 9de9d7ad05584e3cafddedcac409a4605a1d67e82260220deb3efd965603ee3148062b081c0cd736e50d82daad3a723fb6a7493fdf4dddfe36288645425a7946 alpine-move-py-scripts-to-share.patch -8b146dabe9cebfd5fcd916a9ece8ce1eefe27c410bf63f896b5f3c327fe41184fe77034ee604d385ace8fd61eac94469134967a51e3bdd9dece4d2428f42e21f alpine-target.patch +3ff7914ff697b3ba29c5225fe8db58587c1a109d0690ef968b7e0d9453ece81be96aa502453292af3ba5d841d49e41d7e0d45b3ed700dcb944adb009ae7ef4cd alpine-target.patch b4f09270f4e1677975d12447be9960271b00ffb8ab55987864c306fa45b8f70bdb82fd89e5fa7ad1cf604a1c91fbac8f3753b29dc98e10e7f47edf13d9071d77 do-not-install-libunwind-source.patch d4531905520b3fc699fbf57b267130bdbca94e2773a710e8b4c618ae3895149312934dd92d1988860c6dd102af50e05264b49a01662d5621c26de3604c753d6a gcc-eh-libunwind.patch b283d31cc8d6559aa639d44f776e97c2a1e0f23c717b6784e549861b881555bd467fa6023180866aae81a9a58c5f83e306940ee645f3c6733a1bdef6130036c9 install-template-shebang.patch @@ -463,6 +484,16 @@ b6bf7be0b2eb2d31b4d9979852d5ec3ebc05d005b82e2f6b02394da6c43502729d32086ec2ffaf42 da5ea8ea2360ba6fdc2b3f29063baf978af19f7ff106d0511912b1357e1e613dae0417d3b55fb2aafb4e97d1749cb01046d76c6a27a03e384468e2d26c2a30dc no-export-ld-library-path.patch 74c0d14a68c2d7355f15ec3704d387556ad337e4991831e94951906d17aeb60387d20586a63cf6cdc62b46c60e1874340a250196ec2b3e75c268af1c41fae7e9 revert-rustc_codegen_ssa-use-try_canonicalize-in-rpath.patch 5216e083a1709b3ecbbdeaaaf0e112ec88e7534952fdadf834ce864b55768e15d7d181c14127d4ef39f66ca2a94dd40eddb2c4ab297081d75e5f3a09dcbcfa56 system-wasm-ld.patch +403cf84bf18587b0092d34bc17848bf4a9c46ebf053a696f026cb744559f2f93973258de3a1362cd369e5aae55bec90f77c835c8c583c8fe981e94d6351d25ee 0001-Add-new-Tier-3-target-loongarch64-unknown-linux-musl.patch +ec62ef0adf45b1a066508b19c2791b3f2c5c97399b7f77c8c6340ce08e0e6489db81959c703fd22544dc4228cd35b98efe2229da4f13c655bcb179c4fb216a9d 0002-tests-Add-loongarch64-unknown-linux-musl-target.patch +10ab89038206ed875fab64b7fa2d92500c19ecb5cdb3341bad37f37aebe1e253b0647469794a8afa344e9ade207bdc32b6d3418db1ce5872e7ee312179ced374 0005-configure.py-add-flag-for-loongarch64-musl-root.patch +a776824a63752cd46bfe954985558502751f3a9e4cf70b46a3fd4513b188209b99e7c7b11e1998a89d2155a199b3b9f8ecc4389df4e8fc4b983a3d387a4fea06 0006-ci-Add-support-for-dist-loongarch64-musl.patch +2473d80908b936cefdd99cb3c7e56ec6c714af0ae6d606f5459bfbe2d3713ac9e11ea642a8481b224d6c89074386802eb005a8a9d666d6a597a0cbcd35a19af9 0007-Promote-loongarch64-unknown-linux-musl-to-Tier-2-wit.patch +6c4eee378995816f6da26bdea6c781e106be79ba9772d91544fbde781ab2f6de98809c6a8a6b553f1feef79ace06fb712ba87c3e554e227ad39426834fcd069a 0008-vendor-libc-Add-support-for-loongarch64-linux-musl.patch +f3b3253106d391d0ea5390b3566704ee4d7aa4c08a5fc0b095b8ca0f0e8272c265ac99b500110653d9321438429f374726fb8291ab98017507df17e23879ef42 0009-vendor-libc-0.2.148-Add-support-for-loongarch64-linu.patch +039a25e1ed0eae1226a021ce51b76b2ab287d2d807c912e835cef758b5ff6e97e37f8ce29ea3297c8258fd587c08ecc33665371335e3bd227549b901e2f4b8af 0010-vendor-libc-0.2.150-Add-support-for-loongarch64-linu.patch +808e5cb5e3e0cc991ded0875e6f9cad7b72854f004ce5b626f45169ca10dc1d0d6f6b30bbe573b7daec82636edac94792522e7d9f5a13a67fd9fb0d9db1a0757 0011-vendor-compiler_builtins-Add-support-for-loongarch64.patch +54ed2846e621aea0dd42e7a1e65bdea0d6ff2dcd396770f33ee1b9a3ed33e6b36e230643e3d444dd12285f30eceed7c66a9c83fbcd23c784fa5b9785aaf37ad1 0012-vendor-openssl-src-Add-support-for-loongarch64-linux.patch c31fdfe8a9b3411576c75da46645cf0465b9053000a2ab49cf9b2f2733f679d6d33acbf236d67a20e14935d094a685453b7f1840180249f39d610fd0902c3125 check-rustc ccfbcc91b01a1488f944b2a77b9d9f430f79d8839f9d483639714838e263fd8277a54f9855faf752bf617f47550c64be5e55c4dfbf7fa21293500f26f1309306 0100-Add-Alpaquita-targets.patch " diff --git a/universe/rust/alpine-target.patch b/universe/rust/alpine-target.patch index fee532f75f..fd79a882c0 100644 --- a/universe/rust/alpine-target.patch +++ b/universe/rust/alpine-target.patch @@ -77,7 +77,7 @@ and distribution-specific quirks instead of polluting the main musl target of +} --- rustc-1.48.0-src.orig/compiler/rustc_target/src/spec/mod.rs +++ rustc-1.48.0-src/compiler/rustc_target/src/spec/mod.rs -@@ -1397,6 +1397,16 @@ +@@ -1397,6 +1397,17 @@ } supported_targets! { @@ -91,6 +91,7 @@ and distribution-specific quirks instead of polluting the main musl target of + ("powerpc64le-alpine-linux-musl", powerpc64le_alpine_linux_musl), + ("s390x-alpine-linux-musl", s390x_alpine_linux_musl), + ("riscv64-alpine-linux-musl", riscv64_alpine_linux_musl), ++ ("loongarch64-alpine-linux-musl", loongarch64_alpine_linux_musl), ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu), ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32), ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), @@ -190,3 +191,19 @@ and distribution-specific quirks instead of polluting the main musl target of + + base +} +--- /dev/null ++++ rustc-1.77.0-src/compiler/rustc_target/src/spec/targets/loongarch64_alpine_linux_musl.rs +@@ -0,0 +1,13 @@ ++use crate::spec::Target; ++ ++pub fn target() -> Target { ++ let mut base = super::loongarch64_unknown_linux_musl::target(); ++ ++ base.llvm_target = "loongarch64-alpine-linux-musl".into(); ++ base.options.vendor = "alpine".into(); ++ base.options.crt_static_default = false; ++ base.options.static_position_independent_executables = true; ++ base.options.need_rpath = true; ++ ++ base ++}