diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml
index 5c991c4..7cb3b52 100644
--- a/.github/workflows/base.yml
+++ b/.github/workflows/base.yml
@@ -69,7 +69,7 @@ jobs:
- target: x86_64-unknown-illumos
# Windows (MinGW)
- # - target: i686-pc-windows-gnu # TODO
+ - target: i686-pc-windows-gnu
- target: x86_64-pc-windows-gnu
- target: x86_64-pc-windows-gnu
host: aarch64
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 33c1fbd..2d16afe 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -33,32 +33,32 @@ jobs:
fail-fast: false
matrix:
include:
- - target: linux-gnu
- - target: linux-gnu
- host: aarch64
- # TODO(linux-musl): https://github.com/rust-lang/rust/pull/107129/
+ # - target: linux-gnu
+ # - target: linux-gnu
+ # host: aarch64
+ # # TODO(linux-musl): https://github.com/rust-lang/rust/pull/107129/
+ # # - target: linux-musl
+ # # musl: '1.1'
# - target: linux-musl
- # musl: '1.1'
- - target: linux-musl
- musl: '1.2'
- - target: linux-uclibc
- - target: android
- - target: freebsd
- - target: netbsd
- - target: openbsd
- - target: dragonfly
- - target: solaris
- - target: illumos
- - target: redox
- # - target: fuchsia
- - target: wasi
- - target: emscripten
+ # musl: '1.2'
+ # - target: linux-uclibc
+ # - target: android
+ # - target: freebsd
+ # - target: netbsd
+ # - target: openbsd
+ # - target: dragonfly
+ # - target: solaris
+ # - target: illumos
+ # - target: redox
+ # # - target: fuchsia
+ # - target: wasi
+ # - target: emscripten
- target: windows-gnu
- target: windows-gnu
host: aarch64
- - target: none
- - target: none
- host: aarch64
+ # - target: none
+ # - target: none
+ # host: aarch64
runs-on: ubuntu-latest
timeout-minutes: 150
permissions:
@@ -77,45 +77,45 @@ jobs:
HOST_ARCH: ${{ matrix.host }}
MUSL_VERSION: ${{ matrix.musl }}
- manifest:
- if: github.repository_owner == 'taiki-e' && github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
- needs: build
- runs-on: ubuntu-latest
- timeout-minutes: 60
- permissions:
- contents: read
- packages: write
- steps:
- - uses: taiki-e/github-actions/checkout@main
- - run: |
- echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
- echo "PUSH_TO_GHCR=1" >>"${GITHUB_ENV}"
- if: github.repository_owner == 'taiki-e' && (github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
- - run: tools/docker-manifest.sh
+ # manifest:
+ # if: github.repository_owner == 'taiki-e' && github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))
+ # needs: build
+ # runs-on: ubuntu-latest
+ # timeout-minutes: 60
+ # permissions:
+ # contents: read
+ # packages: write
+ # steps:
+ # - uses: taiki-e/github-actions/checkout@main
+ # - run: |
+ # echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
+ # echo "PUSH_TO_GHCR=1" >>"${GITHUB_ENV}"
+ # if: github.repository_owner == 'taiki-e' && (github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
+ # - run: tools/docker-manifest.sh
- codegen:
- runs-on: ubuntu-latest
- timeout-minutes: 60
- permissions:
- contents: write
- pull-requests: write
- steps:
- - uses: taiki-e/github-actions/checkout@main
- - name: Install Rust
- run: rustup toolchain add nightly --no-self-update && rustup default nightly
- - run: tools/gen.sh
- - id: diff
- run: tools/ci/gen.sh
- if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main')
- - uses: peter-evans/create-pull-request@v6
- with:
- title: Update generated code
- body: |
- Auto-generated by [create-pull-request][1]
- [Please close and immediately reopen this pull request to run CI.][2]
+ # codegen:
+ # runs-on: ubuntu-latest
+ # timeout-minutes: 60
+ # permissions:
+ # contents: write
+ # pull-requests: write
+ # steps:
+ # - uses: taiki-e/github-actions/checkout@main
+ # - name: Install Rust
+ # run: rustup toolchain add nightly --no-self-update && rustup default nightly
+ # - run: tools/gen.sh
+ # - id: diff
+ # run: tools/ci/gen.sh
+ # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main')
+ # - uses: peter-evans/create-pull-request@v6
+ # with:
+ # title: Update generated code
+ # body: |
+ # Auto-generated by [create-pull-request][1]
+ # [Please close and immediately reopen this pull request to run CI.][2]
- [1]: https://github.com/peter-evans/create-pull-request
- [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs
- branch: update-generated-code
- if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false'
- - run: git add -N . && git diff --exit-code
+ # [1]: https://github.com/peter-evans/create-pull-request
+ # [2]: https://github.com/peter-evans/create-pull-request/blob/HEAD/docs/concepts-guidelines.md#workarounds-to-trigger-further-workflow-runs
+ # branch: update-generated-code
+ # if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false'
+ # - run: git add -N . && git diff --exit-code
diff --git a/README.md b/README.md
index 1870fa2..814996a 100644
--- a/README.md
+++ b/README.md
@@ -41,37 +41,37 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t
| target | glibc | GCC | host |
| ------ | ----- | --- | ---- |
-| `aarch64-unknown-linux-gnu` | 2.27 (x86_64 host) / host (aarch64 host) | 7.4.0 (x86_64 host) / host (aarch64 host) | x86_64 linux (glibc 2.27+) |
-| `aarch64_be-unknown-linux-gnu` (tier3) | 2.31 | 10.2.1 | x86_64 linux (glibc 2.27+) |
-| `arm-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `arm-unknown-linux-gnueabihf` | 2.24 | 9.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `armeb-unknown-linux-gnueabi` (tier3) | 2.25 | 7.5.0 | x86_64 linux (glibc 2.27+) |
-| `armv5te-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `armv7-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `armv7-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `i586-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `i686-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `loongarch64-unknown-linux-gnu` | 2.36 | 13.0.0 | x86_64 linux (any libc) |
-| `mips-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `mips64-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `mips64el-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `mipsel-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `mipsisa32r6-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) |
-| `mipsisa32r6el-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) |
-| `mipsisa64r6-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) |
-| `mipsisa64r6el-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 linux (glibc 2.31+) |
-| `powerpc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `powerpc-unknown-linux-gnuspe` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `powerpc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `powerpc64le-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `riscv32gc-unknown-linux-gnu` (tier3) | 2.33 | 11.1.0 | x86_64 linux (glibc 2.27+) |
-| `riscv64gc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `s390x-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `sparc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `sparc-unknown-linux-gnu` (tier3) | 2.27 | 7.4.0 | x86_64 linux (glibc 2.27+) |
-| `thumbv7neon-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
-| `x86_64-unknown-linux-gnu` | host (x86_64 host) / 2.27 (aarch64 host) | host (x86_64 host) / 7.4.0 (aarch64 host) | x86_64/aarch64 linux (glibc 2.27+) |
-| `x86_64-unknown-linux-gnux32` | 2.27 | 7.4.0 | x86_64/aarch64 linux (glibc 2.27+) |
+| `aarch64-unknown-linux-gnu` | 2.27 (x86_64 host) / host (aarch64 host) | 7.4.0 (x86_64 host) / host (aarch64 host) | x86_64 Linux (glibc 2.27+) |
+| `aarch64_be-unknown-linux-gnu` (tier3) | 2.31 | 10.2.1 | x86_64 Linux (glibc 2.27+) |
+| `arm-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `arm-unknown-linux-gnueabihf` | 2.24 | 9.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `armeb-unknown-linux-gnueabi` (tier3) | 2.25 | 7.5.0 | x86_64 Linux (glibc 2.27+) |
+| `armv5te-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `armv7-unknown-linux-gnueabi` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `armv7-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `i586-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `i686-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `loongarch64-unknown-linux-gnu` | 2.36 | 13.0.0 | x86_64 Linux (any libc) |
+| `mips-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `mips64-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `mips64el-unknown-linux-gnuabi64` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `mipsel-unknown-linux-gnu` (tier3) [1] | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `mipsisa32r6-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) |
+| `mipsisa32r6el-unknown-linux-gnu` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) |
+| `mipsisa64r6-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) |
+| `mipsisa64r6el-unknown-linux-gnuabi64` (tier3) | 2.31 | 9.3.0 | x86_64 Linux (glibc 2.31+) |
+| `powerpc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `powerpc-unknown-linux-gnuspe` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `powerpc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `powerpc64le-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `riscv32gc-unknown-linux-gnu` (tier3) | 2.33 | 11.1.0 | x86_64 Linux (glibc 2.27+) |
+| `riscv64gc-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `s390x-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `sparc64-unknown-linux-gnu` | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `sparc-unknown-linux-gnu` (tier3) | 2.27 | 7.4.0 | x86_64 Linux (glibc 2.27+) |
+| `thumbv7neon-unknown-linux-gnueabihf` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
+| `x86_64-unknown-linux-gnu` | host (x86_64 host) / 2.27 (aarch64 host) | host (x86_64 host) / 7.4.0 (aarch64 host) | x86_64/aarch64 Linux (glibc 2.27+) |
+| `x86_64-unknown-linux-gnux32` | 2.27 | 7.4.0 | x86_64/aarch64 Linux (glibc 2.27+) |
[1] [Since nightly-2023-07-05](https://github.com/rust-lang/compiler-team/issues/648), mips{,el}-unknown-linux-gnu requires release mode for building std
@@ -82,7 +82,7 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t
| musl 1.2.3 | 9.4.0 [1] | [2] | ✓ (libstdc++) [1] | ✓ (qemu) [3] | [4] |
[1] Except for hexagon-unknown-linux-musl
-[2] 16.0.5 for hexagon-unknown-linux-musl, otherwise host
+[2] 17.0.0-rc3 for hexagon-unknown-linux-musl, otherwise host
[3] hexagon-unknown-linux-musl requires release mode for building test
[4] See target list below for details
@@ -92,30 +92,30 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t
| target | host |
| ------ | ---- |
-| `aarch64-unknown-linux-musl` | x86_64 linux (any libc) |
-| `arm-unknown-linux-musleabi` | x86_64 linux (any libc) |
-| `arm-unknown-linux-musleabihf` | x86_64 linux (any libc) |
-| `armv5te-unknown-linux-musleabi` | x86_64 linux (any libc) |
-| `armv7-unknown-linux-musleabi` | x86_64 linux (any libc) |
-| `armv7-unknown-linux-musleabihf` | x86_64 linux (any libc) |
-| `hexagon-unknown-linux-musl` (tier3) | x86_64 linux (glibc 2.27+) |
-| `i586-unknown-linux-musl` | x86_64 linux (any libc) |
-| `i686-unknown-linux-musl` | x86_64 linux (any libc) |
-| `mips-unknown-linux-musl` | x86_64 linux (any libc) |
-| `mips64-unknown-linux-muslabi64` | x86_64 linux (any libc) |
-| `mips64el-unknown-linux-muslabi64` | x86_64 linux (any libc) |
-| `mipsel-unknown-linux-musl` | x86_64 linux (any libc) |
-| `powerpc-unknown-linux-musl` (tier3) | x86_64 linux (any libc) |
-| `powerpc64le-unknown-linux-musl` (tier3) | x86_64 linux (any libc) |
-| `s390x-unknown-linux-musl` (tier3) | x86_64 linux (any libc) |
-| `thumbv7neon-unknown-linux-musleabihf` (tier3) | x86_64 linux (any libc) |
-| `x86_64-unknown-linux-musl` | x86_64 linux (any libc) |
+| `aarch64-unknown-linux-musl` | x86_64 Linux (any libc) |
+| `arm-unknown-linux-musleabi` | x86_64 Linux (any libc) |
+| `arm-unknown-linux-musleabihf` | x86_64 Linux (any libc) |
+| `armv5te-unknown-linux-musleabi` | x86_64 Linux (any libc) |
+| `armv7-unknown-linux-musleabi` | x86_64 Linux (any libc) |
+| `armv7-unknown-linux-musleabihf` | x86_64 Linux (any libc) |
+| `hexagon-unknown-linux-musl` (tier3) | x86_64 Linux (glibc 2.27+) |
+| `i586-unknown-linux-musl` | x86_64 Linux (any libc) |
+| `i686-unknown-linux-musl` | x86_64 Linux (any libc) |
+| `mips-unknown-linux-musl` | x86_64 Linux (any libc) |
+| `mips64-unknown-linux-muslabi64` | x86_64 Linux (any libc) |
+| `mips64el-unknown-linux-muslabi64` | x86_64 Linux (any libc) |
+| `mipsel-unknown-linux-musl` | x86_64 Linux (any libc) |
+| `powerpc-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) |
+| `powerpc64le-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) |
+| `s390x-unknown-linux-musl` (tier3) | x86_64 Linux (any libc) |
+| `thumbv7neon-unknown-linux-musleabihf` (tier3) | x86_64 Linux (any libc) |
+| `x86_64-unknown-linux-musl` | x86_64 Linux (any libc) |
### Linux (uClibc)
| libc | GCC | clang | C++ | test | host |
| ---- | --- | ----- | --- | ---- | ---- |
-| uClibc-ng 1.0.34 | 10.2.0 | host | ✓ (libstdc++) | ✓ (qemu) | x86_64 linux (glibc 2.17+) |
+| uClibc-ng 1.0.34 | 10.2.0 | host | ✓ (libstdc++) | ✓ (qemu) | x86_64 Linux (glibc 2.17+) |
([Dockerfile](docker/linux-uclibc.Dockerfile))
@@ -133,7 +133,7 @@ See also [setup-cross-toolchain-action](https://github.com/taiki-e/setup-cross-t
| libc | GCC | clang | C++ | test | host |
| ---- | --- | ----- | --- | ---- | ---- |
-| [1] | N/A | 14.0.6 | ? (libc++) | ✓ (qemu) | x86_64 linux (glibc 2.17+) |
+| [1] | N/A | 14.0.6 | ? (libc++) | ✓ (qemu) | x86_64 Linux (glibc 2.17+) |
[1] See target list below for details
@@ -275,10 +275,10 @@ https://gitlab.redox-os.org/redox-os/redox/-/releases
| libc | GCC | clang | C++ | test | host |
| ---- | --- | ----- | --- | ---- | ---- |
-| wasi-sdk 20 (wasi-libc 1dfe5c3) | N/A | 16.0.0 | ? (libc++) | ✓ (wasmtime) | x86_64 linux (glibc 2.27+) |
+| wasi-sdk 21 (wasi-libc c5264e2) | N/A | 17.0.6 | ? (libc++) | ✓ (wasmtime) | x86_64 linux (glibc 2.27+) |
([Dockerfile](docker/wasi.Dockerfile))
@@ -303,11 +303,11 @@ clang version and wasi-libc hash can be found here: https://github.com/WebAssemb
| libc | GCC | clang | C++ | test | host |
| ---- | --- | ----- | --- | ---- | ---- |
-| Mingw-w64 7.0.0 | 9.3.0 | host | ✓ (libstdc++) | ✓ (wine) | [1] |
+| Mingw-w64 8.0.0 | 10.3.0 | host | ✓ (libstdc++) | ✓ (wine) | [1] |
[1] See target list below for details
@@ -318,8 +318,8 @@ GCC version: https://packages.ubuntu.com/en/focal/gcc-mingw-w64-base
| target | host |
| ------ | ---- |
-| `x86_64-pc-windows-gnu` | x86_64/aarch64 linux (glibc 2.31+) |
-| `i686-pc-windows-gnu` | x86_64 linux (glibc 2.31+) |
+| `x86_64-pc-windows-gnu` | x86_64/aarch64 linux (glibc 2.35+) |
+| `i686-pc-windows-gnu` | x86_64 linux (glibc 2.35+) |
### Windows (LLVM MinGW)
diff --git a/docker/base/linux-musl-hexagon.Dockerfile b/docker/base/linux-musl-hexagon.Dockerfile
index ac0b6a0..e380ede 100644
--- a/docker/base/linux-musl-hexagon.Dockerfile
+++ b/docker/base/linux-musl-hexagon.Dockerfile
@@ -13,8 +13,8 @@ ARG RUST_TARGET
ARG TOOLCHAIN_DIR=/toolchain/x86_64-linux-gnu
RUN mkdir -p /toolchain
# https://codelinaro.jfrog.io/ui/native/codelinaro-toolchain-for-hexagon
-ARG LLVM_VERSION=16.0.6
-RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/v${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-cross-${RUST_TARGET}.tar.xz" \
+ARG LLVM_VERSION=17.0.0-rc3
+RUN curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "https://codelinaro.jfrog.io/artifactory/codelinaro-toolchain-for-hexagon/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-cross-hexagon-unknown-linux-musl.tar.xz" \
| tar xJf - --strip-components 1 -C /toolchain
RUN <
-
-Package: @@PACKAGE@@-mingw-w64-x86-64
--Architecture: any
--Depends: @@DEPENDS64@@,
+-Architecture: all
+-Depends: @@PACKAGE@@-mingw-w64-x86-64-posix,
+- @@PACKAGE@@-mingw-w64-x86-64-win32,
+- ${misc:Depends}
+-Built-Using: gcc-@@VERSION@@ (= ${gcc:Version})
+-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64 targeting Win64
+- MinGW-w64 provides a development and runtime environment for 32- and
+- 64-bit (x86 and x64) Windows applications using the Windows API and
+- the GNU Compiler Collection (gcc).
+- .
+- This metapackage provides the @@LANGUAGE@@ compiler, supporting
+- cross-compiling to 64-bit MinGW-w64 targets.
+-Build-Profiles:
+-
+-Package: @@PACKAGE@@-mingw-w64-x86-64-posix
+-Architecture: @@ARCH@@
+-Depends: @@DEPENDS64P@@,
- ${misc:Depends},
- ${shlibs:Depends}
-Suggests: gcc-@@VERSION@@-locales (>= ${local:Version})
@@ -25,37 +40,59 @@ index 5c80a28..eb85d4b 100644
-Conflicts: @@CONFLICTS64@@
-Replaces: @@REPLACES64@@
-Built-Using: gcc-@@VERSION@@ (= ${gcc:Version})
--Description: GNU @@LANGUAGE@@ compiler for MinGW-w64 targeting Win64
+-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64, Win64/POSIX
- MinGW-w64 provides a development and runtime environment for 32- and
- 64-bit (x86 and x64) Windows applications using the Windows API and
- the GNU Compiler Collection (gcc).
- .
- This package contains the @@LANGUAGE@@ compiler, supporting
-- cross-compiling to 64-bit MinGW-w64 targets.
+- cross-compiling to 64-bit MinGW-w64 targets, using the POSIX
+- threading model.
+-Build-Profiles:
+-
+-Package: @@PACKAGE@@-mingw-w64-x86-64-win32
+-Architecture: @@ARCH@@
+-Depends: @@DEPENDS64W@@,
+- ${misc:Depends},
+- ${shlibs:Depends}
+-Suggests: gcc-@@VERSION@@-locales (>= ${local:Version})
+-Breaks: @@BREAKS64@@
+-Conflicts: @@CONFLICTS64@@
+-Replaces: @@REPLACES64@@
+-Built-Using: gcc-@@VERSION@@ (= ${gcc:Version})
+-Description: GNU @@LANGUAGE@@ compiler for MinGW-w64, Win64/Win32
+- MinGW-w64 provides a development and runtime environment for 32- and
+- 64-bit (x86 and x64) Windows applications using the Windows API and
+- the GNU Compiler Collection (gcc).
+- .
+- This package contains the @@LANGUAGE@@ compiler, supporting
+- cross-compiling to 64-bit MinGW-w64 targets, using the Win32
+- threading model.
-Build-Profiles:
diff --git a/debian/rules b/debian/rules
-index 9e7e40c..082ce5a 100755
+index cfba9e6..ecabb89 100755
--- a/debian/rules
+++ b/debian/rules
-@@ -58,7 +58,7 @@ ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),)
+@@ -25,8 +25,7 @@ export NO_PKG_MANGLE=1
+
+ target_version := 10
+ target32 := i686-w64-mingw32
+-target64 := x86_64-w64-mingw32
+-targets := $(target32) $(target64)
++targets := $(target32)
+ threads := posix win32
+ gnat_arches := alpha amd64 arm64 armel armhf hppa i386 mips64el mipsel ppc64 ppc64el riscv64 s390x sh4 sparc64 x32
+
+@@ -67,7 +66,7 @@ ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),)
INSTALL_TARGET := install-gcc
else
# Build the full GCC.
-- languages := c,c++,fortran,objc,obj-c++,ada
+- languages := c,c++,fortran,objc,obj-c++
+ languages := c,c++
- BUILD_TARGET :=
- INSTALL_TARGET := install install-lto-plugin
+ ifneq ($(filter $(DEB_HOST_ARCH),$(gnat_arches)),)
+ languages := $(languages),ada
endif
-@@ -86,7 +86,7 @@ control-stamp:
- for file in debian/*.in; do sed 'sX@@WARNING@@XThis file is generated using debian/rules control, do not editXg;s/@@VERSION@@/$(target_version)/g;s/@@BASEVERSION@@/$(base_version)/g' < $$file > $${file%%.in}; chmod --reference=$$file $${file%%.in}; done
- touch $@
-
--targets := i686-w64-mingw32 x86_64-w64-mingw32
-+targets := i686-w64-mingw32
- threads := posix win32
-
- # Hardening on the host, none on the target
-@@ -220,6 +220,10 @@ CONFFLAGS += \
+@@ -246,6 +245,10 @@ CONFFLAGS += \
# Enable libatomic
CONFFLAGS += \
--enable-libatomic
@@ -66,3 +103,29 @@ index 9e7e40c..082ce5a 100755
# Enable experimental::filesystem and std::filesystem
CONFFLAGS += \
--enable-libstdcxx-filesystem-ts=yes
+@@ -314,11 +317,6 @@ ifeq ($(filter stage1,$(DEB_BUILD_PROFILES)),)
+ -B$(build_dir)/$(target32)-$$threads \
+ -D$(upstream_dir) -- \
+ $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2; \
+- target=$(target64); \
+- dh_auto_configure \
+- -B$(build_dir)/$(target64)-$$threads \
+- -D$(upstream_dir) -- \
+- $(CONFFLAGS); \
+ done
+ else
+ set -e; \
+@@ -326,12 +324,7 @@ else
+ dh_auto_configure \
+ -B$(build_dir)/$(target32) \
+ -D$(upstream_dir) -- \
+- $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2; \
+- target=$(target64); \
+- dh_auto_configure \
+- -B$(build_dir)/$(target64) \
+- -D$(upstream_dir) -- \
+- $(CONFFLAGS)
++ $(CONFFLAGS) --disable-sjlj-exceptions --with-dwarf2;
+ endif
+ touch $@
+
diff --git a/docker/base/windows-gnu.Dockerfile b/docker/base/windows-gnu.Dockerfile
index d357a2d..627cbdc 100644
--- a/docker/base/windows-gnu.Dockerfile
+++ b/docker/base/windows-gnu.Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1
# SPDX-License-Identifier: Apache-2.0 OR MIT
-ARG UBUNTU_VERSION=20.04
+ARG UBUNTU_VERSION=22.04
FROM ghcr.io/taiki-e/build-base:ubuntu-"${UBUNTU_VERSION}" as builder
SHELL ["/bin/bash", "-eEuxo", "pipefail", "-c"]
diff --git a/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff b/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff
new file mode 100644
index 0000000..a681c20
--- /dev/null
+++ b/docker/test-base/patches/std+hexagon-unknown-linux-musl.diff
@@ -0,0 +1,24 @@
+diff --git a/src/sys/pal/unix/thread.rs b/src/sys/pal/unix/thread.rs
+index 2af6382..acf3ecb 100644
+--- a/src/sys/pal/unix/thread.rs
++++ b/src/sys/pal/unix/thread.rs
+@@ -225,7 +225,9 @@ pub fn set_name(_name: &CStr) {
+ // Newlib, Emscripten, and VxWorks have no way to set a thread name.
+ }
+
+- #[cfg(target_os = "linux")]
++ // Qualcomm fork of musl doesn't have pthread_getname_np.
++ // https://github.com/quic/musl/blob/7243e0d3a9d7e0f08d21fc194a05749e0bb26725/include/pthread.h
++ #[cfg(all(target_os = "linux", not(target_arch = "hexagon")))]
+ pub fn get_name() -> Option {
+ const TASK_COMM_LEN: usize = 16;
+ let mut name = vec![0u8; TASK_COMM_LEN];
+@@ -253,7 +255,7 @@ pub fn get_name() -> Option {
+ }
+
+ #[cfg(not(any(
+- target_os = "linux",
++ all(target_os = "linux", not(target_arch = "hexagon")),
+ target_os = "macos",
+ target_os = "ios",
+ target_os = "tvos",
diff --git a/docker/test/test.sh b/docker/test/test.sh
index 03e7e05..f487f45 100755
--- a/docker/test/test.sh
+++ b/docker/test/test.sh
@@ -265,10 +265,6 @@ case "${RUST_TARGET}" in
# TODO(riscv32gc-unknown-linux-gnu): libstd's io-related feature on riscv32 linux is broken: https://github.com/rust-lang/rust/issues/88995
# TODO(x86_64-unknown-linux-gnux32): Invalid ELF image for this architecture
riscv32gc-unknown-linux-gnu | x86_64-unknown-linux-gnux32) ;;
- # TODO(windows-gnu): https://github.com/rust-lang/rust/pull/121317
- # wine: Call from 00006FFFFFC4FCF8 to unimplemented function KERNEL32.dll.WaitOnAddress, aborting
- # wine: Call from 00006FFFFFC4FCF8 to unimplemented function KERNEL32.dll.WakeByAddressSingle, aborting
- x86_64-pc-windows-gnu) ;;
# TODO(redox):
*-unknown-linux-* | *-android* | *-wasi* | *-emscripten* | *-windows-gnu*) no_run="" ;;
esac
@@ -384,8 +380,8 @@ EOF
case "${RUST_TARGET}" in
hexagon-*)
cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/{libc.a,Scrt1.o,crt1.o,crti.o,crtn.o,rcrt1.o} "${self_contained}"
- cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib/linux"/clang_rt.crtbegin-hexagon.o "${self_contained}"/crtbegin.o
- cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib/linux"/clang_rt.crtend-hexagon.o "${self_contained}"/crtend.o
+ cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/clang_rt.crtbegin-hexagon.o "${self_contained}"/crtbegin.o
+ cp -f "${toolchain_dir}/${RUST_TARGET}/usr/lib"/clang_rt.crtend-hexagon.o "${self_contained}"/crtend.o
;;
*)
cp -f "${toolchain_dir}/${RUST_TARGET}/lib"/{libc.a,Scrt1.o,crt1.o,crti.o,crtn.o,rcrt1.o} "${self_contained}"
@@ -1081,9 +1077,7 @@ case "${RUST_TARGET}" in
assert_file_info 'for MS Windows' "${bin}"
else
case "${RUST_TARGET}" in
- # TODO: on ubuntu 22.04+
- # aarch64-*) assert_file_info 'Aarch64 COFF object file' "${bin}" ;;
- aarch64-*) assert_file_info 'data' "${bin}" ;;
+ aarch64-*) assert_file_info 'Aarch64 COFF object file' "${bin}" ;;
i686-*) assert_file_info 'Intel 80386 COFF object file' "${bin}" ;;
x86_64*) assert_file_info 'Intel amd64 COFF object file' "${bin}" ;;
*) bail "unrecognized target '${RUST_TARGET}'" ;;
diff --git a/docker/windows-gnu.Dockerfile b/docker/windows-gnu.Dockerfile
index 5db9033..a34c09c 100644
--- a/docker/windows-gnu.Dockerfile
+++ b/docker/windows-gnu.Dockerfile
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: Apache-2.0 OR MIT
ARG RUST_TARGET
-ARG UBUNTU_VERSION=20.04
+ARG UBUNTU_VERSION=22.04
ARG TOOLCHAIN_TAG=dev
ARG HOST_ARCH=amd64
@@ -29,14 +29,15 @@ for tool in "${RUST_TARGET}"-*-posix "$(