On Tue, 2 Jun 2026 at 21:39, Dustin Lundquist <[email protected]> wrote:
>
> glibc 2.43 no longer exposes struct termio (the old UNIX System V
> terminal struct) through <termios.h>. This breaks the GCC 14
> libsanitizer build which uses sizeof(struct termio) and registers
> ioctl interceptors for the legacy TCGETA/TCSETA/TCSETAF/TCSETAW
> ioctls that operated on struct termio.
>
> GCC 15 already dropped these references. Backport that removal to
> the GCC 14 patch series.
>
> Signed-off-by: Dustin Lundquist <[email protected]>

Merged, thanks.

Regards,
Robert
> ---
>  ...0-libsanitizer-fix-termio-glibc-2.40.patch | 53 +++++++++++++++++++
>  1 file changed, 53 insertions(+)
>  create mode 100644 
> toolchain/gcc/patches-14.x/240-libsanitizer-fix-termio-glibc-2.40.patch
>
> diff --git 
> a/toolchain/gcc/patches-14.x/240-libsanitizer-fix-termio-glibc-2.40.patch 
> b/toolchain/gcc/patches-14.x/240-libsanitizer-fix-termio-glibc-2.40.patch
> new file mode 100644
> index 0000000000..b2ceac73ce
> --- /dev/null
> +++ b/toolchain/gcc/patches-14.x/240-libsanitizer-fix-termio-glibc-2.40.patch
> @@ -0,0 +1,53 @@
> +From: Backport from GCC 15
> +
> +libsanitizer: remove struct termio and legacy ioctl interceptors for glibc
> +
> +glibc 2.43 no longer exposes struct termio (the old UNIX System V
> +terminal struct) through <termios.h>. The old TCGETA/TCSETA/TCSETAF/
> +TCSETAW ioctls that operated on struct termio are legacy interfaces
> +superseded by the POSIX TCGETS/TCSETS family using struct termios.
> +
> +GCC 15 already dropped these; this patch backports that removal to GCC 14.
> +
> +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> +@@ -479,9 +479,6 @@
> +   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);
> +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> +@@ -1012,7 +1012,6 @@
> + 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;
> +--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> ++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> +@@ -338,17 +338,9 @@
> +   _(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);
>
> _______________________________________________
> openwrt-devel mailing list
> [email protected]
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to