From 6a50f406171aaee6e3617bccac4a11c603a41abb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 4 Jan 2023 23:42:00 +0100 Subject: [PATCH 1/5] absl_synchronization isn't req --- debian/patches/link-grpc.diff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/patches/link-grpc.diff b/debian/patches/link-grpc.diff index 8a5c3cb6..63739bc2 100644 --- a/debian/patches/link-grpc.diff +++ b/debian/patches/link-grpc.diff @@ -22,7 +22,7 @@ Index: llvm-toolchain-14-14.0.6/llvm/cmake/modules/FindGRPC.cmake + message(STATUS "Using grpc: " ${GRPC2_LIBRARY}) + set_target_properties(grpc PROPERTIES IMPORTED_LOCATION ${GRPC2_LIBRARY}) + -+ find_library(ABSL_SYNCHRONIZATION_LIBRARY absl_synchronization $GRPC_OPTS REQUIRED) ++ find_library(ABSL_SYNCHRONIZATION_LIBRARY absl_synchronization $GRPC_OPTS) + if (ABSL_SYNCHRONIZATION_LIBRARY) + add_library(absl_synchronization UNKNOWN IMPORTED GLOBAL) + message(STATUS "Using absl_synchronization: " ${ABSL_SYNCHRONIZATION_LIBRARY}) From 01af55a0655ee35b485008618a27364b022c18d1 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 5 Jan 2023 23:55:50 +0100 Subject: [PATCH 2/5] backport D124227-wasm.patch --- debian/patches/libcxx-D124227-wasm.patch | 246 +++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 247 insertions(+) create mode 100644 debian/patches/libcxx-D124227-wasm.patch diff --git a/debian/patches/libcxx-D124227-wasm.patch b/debian/patches/libcxx-D124227-wasm.patch new file mode 100644 index 00000000..dbffb2f7 --- /dev/null +++ b/debian/patches/libcxx-D124227-wasm.patch @@ -0,0 +1,246 @@ +From 67b0b02ec9f2bbc57bf8f0550828d97f460ac11f Mon Sep 17 00:00:00 2001 +From: Brad Smith +Date: Sat, 7 May 2022 01:06:32 -0400 +Subject: [PATCH] [libcxx] Remove static inline and make use of + _LIBCPP_HIDE_FROM_ABI in __support headers + +After feedback from D122861, do the same thing with some of the other headers. Try to move the +headers so they have a similar style and way of doing things. + +Reviewed By: ldionne, daltenty + +Differential Revision: https://reviews.llvm.org/D124227 +--- + libcxx/include/__support/ibm/gettod_zos.h | 3 +- + libcxx/include/__support/ibm/xlocale.h | 53 +++++++++------------ + libcxx/include/__support/musl/xlocale.h | 31 ++++++------ + libcxx/include/__support/solaris/xlocale.h | 55 +++++++++++----------- + 4 files changed, 67 insertions(+), 75 deletions(-) + +Index: llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/ibm/gettod_zos.h +=================================================================== +--- llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895.orig/libcxx/include/__support/ibm/gettod_zos.h ++++ llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/ibm/gettod_zos.h +@@ -12,7 +12,8 @@ + + #include + +-static inline int gettimeofdayMonotonic(struct timespec64* Output) { ++inline _LIBCPP_HIDE_FROM_ABI int ++gettimeofdayMonotonic(struct timespec64* Output) { + + // The POSIX gettimeofday() function is not available on z/OS. Therefore, + // we will call stcke and other hardware instructions in implement equivalent. +Index: llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/ibm/xlocale.h +=================================================================== +--- llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895.orig/libcxx/include/__support/ibm/xlocale.h ++++ llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/ibm/xlocale.h +@@ -52,57 +52,50 @@ private: + + // The following are not POSIX routines. These are quick-and-dirty hacks + // to make things pretend to work +-static inline +-long long strtoll_l(const char *__nptr, char **__endptr, +- int __base, locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI long long ++strtoll_l(const char *__nptr, char **__endptr, int __base, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtoll(__nptr, __endptr, __base); ++ return ::strtoll(__nptr, __endptr, __base); + } + +-static inline +-long strtol_l(const char *__nptr, char **__endptr, +- int __base, locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI long ++strtol_l(const char *__nptr, char **__endptr, int __base, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtol(__nptr, __endptr, __base); ++ return ::strtol(__nptr, __endptr, __base); + } + +-static inline +-double strtod_l(const char *__nptr, char **__endptr, +- locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI double ++strtod_l(const char *__nptr, char **__endptr, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtod(__nptr, __endptr); ++ return ::strtod(__nptr, __endptr); + } + +-static inline +-float strtof_l(const char *__nptr, char **__endptr, +- locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI float ++strtof_l(const char *__nptr, char **__endptr, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtof(__nptr, __endptr); ++ return ::strtof(__nptr, __endptr); + } + +-static inline +-long double strtold_l(const char *__nptr, char **__endptr, +- locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI long double ++strtold_l(const char *__nptr, char **__endptr, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtold(__nptr, __endptr); ++ return ::strtold(__nptr, __endptr); + } + +-static inline +-unsigned long long strtoull_l(const char *__nptr, char **__endptr, +- int __base, locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI unsigned long long ++strtoull_l(const char *__nptr, char **__endptr, int __base, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtoull(__nptr, __endptr, __base); ++ return ::strtoull(__nptr, __endptr, __base); + } + +-static inline +-unsigned long strtoul_l(const char *__nptr, char **__endptr, +- int __base, locale_t locale) { ++inline _LIBCPP_HIDE_FROM_ABI unsigned long ++strtoul_l(const char *__nptr, char **__endptr, int __base, locale_t locale) { + __setAndRestore __newloc(locale); +- return strtoul(__nptr, __endptr, __base); ++ return ::strtoul(__nptr, __endptr, __base); + } + +-static inline +-int vasprintf(char **strp, const char *fmt, va_list ap) { ++inline _LIBCPP_HIDE_FROM_ABI int ++vasprintf(char **strp, const char *fmt, va_list ap) { + const size_t buff_size = 256; + if ((*strp = (char *)malloc(buff_size)) == NULL) { + return -1; +Index: llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/musl/xlocale.h +=================================================================== +--- llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895.orig/libcxx/include/__support/musl/xlocale.h ++++ llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/musl/xlocale.h +@@ -24,30 +24,29 @@ + extern "C" { + #endif + +-static inline long long strtoll_l(const char *nptr, char **endptr, int base, +- locale_t) { +- return strtoll(nptr, endptr, base); ++inline _LIBCPP_HIDE_FROM_ABI long long ++strtoll_l(const char *nptr, char **endptr, int base, locale_t) { ++ return ::strtoll(nptr, endptr, base); + } + +-static inline unsigned long long strtoull_l(const char *nptr, char **endptr, +- int base, locale_t) { +- return strtoull(nptr, endptr, base); ++inline _LIBCPP_HIDE_FROM_ABI unsigned long long ++strtoull_l(const char *nptr, char **endptr, int base, locale_t) { ++ return ::strtoull(nptr, endptr, base); + } + +-static inline long long wcstoll_l(const wchar_t *nptr, wchar_t **endptr, +- int base, locale_t) { +- return wcstoll(nptr, endptr, base); ++inline _LIBCPP_HIDE_FROM_ABI long long ++wcstoll_l(const wchar_t *nptr, wchar_t **endptr, int base, locale_t) { ++ return ::wcstoll(nptr, endptr, base); + } + +-static inline unsigned long long wcstoull_l(const wchar_t *nptr, +- wchar_t **endptr, int base, +- locale_t) { +- return wcstoull(nptr, endptr, base); ++inline _LIBCPP_HIDE_FROM_ABI long long ++wcstoull_l(const wchar_t *nptr, wchar_t **endptr, int base, locale_t) { ++ return ::wcstoull(nptr, endptr, base); + } + +-static inline long double wcstold_l(const wchar_t *nptr, wchar_t **endptr, +- locale_t) { +- return wcstold(nptr, endptr); ++inline _LIBCPP_HIDE_FROM_ABI long double ++wcstold_l(const wchar_t *nptr, wchar_t **endptr, locale_t) { ++ return ::wcstold(nptr, endptr); + } + + #ifdef __cplusplus +Index: llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/solaris/xlocale.h +=================================================================== +--- llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895.orig/libcxx/include/__support/solaris/xlocale.h ++++ llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__support/solaris/xlocale.h +@@ -32,40 +32,39 @@ struct lconv *localeconv(void); + struct lconv *localeconv_l(locale_t __l); + + // FIXME: These are quick-and-dirty hacks to make things pretend to work +-static inline +-long long strtoll_l(const char *__nptr, char **__endptr, +- int __base, locale_t __loc) { +- return strtoll(__nptr, __endptr, __base); +-} +-static inline +-long strtol_l(const char *__nptr, char **__endptr, +- int __base, locale_t __loc) { +- return strtol(__nptr, __endptr, __base); +-} +-static inline +-unsigned long long strtoull_l(const char *__nptr, char **__endptr, +- int __base, locale_t __loc) { +- return strtoull(__nptr, __endptr, __base); +-} +-static inline +-unsigned long strtoul_l(const char *__nptr, char **__endptr, +- int __base, locale_t __loc) { +- return strtoul(__nptr, __endptr, __base); +-} +-static inline +-float strtof_l(const char *__nptr, char **__endptr, +- locale_t __loc) { +- return strtof(__nptr, __endptr); +-} +-static inline +-double strtod_l(const char *__nptr, char **__endptr, +- locale_t __loc) { +- return strtod(__nptr, __endptr); +-} +-static inline +-long double strtold_l(const char *__nptr, char **__endptr, +- locale_t __loc) { +- return strtold(__nptr, __endptr); ++inline _LIBCPP_HIDE_FROM_ABI long long ++strtoll_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) { ++ return ::strtoll(__nptr, __endptr, __base); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI long ++strtol_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) { ++ return ::strtol(__nptr, __endptr, __base); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI unsigned long long ++strtoull_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) ++ return ::strtoull(__nptr, __endptr, __base); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI unsigned long ++strtoul_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) { ++ return ::strtoul(__nptr, __endptr, __base); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI float ++strtof_l(const char *__nptr, char **__endptr, locale_t __loc) { ++ return ::strtof(__nptr, __endptr); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI double ++strtod_l(const char *__nptr, char **__endptr, locale_t __loc) { ++ return ::strtod(__nptr, __endptr); ++} ++ ++inline _LIBCPP_HIDE_FROM_ABI long double ++strtold_l(const char *__nptr, char **__endptr, locale_t __loc) { ++ return ::strtold(__nptr, __endptr); + } + + diff --git a/debian/patches/series b/debian/patches/series index bb79f0a8..866ae6cc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -162,3 +162,4 @@ lldb/lldb-swig-2.diff protobuf_3.21.patch basic_string.patch link-grpc.diff +libcxx-D124227-wasm.patch From 8aef1419e3804a5ae719229515f115d73f380558 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 6 Jan 2023 13:55:26 +0100 Subject: [PATCH 3/5] fix a typo --- debian/NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/NEWS b/debian/NEWS index 3bacb4d1..ac60ced7 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,6 +1,6 @@ llvm-toolchain-14 (1:14.0.6-10) unstable; urgency=medium - * libclang-common-X.Y-dev has been splitted into libclang-rt-X.Y-dev, + * libclang-common-X.Y-dev has been split into libclang-rt-X.Y-dev, libpolly-X.Y-dev, libclang-rt-14-dev-wasm32 and libclang-rt-14-dev-wasm64 compiler-rt and polly moved to libclang-rt-X.Y-dev libclang-common-X.Y-dev is now arch:any and contains headers From 9aad80c056d8ad830361a5a6b2e5122113f20abd Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Sat, 7 Jan 2023 21:02:33 +0100 Subject: [PATCH 4/5] Fix build again by re-adding spirv again on riscv64 --- debian/changelog | 4 ++++ debian/control | 2 +- debian/control.in | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 89de0d09..07f39815 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,11 @@ llvm-toolchain-14 (1:14.0.6-11) UNRELEASED; urgency=medium + [ Sylvestre Ledru ] * Update SV to 4.6.2 + [ Gianfranco Costamagna ] + * Fix riscv64 build by adding spirv again (from @paravoid) + -- Sylvestre Ledru Mon, 02 Jan 2023 13:54:51 +0100 llvm-toolchain-14 (1:14.0.6-10) unstable; urgency=medium diff --git a/debian/control b/debian/control index de3e93e7..0de9d680 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,7 @@ Build-Depends: debhelper (>= 10.0), cmake, ninja-build, libctypes-ocaml-dev [amd64 arm64 armhf ppc64el riscv64 s390x], dh-exec, dh-ocaml [amd64 arm64 armhf ppc64el riscv64 s390x], libpfm4-dev [linux-any], python3-setuptools, libz3-dev, - llvm-spirv-14 [ amd64 arm64 armel armhf mips64el mipsel ppc64el s390x ] | hello [!i386], + llvm-spirv-14 [ amd64 arm64 armel armhf mips64el mipsel ppc64el riscv64 s390x ] | hello [!i386], spirv-tools [ linux-any ] | hello [ !i386], wasi-libc | hello [ !i386], libcurl4-dev, diff --git a/debian/control.in b/debian/control.in index 90313c4c..dd301636 100644 --- a/debian/control.in +++ b/debian/control.in @@ -22,7 +22,7 @@ Build-Depends: debhelper (>= 10.0), cmake, ninja-build, libctypes-ocaml-dev [amd64 arm64 armhf ppc64el riscv64 s390x], dh-exec, dh-ocaml [amd64 arm64 armhf ppc64el riscv64 s390x], libpfm4-dev [linux-any], python3-setuptools, libz3-dev, - llvm-spirv-14 [ amd64 arm64 armel armhf mips64el mipsel ppc64el s390x ] | hello [!i386], + llvm-spirv-14 [ amd64 arm64 armel armhf mips64el mipsel ppc64el riscv64 s390x ] | hello [!i386], spirv-tools [ linux-any ] | hello [ !i386], wasi-libc | hello [ !i386], libcurl4-dev, From 164a1f0e669219fd855ac2cc5475f2d2919768e5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 8 Jan 2023 00:41:26 +0100 Subject: [PATCH 5/5] also apply a followup patch --- debian/patches/libcxx-D124227-wasm.patch | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/patches/libcxx-D124227-wasm.patch b/debian/patches/libcxx-D124227-wasm.patch index dbffb2f7..dcb4c79d 100644 --- a/debian/patches/libcxx-D124227-wasm.patch +++ b/debian/patches/libcxx-D124227-wasm.patch @@ -7,6 +7,9 @@ Subject: [PATCH] [libcxx] Remove static inline and make use of After feedback from D122861, do the same thing with some of the other headers. Try to move the headers so they have a similar style and way of doing things. ++ also applies: +https://reviews.llvm.org/D141208 + Reviewed By: ldionne, daltenty Differential Revision: https://reviews.llvm.org/D124227 @@ -152,7 +155,7 @@ Index: llvm-toolchain-14-14.0.6~++20230104093240+f28c006a5895/libcxx/include/__s - wchar_t **endptr, int base, - locale_t) { - return wcstoull(nptr, endptr, base); -+inline _LIBCPP_HIDE_FROM_ABI long long ++inline _LIBCPP_HIDE_FROM_ABI unsigned long long +wcstoull_l(const wchar_t *nptr, wchar_t **endptr, int base, locale_t) { + return ::wcstoull(nptr, endptr, base); }