guix_mirror_bot pushed a commit to branch core-packages-team in repository guix.
commit 5124afda6bb4143222ef9fb981f9e3a941cb58d5 Author: Zheng Junjie <[email protected]> AuthorDate: Wed Oct 7 11:13:31 2026 +0800 gnu: llvm-19: Fix build with glibc 2.42+. * gnu/packages/patches/llvm-19-remove-deprecated-struct-termio.patch: New patch. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/llvm.scm (%llvm-patches)[19.1.7]: Add it. --- gnu/local.mk | 1 + gnu/packages/llvm.scm | 3 +- .../llvm-19-remove-deprecated-struct-termio.patch | 252 +++++++++++++++++++++ 3 files changed, 255 insertions(+), 1 deletion(-) diff --git a/gnu/local.mk b/gnu/local.mk index 9a8dc517859..3ed1b4128cd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1906,6 +1906,7 @@ dist_patch_DATA = \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ %D%/packages/patches/llvm-13-gcc-14.patch \ + %D%/packages/patches/llvm-19-remove-deprecated-struct-termio.patch\ %D%/packages/patches/llvm-22-cfloat128-detection.patch \ %D%/packages/patches/lm-sensors-hwmon-attrs.patch \ %D%/packages/patches/lsof-fatal-test-failures.patch \ diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 268a0fad0da..31b4be6ec8d 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -623,7 +623,8 @@ output), and Binutils.") "clang-17.0-link-dsymutil-latomic.patch")) ("18.1.8" . ("clang-18.0-libc-search-path.patch" "clang-17.0-link-dsymutil-latomic.patch")) - ("19.1.7" . ("clang-18.0-libc-search-path.patch" + ("19.1.7" . ("llvm-19-remove-deprecated-struct-termio.patch" + "clang-18.0-libc-search-path.patch" "clang-17.0-link-dsymutil-latomic.patch")) ("20.1.8" . ("clang-18.0-libc-search-path.patch" "clang-17.0-link-dsymutil-latomic.patch")) diff --git a/gnu/packages/patches/llvm-19-remove-deprecated-struct-termio.patch b/gnu/packages/patches/llvm-19-remove-deprecated-struct-termio.patch new file mode 100644 index 00000000000..9db5910f2d3 --- /dev/null +++ b/gnu/packages/patches/llvm-19-remove-deprecated-struct-termio.patch @@ -0,0 +1,252 @@ +check-pick from upstream 59978b21ad9c65276ee8e14f26759691b8a65763 0a17483c481d82eace3b36aee9cacb619eb027af c99b1bcd505064f2e086e6b1034ce0b0c91ea5b9 commits + +From 59978b21ad9c65276ee8e14f26759691b8a65763 Mon Sep 17 00:00:00 2001 +From: Tom Stellard <[email protected]> +Date: Mon, 28 Apr 2025 13:45:11 -0700 +Subject: [PATCH] [sanitizer_common] Remove interceptors for deprecated struct + termio (#137403) + +This struct will be removed from glibc-2.42 and has been deprecated for +a very long time. + +Fixes #137321 +--- + .../sanitizer_common_interceptors_ioctl.inc | 8 -------- + .../sanitizer_common/sanitizer_platform_limits_posix.cpp | 3 --- + .../sanitizer_common/sanitizer_platform_limits_posix.h | 1 - + 3 files changed, 12 deletions(-) + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +index f88f914b1d149..bc8f02826c614 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +@@ -342,17 +342,9 @@ static void ioctl_table_fill() { + _(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int)); + _(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int)); + _(TCFLSH, NONE, 0); +-#if SANITIZER_GLIBC +- _(TCGETA, WRITE, struct_termio_sz); +-#endif + _(TCGETS, WRITE, struct_termios_sz); + _(TCSBRK, NONE, 0); + _(TCSBRKP, NONE, 0); +-#if SANITIZER_GLIBC +- _(TCSETA, READ, struct_termio_sz); +- _(TCSETAF, READ, struct_termio_sz); +- _(TCSETAW, READ, struct_termio_sz); +-#endif + _(TCSETS, READ, struct_termios_sz); + _(TCSETSF, READ, struct_termios_sz); + _(TCSETSW, READ, struct_termios_sz); +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +index b4d87ab6228e5..7a89bf1c74985 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -494,9 +494,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned struct_input_id_sz = sizeof(struct input_id); + unsigned struct_mtpos_sz = sizeof(struct mtpos); + unsigned struct_rtentry_sz = sizeof(struct rtentry); +-#if SANITIZER_GLIBC || SANITIZER_ANDROID +- unsigned struct_termio_sz = sizeof(struct termio); +-#endif + unsigned struct_vt_consize_sz = sizeof(struct vt_consize); + unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes); + unsigned struct_vt_stat_sz = sizeof(struct vt_stat); +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +index 348bb4f27aec3..fdc52aa56c493 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -1063,7 +1063,6 @@ extern unsigned struct_hd_geometry_sz; + extern unsigned struct_input_absinfo_sz; + extern unsigned struct_input_id_sz; + extern unsigned struct_mtpos_sz; +-extern unsigned struct_termio_sz; + extern unsigned struct_vt_consize_sz; + extern unsigned struct_vt_sizes_sz; + extern unsigned struct_vt_stat_sz; +From 0a17483c481d82eace3b36aee9cacb619eb027af Mon Sep 17 00:00:00 2001 +From: cqwrteur <[email protected]> +Date: Fri, 25 Jul 2025 03:49:49 +0800 +Subject: [PATCH] [sanitizer] Remove usage of termios ioctl constants on Linux + glibc since 2.41 (#149140) + +glibc 2.42 made all usage of termios ioctl constants strictly internal + +Therefore, we remove all usage for those removed constants. + +This should only apply for Linux. + +Fix #149103 + +Reference: + +https://github.com/bminor/glibc/commit/3d3572f59059e2b19b8541ea648a6172136ec42e + +@fweimer-rh @tstellar +--- + .../sanitizer_common_interceptors_ioctl.inc | 4 ++++ + .../lib/sanitizer_common/sanitizer_platform.h | 15 +++++++++++++++ + .../sanitizer_platform_limits_posix.cpp | 4 ++++ + .../sanitizer_platform_limits_posix.h | 4 +++- + 4 files changed, 26 insertions(+), 1 deletion(-) + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +index 08c2be47f5358..673f284b6a043 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +@@ -344,12 +344,16 @@ static void ioctl_table_fill() { + _(SOUND_PCM_WRITE_CHANNELS, WRITE, sizeof(int)); + _(SOUND_PCM_WRITE_FILTER, WRITE, sizeof(int)); + _(TCFLSH, NONE, 0); ++# if SANITIZER_TERMIOS_IOCTL_CONSTANTS + _(TCGETS, WRITE, struct_termios_sz); ++# endif + _(TCSBRK, NONE, 0); + _(TCSBRKP, NONE, 0); ++# if SANITIZER_TERMIOS_IOCTL_CONSTANTS + _(TCSETS, READ, struct_termios_sz); + _(TCSETSF, READ, struct_termios_sz); + _(TCSETSW, READ, struct_termios_sz); ++# endif + _(TCXONC, NONE, 0); + _(TIOCGLCKTRMIOS, WRITE, struct_termios_sz); + _(TIOCGSOFTCAR, WRITE, sizeof(int)); +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +index 196c0a988478e..13099fe84b0aa 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform.h ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +@@ -482,4 +482,19 @@ + # define SANITIZER_START_BACKGROUND_THREAD_IN_ASAN_INTERNAL 0 + #endif + ++#if SANITIZER_LINUX ++# if SANITIZER_GLIBC ++// Workaround for ++// glibc/commit/3d3572f59059e2b19b8541ea648a6172136ec42e ++// Linux: Keep termios ioctl constants strictly internal ++# if __GLIBC_PREREQ(2, 41) ++# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 0 ++# else ++# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1 ++# endif ++# else ++# define SANITIZER_TERMIOS_IOCTL_CONSTANTS 1 ++# endif ++#endif ++ + #endif // SANITIZER_PLATFORM_H +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +index 7a89bf1c74985..ef4b8a85d6634 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -780,15 +780,19 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + #endif // SOUND_VERSION + unsigned IOCTL_TCFLSH = TCFLSH; + unsigned IOCTL_TCGETA = TCGETA; ++# if SANITIZER_TERMIOS_IOCTL_CONSTANTS + unsigned IOCTL_TCGETS = TCGETS; ++# endif + unsigned IOCTL_TCSBRK = TCSBRK; + unsigned IOCTL_TCSBRKP = TCSBRKP; + unsigned IOCTL_TCSETA = TCSETA; + unsigned IOCTL_TCSETAF = TCSETAF; + unsigned IOCTL_TCSETAW = TCSETAW; ++# if SANITIZER_TERMIOS_IOCTL_CONSTANTS + unsigned IOCTL_TCSETS = TCSETS; + unsigned IOCTL_TCSETSF = TCSETSF; + unsigned IOCTL_TCSETSW = TCSETSW; ++# endif + unsigned IOCTL_TCXONC = TCXONC; + unsigned IOCTL_TIOCGLCKTRMIOS = TIOCGLCKTRMIOS; + unsigned IOCTL_TIOCGSOFTCAR = TIOCGSOFTCAR; +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +index 00e237a24fc91..9e11dd9911d9d 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -1339,15 +1339,17 @@ extern unsigned IOCTL_SNDCTL_COPR_WCODE; + extern unsigned IOCTL_SNDCTL_COPR_WDATA; + extern unsigned IOCTL_TCFLSH; + extern unsigned IOCTL_TCGETA; +-extern unsigned IOCTL_TCGETS; + extern unsigned IOCTL_TCSBRK; + extern unsigned IOCTL_TCSBRKP; + extern unsigned IOCTL_TCSETA; + extern unsigned IOCTL_TCSETAF; + extern unsigned IOCTL_TCSETAW; ++# if SANITIZER_TERMIOS_IOCTL_CONSTANTS ++extern unsigned IOCTL_TCGETS; + extern unsigned IOCTL_TCSETS; + extern unsigned IOCTL_TCSETSF; + extern unsigned IOCTL_TCSETSW; ++# endif + extern unsigned IOCTL_TCXONC; + extern unsigned IOCTL_TIOCGLCKTRMIOS; + extern unsigned IOCTL_TIOCGSOFTCAR; +From c99b1bcd505064f2e086e6b1034ce0b0c91ea5b9 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab <[email protected]> +Date: Wed, 7 May 2025 10:06:10 +0200 +Subject: [PATCH] Remove reference to obsolete termio ioctls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The termio ioctls are no longer used after commit 59978b21ad9c +("[sanitizer_common] Remove interceptors for deprecated struct termio +(#137403)"), remove them. Fixes this build error: + +../../../../libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp:765:27: error: invalid application of ‘sizeof’ to incomplete type ‘__sanitizer::termio’ + 765 | unsigned IOCTL_TCGETA = TCGETA; + | ^~~~~~ +../../../../libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp:769:27: error: invalid application of ‘sizeof’ to incomplete type ‘__sanitizer::termio’ + 769 | unsigned IOCTL_TCSETA = TCSETA; + | ^~~~~~ +../../../../libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp:770:28: error: invalid application of ‘sizeof’ to incomplete type ‘__sanitizer::termio’ + 770 | unsigned IOCTL_TCSETAF = TCSETAF; + | ^~~~~~~ +../../../../libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp:771:28: error: invalid application of ‘sizeof’ to incomplete type ‘__sanitizer::termio’ + 771 | unsigned IOCTL_TCSETAW = TCSETAW; + | ^~~~~~~ +Part-of: https://github.com/llvm/llvm-project/pull/138822 +Closes: https://github.com/llvm/llvm-project/pull/138822 +--- + .../lib/sanitizer_common/sanitizer_platform_limits_posix.cpp | 4 ---- + .../lib/sanitizer_common/sanitizer_platform_limits_posix.h | 4 ---- + 2 files changed, 8 deletions(-) + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +index ef4b8a85d6634..ea8cc306268cb 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -779,15 +779,11 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned IOCTL_SOUND_PCM_WRITE_FILTER = SOUND_PCM_WRITE_FILTER; + #endif // SOUND_VERSION + unsigned IOCTL_TCFLSH = TCFLSH; +- unsigned IOCTL_TCGETA = TCGETA; + # if SANITIZER_TERMIOS_IOCTL_CONSTANTS + unsigned IOCTL_TCGETS = TCGETS; + # endif + unsigned IOCTL_TCSBRK = TCSBRK; + unsigned IOCTL_TCSBRKP = TCSBRKP; +- unsigned IOCTL_TCSETA = TCSETA; +- unsigned IOCTL_TCSETAF = TCSETAF; +- unsigned IOCTL_TCSETAW = TCSETAW; + # if SANITIZER_TERMIOS_IOCTL_CONSTANTS + unsigned IOCTL_TCSETS = TCSETS; + unsigned IOCTL_TCSETSF = TCSETSF; +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +index 9e11dd9911d9d..24966523f3a02 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -1338,12 +1338,8 @@ extern unsigned IOCTL_SNDCTL_COPR_SENDMSG; + extern unsigned IOCTL_SNDCTL_COPR_WCODE; + extern unsigned IOCTL_SNDCTL_COPR_WDATA; + extern unsigned IOCTL_TCFLSH; +-extern unsigned IOCTL_TCGETA; + extern unsigned IOCTL_TCSBRK; + extern unsigned IOCTL_TCSBRKP; +-extern unsigned IOCTL_TCSETA; +-extern unsigned IOCTL_TCSETAF; +-extern unsigned IOCTL_TCSETAW; + # if SANITIZER_TERMIOS_IOCTL_CONSTANTS + extern unsigned IOCTL_TCGETS; + extern unsigned IOCTL_TCSETS;
