diff --git a/cross/gcc-aarch64/0041-dlang-support-musl-1.2.0.patch b/cross/gcc-aarch64/0041-dlang-support-musl-1.2.0.patch new file mode 100644 index 000000000..c13487eff --- /dev/null +++ b/cross/gcc-aarch64/0041-dlang-support-musl-1.2.0.patch @@ -0,0 +1,50 @@ +From ca0b670b87284afa341f1bef57f5614d88aecb4b Mon Sep 17 00:00:00 2001 +From: Geod24 +Date: Mon, 16 Nov 2020 18:40:46 +0100 +Subject: [PATCH] CRuntime_Musl: Support v1.2.0 for 32 bits + +As explained in the comment, `time_t` on Musl is now always 64 bits, +but used to be 32 bits on 32 bits systems. +--- + libphobos/libdruntime/core/sys/posix/sys/types.d | 25 ++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d +index fcf39b5b..aacd0df0 100644 +--- a/libphobos/libdruntime/core/sys/posix/sys/types.d ++++ b/libphobos/libdruntime/core/sys/posix/sys/types.d +@@ -140,10 +140,33 @@ else version (CRuntime_Musl) + alias int pid_t; + alias uint uid_t; + alias uint gid_t; ++ ++ /** ++ * Musl versions before v1.2.0 (up to v1.1.24) had different ++ * definitions for `time_t` for 32 bits. ++ * This was changed to always be 64 bits in v1.2.0: ++ * https://musl.libc.org/time64.html ++ * This change was only for 32 bits system and ++ * didn't affect 64 bits systems ++ * ++ * To check previous definitions, `grep` for `time_t` in `arch/`, ++ * and the result should be (in v1.1.24): ++ * --- ++ * // arch/riscv64/bits/alltypes.h.in:20:TYPEDEF long time_t; ++ * // arch/s390x/bits/alltypes.h.in:17:TYPEDEF long time_t; ++ * // arch/sh/bits/alltypes.h.in:21:TYPEDEF long time_t; ++ * --- ++ * ++ * In order to be compatible with old versions of Musl, ++ * one can recompile druntime with `CRuntime_Musl_Pre_Time64`. ++ */ + version (D_X32) + alias long time_t; +- else ++ else version (CRuntime_Musl_Pre_Time64) + alias c_long time_t; ++ else ++ alias long time_t; ++ + alias c_long clock_t; + alias c_ulong pthread_t; + version (D_LP64) diff --git a/cross/gcc-aarch64/APKBUILD b/cross/gcc-aarch64/APKBUILD index de69bd3b1..97557ea5c 100644 --- a/cross/gcc-aarch64/APKBUILD +++ b/cross/gcc-aarch64/APKBUILD @@ -31,7 +31,7 @@ pkgver=10.2.1_pre0 [ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target="" pkgname=gcc-aarch64 -pkgrel=1 +pkgrel=2 pkgdesc="Stage2 cross-compiler for aarch64" url="https://gcc.gnu.org" arch="x86_64" @@ -222,6 +222,7 @@ source="https://dev.alpinelinux.org/~nenolod/gcc-10.2.1.tar.xz 0038-gcc-go-link-to-libucontext.patch 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch + 0041-dlang-support-musl-1.2.0.patch " # gcc-4.8-build-args.patch @@ -698,4 +699,5 @@ f7582eaa9b6f421652b6705e28a22ba68210ea7e32d3c468e86b481a26bf391c86146e1a3ee4dda5 c7d48b3657d37fbaef0696c96f858819bbe5469d7387e99db890eb925703dbeaf11858fdf2ecd556ac85d766c739374d71c5509f5e2fba88eb427cf93e9fdcc0 0037-gcc-go-undef-SETCONTEXT_CLOBBERS_TLS-in-proc.c.patch 1e85dd650a43ce96d489f77e37fd247186e4e1fe2d088be991c3ff8233c923408137d94b72788ebc2ddcac8873c6f326a92138790ab0281722c67cce400f76cc 0038-gcc-go-link-to-libucontext.patch c93e8b0797c54483174b77f942e932eeb832c0784af9948ead7d8d95ca6392ffe3edee0740e835cf3d9310904718384e846a882284c21ccf26a055f8f940a874 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch -ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch" +ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch +eb2d8e432206250a4c4682305390883343e3c8285ac26701a910c1418b6ba5b3681612db846eb298fd47f0163772403340a348b719af751afe410742d6e92472 0041-dlang-support-musl-1.2.0.patch" diff --git a/cross/gcc-armhf/0041-dlang-support-musl-1.2.0.patch b/cross/gcc-armhf/0041-dlang-support-musl-1.2.0.patch new file mode 100644 index 000000000..c13487eff --- /dev/null +++ b/cross/gcc-armhf/0041-dlang-support-musl-1.2.0.patch @@ -0,0 +1,50 @@ +From ca0b670b87284afa341f1bef57f5614d88aecb4b Mon Sep 17 00:00:00 2001 +From: Geod24 +Date: Mon, 16 Nov 2020 18:40:46 +0100 +Subject: [PATCH] CRuntime_Musl: Support v1.2.0 for 32 bits + +As explained in the comment, `time_t` on Musl is now always 64 bits, +but used to be 32 bits on 32 bits systems. +--- + libphobos/libdruntime/core/sys/posix/sys/types.d | 25 ++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d +index fcf39b5b..aacd0df0 100644 +--- a/libphobos/libdruntime/core/sys/posix/sys/types.d ++++ b/libphobos/libdruntime/core/sys/posix/sys/types.d +@@ -140,10 +140,33 @@ else version (CRuntime_Musl) + alias int pid_t; + alias uint uid_t; + alias uint gid_t; ++ ++ /** ++ * Musl versions before v1.2.0 (up to v1.1.24) had different ++ * definitions for `time_t` for 32 bits. ++ * This was changed to always be 64 bits in v1.2.0: ++ * https://musl.libc.org/time64.html ++ * This change was only for 32 bits system and ++ * didn't affect 64 bits systems ++ * ++ * To check previous definitions, `grep` for `time_t` in `arch/`, ++ * and the result should be (in v1.1.24): ++ * --- ++ * // arch/riscv64/bits/alltypes.h.in:20:TYPEDEF long time_t; ++ * // arch/s390x/bits/alltypes.h.in:17:TYPEDEF long time_t; ++ * // arch/sh/bits/alltypes.h.in:21:TYPEDEF long time_t; ++ * --- ++ * ++ * In order to be compatible with old versions of Musl, ++ * one can recompile druntime with `CRuntime_Musl_Pre_Time64`. ++ */ + version (D_X32) + alias long time_t; +- else ++ else version (CRuntime_Musl_Pre_Time64) + alias c_long time_t; ++ else ++ alias long time_t; ++ + alias c_long clock_t; + alias c_ulong pthread_t; + version (D_LP64) diff --git a/cross/gcc-armhf/APKBUILD b/cross/gcc-armhf/APKBUILD index 8feeb42d4..dd5dd0c46 100644 --- a/cross/gcc-armhf/APKBUILD +++ b/cross/gcc-armhf/APKBUILD @@ -31,7 +31,7 @@ pkgver=10.2.1_pre0 [ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target="" pkgname=gcc-armhf -pkgrel=1 +pkgrel=2 pkgdesc="Stage2 cross-compiler for armhf" url="https://gcc.gnu.org" arch="x86_64" @@ -222,6 +222,7 @@ source="https://dev.alpinelinux.org/~nenolod/gcc-10.2.1.tar.xz 0038-gcc-go-link-to-libucontext.patch 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch + 0041-dlang-support-musl-1.2.0.patch " # gcc-4.8-build-args.patch @@ -698,4 +699,5 @@ f7582eaa9b6f421652b6705e28a22ba68210ea7e32d3c468e86b481a26bf391c86146e1a3ee4dda5 c7d48b3657d37fbaef0696c96f858819bbe5469d7387e99db890eb925703dbeaf11858fdf2ecd556ac85d766c739374d71c5509f5e2fba88eb427cf93e9fdcc0 0037-gcc-go-undef-SETCONTEXT_CLOBBERS_TLS-in-proc.c.patch 1e85dd650a43ce96d489f77e37fd247186e4e1fe2d088be991c3ff8233c923408137d94b72788ebc2ddcac8873c6f326a92138790ab0281722c67cce400f76cc 0038-gcc-go-link-to-libucontext.patch c93e8b0797c54483174b77f942e932eeb832c0784af9948ead7d8d95ca6392ffe3edee0740e835cf3d9310904718384e846a882284c21ccf26a055f8f940a874 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch -ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch" +ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch +eb2d8e432206250a4c4682305390883343e3c8285ac26701a910c1418b6ba5b3681612db846eb298fd47f0163772403340a348b719af751afe410742d6e92472 0041-dlang-support-musl-1.2.0.patch" diff --git a/cross/gcc-armv7/0041-dlang-support-musl-1.2.0.patch b/cross/gcc-armv7/0041-dlang-support-musl-1.2.0.patch new file mode 100644 index 000000000..c13487eff --- /dev/null +++ b/cross/gcc-armv7/0041-dlang-support-musl-1.2.0.patch @@ -0,0 +1,50 @@ +From ca0b670b87284afa341f1bef57f5614d88aecb4b Mon Sep 17 00:00:00 2001 +From: Geod24 +Date: Mon, 16 Nov 2020 18:40:46 +0100 +Subject: [PATCH] CRuntime_Musl: Support v1.2.0 for 32 bits + +As explained in the comment, `time_t` on Musl is now always 64 bits, +but used to be 32 bits on 32 bits systems. +--- + libphobos/libdruntime/core/sys/posix/sys/types.d | 25 ++++++++++++++++++++++++- + 1 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d +index fcf39b5b..aacd0df0 100644 +--- a/libphobos/libdruntime/core/sys/posix/sys/types.d ++++ b/libphobos/libdruntime/core/sys/posix/sys/types.d +@@ -140,10 +140,33 @@ else version (CRuntime_Musl) + alias int pid_t; + alias uint uid_t; + alias uint gid_t; ++ ++ /** ++ * Musl versions before v1.2.0 (up to v1.1.24) had different ++ * definitions for `time_t` for 32 bits. ++ * This was changed to always be 64 bits in v1.2.0: ++ * https://musl.libc.org/time64.html ++ * This change was only for 32 bits system and ++ * didn't affect 64 bits systems ++ * ++ * To check previous definitions, `grep` for `time_t` in `arch/`, ++ * and the result should be (in v1.1.24): ++ * --- ++ * // arch/riscv64/bits/alltypes.h.in:20:TYPEDEF long time_t; ++ * // arch/s390x/bits/alltypes.h.in:17:TYPEDEF long time_t; ++ * // arch/sh/bits/alltypes.h.in:21:TYPEDEF long time_t; ++ * --- ++ * ++ * In order to be compatible with old versions of Musl, ++ * one can recompile druntime with `CRuntime_Musl_Pre_Time64`. ++ */ + version (D_X32) + alias long time_t; +- else ++ else version (CRuntime_Musl_Pre_Time64) + alias c_long time_t; ++ else ++ alias long time_t; ++ + alias c_long clock_t; + alias c_ulong pthread_t; + version (D_LP64) diff --git a/cross/gcc-armv7/APKBUILD b/cross/gcc-armv7/APKBUILD index f2c9ccdeb..caca574fd 100644 --- a/cross/gcc-armv7/APKBUILD +++ b/cross/gcc-armv7/APKBUILD @@ -31,7 +31,7 @@ pkgver=10.2.1_pre0 [ "$CHOST" != "$CTARGET" ] && _target="-$CTARGET_ARCH" || _target="" pkgname=gcc-armv7 -pkgrel=1 +pkgrel=2 pkgdesc="Stage2 cross-compiler for armv7" url="https://gcc.gnu.org" arch="x86_64" @@ -222,6 +222,7 @@ source="https://dev.alpinelinux.org/~nenolod/gcc-10.2.1.tar.xz 0038-gcc-go-link-to-libucontext.patch 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch + 0041-dlang-support-musl-1.2.0.patch " # gcc-4.8-build-args.patch @@ -698,4 +699,5 @@ f7582eaa9b6f421652b6705e28a22ba68210ea7e32d3c468e86b481a26bf391c86146e1a3ee4dda5 c7d48b3657d37fbaef0696c96f858819bbe5469d7387e99db890eb925703dbeaf11858fdf2ecd556ac85d766c739374d71c5509f5e2fba88eb427cf93e9fdcc0 0037-gcc-go-undef-SETCONTEXT_CLOBBERS_TLS-in-proc.c.patch 1e85dd650a43ce96d489f77e37fd247186e4e1fe2d088be991c3ff8233c923408137d94b72788ebc2ddcac8873c6f326a92138790ab0281722c67cce400f76cc 0038-gcc-go-link-to-libucontext.patch c93e8b0797c54483174b77f942e932eeb832c0784af9948ead7d8d95ca6392ffe3edee0740e835cf3d9310904718384e846a882284c21ccf26a055f8f940a874 0039-gcc-go-Disable-printing-of-unaccessible-ppc64-struct.patch -ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch" +ff74dbf6a3e10f6abececdce57672e76cca8f8a92f67ed495ae2631265402fed74e9b567fc35ad16d2a62449ca4074b6868ebbc56c68b9cecf8e686018f26554 0040-opts-move-fpartial-inlining-from-O2-to-O3-or-higher.patch +eb2d8e432206250a4c4682305390883343e3c8285ac26701a910c1418b6ba5b3681612db846eb298fd47f0163772403340a348b719af751afe410742d6e92472 0041-dlang-support-musl-1.2.0.patch"