From 22f358448b2f6144ce5ccfd779569d2628ef1353 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Sat, 30 Mar 2024 01:29:13 +0900 Subject: [PATCH] fixes --- .github/.cspell/project-dictionary.txt | 1 + docker/dragonfly.Dockerfile | 5 +- ...piler_builtins+m68k-unknown-linux-gnu.diff | 12 +++++ .../libc+x86_64-unknown-dragonfly.diff | 51 +++++++++++++++++++ docker/test/test.sh | 4 ++ platform-support-status-tier3.md | 2 +- tools/target-list-shared.sh | 2 +- 7 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 docker/test-base/patches/compiler_builtins+m68k-unknown-linux-gnu.diff create mode 100644 docker/test-base/patches/libc+x86_64-unknown-dragonfly.diff diff --git a/.github/.cspell/project-dictionary.txt b/.github/.cspell/project-dictionary.txt index 7381507..c787e0c 100644 --- a/.github/.cspell/project-dictionary.txt +++ b/.github/.cspell/project-dictionary.txt @@ -8,6 +8,7 @@ BUILDKIT buildpackage buildroot buildx +chkstk cmodel crtbegin crtend diff --git a/docker/dragonfly.Dockerfile b/docker/dragonfly.Dockerfile index 921bd9c..61997a5 100644 --- a/docker/dragonfly.Dockerfile +++ b/docker/dragonfly.Dockerfile @@ -10,8 +10,9 @@ FROM ghcr.io/taiki-e/downloader as sysroot SHELL ["/bin/bash", "-eEuxo", "pipefail", "-c"] ARG DRAGONFLY_VERSION RUN mkdir -p /sysroot -# https://mirror-master.dragonflybsd.org/iso-images -RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://mirror-master.dragonflybsd.org/iso-images/dfly-x86_64-${DRAGONFLY_VERSION}_REL.iso.bz2" \ +# https://mirror-master.dragonflybsd.org/iso-images's certificate has expired... +# https://cdimage.debian.org/mirror/dragonflybsd.org/iso-images +RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://cdimage.debian.org/mirror/dragonflybsd.org/iso-images/dfly-x86_64-${DRAGONFLY_VERSION}_REL.iso.bz2" \ | bsdtar xjf - -C /sysroot ./lib ./usr/include ./usr/lib FROM ghcr.io/taiki-e/build-base:ubuntu-"${UBUNTU_VERSION}" as builder diff --git a/docker/test-base/patches/compiler_builtins+m68k-unknown-linux-gnu.diff b/docker/test-base/patches/compiler_builtins+m68k-unknown-linux-gnu.diff new file mode 100644 index 0000000..c96ffd4 --- /dev/null +++ b/docker/test-base/patches/compiler_builtins+m68k-unknown-linux-gnu.diff @@ -0,0 +1,12 @@ +diff --git a/src/mem/mod.rs b/src/mem/mod.rs +index ccf1917..dcbbf52 100644 +--- a/src/mem/mod.rs ++++ b/src/mem/mod.rs +@@ -130,6 +130,7 @@ fn memset_element_unordered_atomic(s: *mut T, c: u8, bytes: usize) + } + } + ++#[cfg(not(target_arch = "m68k"))] + intrinsics! { + #[cfg(target_has_atomic_load_store = "8")] + pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_1(dest: *mut u8, src: *const u8, bytes: usize) -> () { diff --git a/docker/test-base/patches/libc+x86_64-unknown-dragonfly.diff b/docker/test-base/patches/libc+x86_64-unknown-dragonfly.diff new file mode 100644 index 0000000..7a627db --- /dev/null +++ b/docker/test-base/patches/libc+x86_64-unknown-dragonfly.diff @@ -0,0 +1,51 @@ +diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs +index 78314084c..195c6cb3e 100644 +--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs ++++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs +@@ -3875,11 +3875,6 @@ fn clone(&self) -> dot3Vendors { + // for use with fspacectl + pub const SPACECTL_DEALLOC: ::c_int = 1; + +-// For getrandom() +-pub const GRND_NONBLOCK: ::c_uint = 0x1; +-pub const GRND_RANDOM: ::c_uint = 0x2; +-pub const GRND_INSECURE: ::c_uint = 0x4; +- + // For realhostname* api + pub const HOSTNAME_FOUND: ::c_int = 0; + pub const HOSTNAME_INCORRECTNAME: ::c_int = 1; +@@ -5393,8 +5388,6 @@ pub fn shm_rename( + + pub fn fdatasync(fd: ::c_int) -> ::c_int; + +- pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t; +- pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int; + pub fn elf_aux_info(aux: ::c_int, buf: *mut ::c_void, buflen: ::c_int) -> ::c_int; + pub fn setproctitle_fast(fmt: *const ::c_char, ...); + pub fn timingsafe_bcmp(a: *const ::c_void, b: *const ::c_void, len: ::size_t) -> ::c_int; +diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs +index 00a944e42..9b555e42e 100644 +--- a/src/unix/bsd/freebsdlike/mod.rs ++++ b/src/unix/bsd/freebsdlike/mod.rs +@@ -1456,6 +1456,11 @@ fn hash(&self, state: &mut H) { + pub const RB_MUTE: ::c_int = 0x10000; + pub const RB_SELFTEST: ::c_int = 0x20000; + ++// For getrandom() ++pub const GRND_NONBLOCK: ::c_uint = 0x1; ++pub const GRND_RANDOM: ::c_uint = 0x2; ++pub const GRND_INSECURE: ::c_uint = 0x4; ++ + safe_f! { + pub {const} fn WIFCONTINUED(status: ::c_int) -> bool { + status == 0x13 +@@ -1829,6 +1834,9 @@ pub fn mq_timedsend( + abs_timeout: *const ::timespec, + ) -> ::c_int; + pub fn mq_unlink(name: *const ::c_char) -> ::c_int; ++ ++ pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t; ++ pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int; + } + + #[link(name = "util")] diff --git a/docker/test/test.sh b/docker/test/test.sh index f487f45..9f98021 100755 --- a/docker/test/test.sh +++ b/docker/test/test.sh @@ -290,6 +290,10 @@ if [[ -f /BUILD_STD ]]; then ;; # TODO(mips): LLVM bug: Undefined temporary symbol error when building std. mips-*-linux-* | mipsel-*-linux-*) build_mode=release ;; + # TODO(m68k): compiler segfault + m68k-*-linux-*) build_mode=release ;; + # TODO(windows-gnullvm): undefined symbol: ___chkstk + i686-pc-windows-gnullvm) build_mode=release ;; esac fi diff --git a/platform-support-status-tier3.md b/platform-support-status-tier3.md index 709c863..19e3812 100644 --- a/platform-support-status-tier3.md +++ b/platform-support-status-tier3.md @@ -75,7 +75,7 @@ See [platform-support-status.md](platform-support-status.md) for Tier 1 & Tier 2 - [ ] i686-win7-windows-msvc - [ ] i686-wrs-vxworks - [ ] loongarch64-unknown-linux-musl -- [ ] m68k-unknown-linux-gnu +- [x] m68k-unknown-linux-gnu - [x] mips-unknown-linux-gnu - [x] mips-unknown-linux-musl - [x] mips-unknown-linux-uclibc diff --git a/tools/target-list-shared.sh b/tools/target-list-shared.sh index 7863f76..c883b24 100644 --- a/tools/target-list-shared.sh +++ b/tools/target-list-shared.sh @@ -21,7 +21,7 @@ linux_gnu_targets=( i586-unknown-linux-gnu i686-unknown-linux-gnu loongarch64-unknown-linux-gnu - # m68k-unknown-linux-gnu # tier3, build fail: https://github.com/rust-lang/rust/issues/89498 + m68k-unknown-linux-gnu # tier3, build fail: https://github.com/rust-lang/rust/issues/89498 mips-unknown-linux-gnu # tier3 mips64-unknown-linux-gnuabi64 # tier3 mips64el-unknown-linux-gnuabi64 # tier3