Skip to content

Commit 0e337e4

Browse files
Merge #974
974: Change `mips64-unknown-linux-gnuabi64` to hard-float. r=Emilgardis a=Alexhuszagh Changes `mips64-unknown-linux-gnuabi64` to use a hard-float musl toolchain, rather than a soft-float one. Closes #906. Co-authored-by: Alex Huszagh <[email protected]>
2 parents 13cbcb7 + 0585828 commit 0e337e4

File tree

4 files changed

+42
-7
lines changed

4 files changed

+42
-7
lines changed

.changes/974.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[
2+
{
3+
"description": "change `mips64-unknown-linux-muslabi64` target to hard-float target.",
4+
"type": "fixed",
5+
"issues": [906]
6+
},
7+
{
8+
"description": "build static libgcc and link to static libgcc for `mips64-unknown-linux-muslabi64` target.",
9+
"type": "fixed"
10+
}
11+
]

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ jobs:
167167
- { target: mipsel-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
168168
- { target: mips64-unknown-linux-gnuabi64, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1 }
169169
- { target: mips64el-unknown-linux-gnuabi64, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
170-
- { target: mips64-unknown-linux-muslabi64, os: ubuntu-latest, std: 1, run: 1 }
170+
- { target: mips64-unknown-linux-muslabi64, os: ubuntu-latest, cpp:1, dylib: 1, std: 1, run: 1, runners: qemu-user }
171171
- { target: mips64el-unknown-linux-muslabi64, os: ubuntu-latest, std: 1, run: 1 }
172172
- { target: powerpc-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }
173173
- { target: powerpc64-unknown-linux-gnu, os: ubuntu-latest, cpp: 1, dylib: 1, std: 1, run: 1, runners: qemu-user qemu-system }

docker/Dockerfile.mips64-unknown-linux-muslabi64

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,25 @@ RUN /qemu.sh mips64
1414

1515
COPY musl.sh /
1616
RUN /musl.sh \
17-
TARGET=mips64-linux-muslsf \
17+
TARGET=mips64-linux-musl \
1818
"COMMON_CONFIG += -with-arch=mips64r2"
1919

20-
ENV CROSS_MUSL_SYSROOT=/usr/local/mips64-linux-muslsf
20+
ENV CROSS_MUSL_SYSROOT=/usr/local/mips64-linux-musl
2121
COPY musl-symlink.sh /
22-
RUN /musl-symlink.sh $CROSS_MUSL_SYSROOT mips64-sf
22+
RUN /musl-symlink.sh $CROSS_MUSL_SYSROOT mips64
23+
RUN mkdir -p $CROSS_MUSL_SYSROOT/usr/lib64
24+
# needed for the C/C++ runner
25+
RUN ln -s $CROSS_MUSL_SYSROOT/usr/lib/libc.so $CROSS_MUSL_SYSROOT/usr/lib64/libc.so
26+
RUN ln -s $CROSS_MUSL_SYSROOT/usr/lib/libc.so.1 $CROSS_MUSL_SYSROOT/usr/lib64/libc.so.1
27+
28+
COPY mips64-linux-muslabi64-gcc.sh /usr/bin/
2329

2430
COPY qemu-runner /
2531

26-
ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_LINKER=mips64-linux-muslsf-gcc \
32+
ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_LINKER=mips64-linux-muslabi64-gcc.sh \
2733
CARGO_TARGET_MIPS64_UNKNOWN_LINUX_MUSLABI64_RUNNER="/qemu-runner mips64" \
28-
CC_mips64_unknown_linux_muslabi64=mips64-linux-muslsf-gcc \
29-
CXX_mips64_unknown_linux_muslabi64=mips64-linux-muslsf-g++ \
34+
CC_mips64_unknown_linux_muslabi64=mips64-linux-musl-gcc \
35+
CXX_mips64_unknown_linux_muslabi64=mips64-linux-musl-g++ \
3036
BINDGEN_EXTRA_CLANG_ARGS_mips64_unknown_linux_muslabi64="--sysroot=$CROSS_MUSL_SYSROOT" \
3137
QEMU_LD_PREFIX=$CROSS_MUSL_SYSROOT \
3238
RUST_TEST_THREADS=1
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/bash
2+
3+
# this fixes an issue of missing symbols from the command lines
4+
# these soft-float routines are required even for hard-float targets.
5+
# (strtod.lo): undefined reference to symbol '__trunctfsf2@@GCC_3.0'
6+
7+
set -x
8+
set -euo pipefail
9+
10+
main() {
11+
if [[ $# -gt 0 ]]; then
12+
exec mips64-linux-musl-gcc "${@}" -lgcc -static-libgcc
13+
else
14+
exec mips64-linux-musl-gcc "${@}"
15+
fi
16+
}
17+
18+
main "${@}"

0 commit comments

Comments
 (0)