From 509593de218b12790fee5fb1e1cef664ce1ef038 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sun, 1 Oct 2023 14:16:18 -0700 Subject: [PATCH 1/3] Add powerpc-unknown-linux-gnu support. --- .github/workflows/ci.yml | 4 ++++ include/ring-core/target.h | 2 ++ mk/cargo.sh | 8 ++++++++ mk/install-build-tools.sh | 7 +++++++ src/lib.rs | 7 ------- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1030363238..a3f0aad50e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -504,6 +504,7 @@ jobs: target: - aarch64-unknown-linux-gnu - i686-unknown-linux-gnu + - powerpc-unknown-linux-gnu - powerpc64le-unknown-linux-gnu - riscv64gc-unknown-linux-gnu - s390x-unknown-linux-gnu @@ -530,6 +531,9 @@ jobs: - target: i686-unknown-linux-gnu host_os: ubuntu-22.04 + - target: powerpc-unknown-linux-gnu + host_os: ubuntu-22.04 + - target: powerpc64le-unknown-linux-gnu host_os: ubuntu-22.04 diff --git a/include/ring-core/target.h b/include/ring-core/target.h index 3924e78f8d..1bdd4feec0 100644 --- a/include/ring-core/target.h +++ b/include/ring-core/target.h @@ -40,6 +40,8 @@ #elif defined(__MIPSEL__) && defined(__LP64__) #define OPENSSL_64_BIT #define OPENSSL_MIPS64 +#elif (defined(__PPC__) || defined(__powerpc__)) && defined(_BIG_ENDIAN) +#define OPENSSL_32_BIT #elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN) #define OPENSSL_64_BIT #define OPENSSL_PPC64LE diff --git a/mk/cargo.sh b/mk/cargo.sh index 436b68eee2..05f1e9c82e 100755 --- a/mk/cargo.sh +++ b/mk/cargo.sh @@ -21,6 +21,7 @@ rustflags_self_contained="-Clink-self-contained=yes -Clinker=rust-lld" qemu_aarch64="qemu-aarch64 -L /usr/aarch64-linux-gnu" qemu_arm="qemu-arm -L /usr/arm-linux-gnueabihf" qemu_mipsel="qemu-mipsel -L /usr/mipsel-linux-gnu" +qemu_powerpc="qemu-ppc -L /usr/powerpc-linux-gnu" qemu_powerpc64le="qemu-ppc64le -L /usr/powerpc64le-linux-gnu" qemu_riscv64="qemu-riscv64 -L /usr/riscv64-linux-gnu" qemu_s390x="qemu-s390x -L /usr/s390x-linux-gnu" @@ -102,6 +103,13 @@ case $target in export CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_LINKER=mipsel-linux-gnu-gcc export CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_RUNNER="$qemu_mipsel" ;; + powerpc-unknown-linux-gnu) + export CC_powerpc_unknown_linux_gnu=clang-$llvm_version + export AR_powerpc_unknown_linux_gnu=llvm-ar-$llvm_version + export CFLAGS_powerpc_unknown_linux_gnu="--sysroot=/usr/powerpc-linux-gnu" + export CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc + export CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="$qemu_powerpc" + ;; powerpc64le-unknown-linux-gnu) export CC_powerpc64le_unknown_linux_gnu=clang-$llvm_version export AR_powerpc64le_unknown_linux_gnu=llvm-ar-$llvm_version diff --git a/mk/install-build-tools.sh b/mk/install-build-tools.sh index b861041c1b..ca098b89f7 100755 --- a/mk/install-build-tools.sh +++ b/mk/install-build-tools.sh @@ -91,6 +91,13 @@ case $target in libc6-dev-mipsel-cross \ qemu-user ;; +--target=powerpc-unknown-linux-gnu) + use_clang=1 + install_packages \ + gcc-powerpc-linux-gnu \ + libc6-dev-powerpc-cross \ + qemu-user + ;; --target=powerpc64le-unknown-linux-gnu) use_clang=1 install_packages \ diff --git a/src/lib.rs b/src/lib.rs index 99e1ff3ee6..0ccc8a2498 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -114,10 +114,3 @@ mod sealed { // ``` pub trait Sealed {} } - -// XXX: 64-bit big endian is tested; 32-bit is not. -// TODO: Add 32-bit big endian test coverage to CI. -const _ENDIAN_TESTING: () = assert!(cfg!(any( - target_endian = "little", - target_pointer_width = "64" -))); From d30084dc8732f568592d7e7a996fe00942f51959 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sun, 1 Oct 2023 15:04:18 -0700 Subject: [PATCH 2/3] CI: Document critical aspects of each target in `coverage`. --- .github/workflows/ci.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3f0aad50e..5b51f4161e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -502,13 +502,15 @@ jobs: # TODO: targets target: - - aarch64-unknown-linux-gnu - - i686-unknown-linux-gnu - - powerpc-unknown-linux-gnu - - powerpc64le-unknown-linux-gnu - - riscv64gc-unknown-linux-gnu - - s390x-unknown-linux-gnu - - x86_64-unknown-linux-musl + - aarch64-unknown-linux-gnu # Has assembly + - i686-unknown-linux-gnu # Has assembly + # TODO: arm-unknown-linux-gnueabi # Has assembly but doesn't build w/ clang + # TODO: armv7-unknown-linux-gnueabihf # Has assembly but doesn't have profiler builtins + - powerpc-unknown-linux-gnu # No assembly 32-bit big-endian + - powerpc64le-unknown-linux-gnu # No assembly 64-bit little-endian with flags + - riscv64gc-unknown-linux-gnu # No assembly 64-bit little-endian without flags + - s390x-unknown-linux-gnu # No assembly 64-bit big-endian + - x86_64-unknown-linux-musl # Has assembly mode: - # debug From 13650a387b4d3c7133ff53c8c5ccce8a6d1da008 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sun, 1 Oct 2023 17:11:04 -0700 Subject: [PATCH 3/3] CI: Temporarily move powerpc-unknown-linux-gnu from coverage to test-features. --- .github/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b51f4161e..46c69381b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -345,6 +345,7 @@ jobs: target: - aarch64-unknown-linux-musl - i686-pc-windows-msvc + - powerpc-unknown-linux-gnu - powerpc64le-unknown-linux-gnu - s390x-unknown-linux-gnu - x86_64-unknown-linux-gnu @@ -365,6 +366,9 @@ jobs: - target: i686-pc-windows-msvc host_os: windows-latest + - target: powerpc-unknown-linux-gnu + host_os: ubuntu-22.04 + - target: powerpc64le-unknown-linux-gnu host_os: ubuntu-22.04 @@ -506,7 +510,7 @@ jobs: - i686-unknown-linux-gnu # Has assembly # TODO: arm-unknown-linux-gnueabi # Has assembly but doesn't build w/ clang # TODO: armv7-unknown-linux-gnueabihf # Has assembly but doesn't have profiler builtins - - powerpc-unknown-linux-gnu # No assembly 32-bit big-endian + # TODO: powerpc-unknown-linux-gnu No assembly 32-bit big-endian but doesn't have profiler builtins - powerpc64le-unknown-linux-gnu # No assembly 64-bit little-endian with flags - riscv64gc-unknown-linux-gnu # No assembly 64-bit little-endian without flags - s390x-unknown-linux-gnu # No assembly 64-bit big-endian @@ -533,9 +537,6 @@ jobs: - target: i686-unknown-linux-gnu host_os: ubuntu-22.04 - - target: powerpc-unknown-linux-gnu - host_os: ubuntu-22.04 - - target: powerpc64le-unknown-linux-gnu host_os: ubuntu-22.04