arch/alpha/include/uapi/asm/ioctls.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
drops the legacy termio struct, but the ioctls.h header still defines some
TC* constants in terms of termio (via sizeof). Hardcode the values instead.
This fixes building Python for example, which falls over like:
./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
Link: https://bugs.gentoo.org/961769
Link: https://bugs.gentoo.org/962600
Co-authored-by: Stian Halseth <stian@itx.no>
Co-authored-by: Magnus Lindholm <linmag7@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
---
v3: Fix constants per Magnus.
v2: Fix title.
arch/alpha/include/uapi/asm/ioctls.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
index 971311605288f..a09d04b49cc65 100644
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -23,10 +23,10 @@
#define TCSETSW _IOW('t', 21, struct termios)
#define TCSETSF _IOW('t', 22, struct termios)
-#define TCGETA _IOR('t', 23, struct termio)
-#define TCSETA _IOW('t', 24, struct termio)
-#define TCSETAW _IOW('t', 25, struct termio)
-#define TCSETAF _IOW('t', 28, struct termio)
+#define TCGETA 0x40127417
+#define TCSETA 0x80127418
+#define TCSETAW 0x80127419
+#define TCSETAF 0x8012741c
#define TCSBRK _IO('t', 29)
#define TCXONC _IO('t', 30)
--
2.51.0
On Thu, 2 Oct 2025, Sam James wrote: > Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42 > drops the legacy termio struct, but the ioctls.h header still defines some > TC* constants in terms of termio (via sizeof). Hardcode the values instead. > > This fixes building Python for example, which falls over like: > ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio' > > Link: https://bugs.gentoo.org/961769 > Link: https://bugs.gentoo.org/962600 > Co-authored-by: Stian Halseth <stian@itx.no> > Co-authored-by: Magnus Lindholm <linmag7@gmail.com> > Signed-off-by: Sam James <sam@gentoo.org> FWIW, the documented tag for co-authors is Co-developed-by: and you're supposed to collect corresponding Signed-off-by: tags from each of them too. Cf. <Documentation/process/submitting-patches.rst> and the examples there. Maciej
"Maciej W. Rozycki" <macro@orcam.me.uk> writes: > On Thu, 2 Oct 2025, Sam James wrote: > >> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42 >> drops the legacy termio struct, but the ioctls.h header still defines some >> TC* constants in terms of termio (via sizeof). Hardcode the values instead. >> >> This fixes building Python for example, which falls over like: >> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio' >> >> Link: https://bugs.gentoo.org/961769 >> Link: https://bugs.gentoo.org/962600 >> Co-authored-by: Stian Halseth <stian@itx.no> >> Co-authored-by: Magnus Lindholm <linmag7@gmail.com> >> Signed-off-by: Sam James <sam@gentoo.org> > > FWIW, the documented tag for co-authors is Co-developed-by: and you're > supposed to collect corresponding Signed-off-by: tags from each of them > too. Cf. <Documentation/process/submitting-patches.rst> and the examples > there. Thanks, though I'd say I was more being gracious here and that it's not strictly required to have them here at all. Anyway, Magnus, I can resend with just my Signed-off-by (and nothing else) if you like, or can you do that in your tree? > > Maciej
> > Thanks, though I'd say I was more being gracious here and that it's not > strictly required to have them here at all. > > Anyway, Magnus, I can resend with just my Signed-off-by (and nothing > else) if you like, or can you do that in your tree? > > > > > Maciej Hi, Thanks Maciej for pointing this out. Sam, lets send it out again that way Stian can add his Signed-off-by tag as well Magnus
Magnus Lindholm <linmag7@gmail.com> writes: >> >> Thanks, though I'd say I was more being gracious here and that it's not >> strictly required to have them here at all. >> >> Anyway, Magnus, I can resend with just my Signed-off-by (and nothing >> else) if you like, or can you do that in your tree? >> >> > >> > Maciej > > > Hi, Thanks Maciej for pointing this out. Sam, lets send it out again > that way Stian can add his Signed-off-by tag as well Sure. > > Magnus
On Thu, Oct 2, 2025 at 1:01 AM Sam James <sam@gentoo.org> wrote:
>
> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
> drops the legacy termio struct, but the ioctls.h header still defines some
> TC* constants in terms of termio (via sizeof). Hardcode the values instead.
>
> This fixes building Python for example, which falls over like:
> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>
> Link: https://bugs.gentoo.org/961769
> Link: https://bugs.gentoo.org/962600
> Co-authored-by: Stian Halseth <stian@itx.no>
> Co-authored-by: Magnus Lindholm <linmag7@gmail.com>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v3: Fix constants per Magnus.
> v2: Fix title.
>
> arch/alpha/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
> index 971311605288f..a09d04b49cc65 100644
> --- a/arch/alpha/include/uapi/asm/ioctls.h
> +++ b/arch/alpha/include/uapi/asm/ioctls.h
> @@ -23,10 +23,10 @@
> #define TCSETSW _IOW('t', 21, struct termios)
> #define TCSETSF _IOW('t', 22, struct termios)
>
> -#define TCGETA _IOR('t', 23, struct termio)
> -#define TCSETA _IOW('t', 24, struct termio)
> -#define TCSETAW _IOW('t', 25, struct termio)
> -#define TCSETAF _IOW('t', 28, struct termio)
> +#define TCGETA 0x40127417
> +#define TCSETA 0x80127418
> +#define TCSETAW 0x80127419
> +#define TCSETAF 0x8012741c
>
> #define TCSBRK _IO('t', 29)
> #define TCXONC _IO('t', 30)
> --
> 2.51.0
>
Thanks, looks good to me!
Reviewed-by: Magnus Lindholm <linmag7@gmail.com>
Thanks, looks good to me, sorry for a late reply.
Reviewed-by: Magnus Lindholm <linmag7@gmail.com>
On Thu, Oct 2, 2025 at 1:01 AM Sam James <sam@gentoo.org> wrote:
>
> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
> drops the legacy termio struct, but the ioctls.h header still defines some
> TC* constants in terms of termio (via sizeof). Hardcode the values instead.
>
> This fixes building Python for example, which falls over like:
> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>
> Link: https://bugs.gentoo.org/961769
> Link: https://bugs.gentoo.org/962600
> Co-authored-by: Stian Halseth <stian@itx.no>
> Co-authored-by: Magnus Lindholm <linmag7@gmail.com>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v3: Fix constants per Magnus.
> v2: Fix title.
>
> arch/alpha/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
> index 971311605288f..a09d04b49cc65 100644
> --- a/arch/alpha/include/uapi/asm/ioctls.h
> +++ b/arch/alpha/include/uapi/asm/ioctls.h
> @@ -23,10 +23,10 @@
> #define TCSETSW _IOW('t', 21, struct termios)
> #define TCSETSF _IOW('t', 22, struct termios)
>
> -#define TCGETA _IOR('t', 23, struct termio)
> -#define TCSETA _IOW('t', 24, struct termio)
> -#define TCSETAW _IOW('t', 25, struct termio)
> -#define TCSETAF _IOW('t', 28, struct termio)
> +#define TCGETA 0x40127417
> +#define TCSETA 0x80127418
> +#define TCSETAW 0x80127419
> +#define TCSETAF 0x8012741c
>
> #define TCSBRK _IO('t', 29)
> #define TCXONC _IO('t', 30)
> --
> 2.51.0
>
Sam James <sam@gentoo.org> writes:
> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
> drops the legacy termio struct, but the ioctls.h header still defines some
> TC* constants in terms of termio (via sizeof). Hardcode the values instead.
>
> This fixes building Python for example, which falls over like:
> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>
> Link: https://bugs.gentoo.org/961769
> Link: https://bugs.gentoo.org/962600
> Co-authored-by: Stian Halseth <stian@itx.no>
> Co-authored-by: Magnus Lindholm <linmag7@gmail.com>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v3: Fix constants per Magnus.
> v2: Fix title.
Ping.
>
> arch/alpha/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
> index 971311605288f..a09d04b49cc65 100644
> --- a/arch/alpha/include/uapi/asm/ioctls.h
> +++ b/arch/alpha/include/uapi/asm/ioctls.h
> @@ -23,10 +23,10 @@
> #define TCSETSW _IOW('t', 21, struct termios)
> #define TCSETSF _IOW('t', 22, struct termios)
>
> -#define TCGETA _IOR('t', 23, struct termio)
> -#define TCSETA _IOW('t', 24, struct termio)
> -#define TCSETAW _IOW('t', 25, struct termio)
> -#define TCSETAF _IOW('t', 28, struct termio)
> +#define TCGETA 0x40127417
> +#define TCSETA 0x80127418
> +#define TCSETAW 0x80127419
> +#define TCSETAF 0x8012741c
>
> #define TCSBRK _IO('t', 29)
> #define TCXONC _IO('t', 30)
Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
drops the legacy termio struct, but the ioctls.h header still defines some
TC* constants in terms of termio (via sizeof). Hardcode the values instead.
This fixes building Python for example, which falls over like:
./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
Link: https://bugs.gentoo.org/961769
Link: https://bugs.gentoo.org/962600
Co-authored-by: Stian Halseth <stian@itx.no>
Signed-off-by: Sam James <sam@gentoo.org>
---
v3: Fix constants.
v2: Fix title.
arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
index 7fd2f5873c9e7..f26befbf690fb 100644
--- a/arch/sparc/include/uapi/asm/ioctls.h
+++ b/arch/sparc/include/uapi/asm/ioctls.h
@@ -5,10 +5,10 @@
#include <asm/ioctl.h>
/* Big T */
-#define TCGETA _IOR('T', 1, struct termio)
-#define TCSETA _IOW('T', 2, struct termio)
-#define TCSETAW _IOW('T', 3, struct termio)
-#define TCSETAF _IOW('T', 4, struct termio)
+#define TCGETA 0x40125401
+#define TCSETA 0x80125402
+#define TCSETAW 0x80125403
+#define TCSETAF 0x80125404
#define TCSBRK _IO('T', 5)
#define TCXONC _IO('T', 6)
#define TCFLSH _IO('T', 7)
--
2.51.0
Sam James <sam@gentoo.org> writes:
> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
> drops the legacy termio struct, but the ioctls.h header still defines some
> TC* constants in terms of termio (via sizeof). Hardcode the values instead.
>
> This fixes building Python for example, which falls over like:
> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>
> Link: https://bugs.gentoo.org/961769
> Link: https://bugs.gentoo.org/962600
> Co-authored-by: Stian Halseth <stian@itx.no>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v3: Fix constants.
> v2: Fix title.
>
> arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
Ping.
>
> diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
> index 7fd2f5873c9e7..f26befbf690fb 100644
> --- a/arch/sparc/include/uapi/asm/ioctls.h
> +++ b/arch/sparc/include/uapi/asm/ioctls.h
> @@ -5,10 +5,10 @@
> #include <asm/ioctl.h>
>
> /* Big T */
> -#define TCGETA _IOR('T', 1, struct termio)
> -#define TCSETA _IOW('T', 2, struct termio)
> -#define TCSETAW _IOW('T', 3, struct termio)
> -#define TCSETAF _IOW('T', 4, struct termio)
> +#define TCGETA 0x40125401
> +#define TCSETA 0x80125402
> +#define TCSETAW 0x80125403
> +#define TCSETAF 0x80125404
> #define TCSBRK _IO('T', 5)
> #define TCXONC _IO('T', 6)
> #define TCFLSH _IO('T', 7)
On 2025-10-19 21:18, Sam James wrote:
> Sam James <sam@gentoo.org> writes:
>> Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
Please refer to the referenced commit also with "commit", the SHA ID and
the oneline summary of the commit, like so:
commit ab107276607a ("powerpc: Fix struct termio related ioctl macros")
>> drops the legacy termio struct, but the ioctls.h header still defines some
>> TC* constants in terms of termio (via sizeof). Hardcode the values instead.
>>
>> This fixes building Python for example, which falls over like:
>> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>>
>> Link: https://bugs.gentoo.org/961769
>> Link: https://bugs.gentoo.org/962600
>> Co-authored-by: Stian Halseth <stian@itx.no>
>> Signed-off-by: Sam James <sam@gentoo.org>
>> ---
>> v3: Fix constants.
>> v2: Fix title.
>>
>> arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> Ping.
>
>>
>> diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
>> index 7fd2f5873c9e7..f26befbf690fb 100644
>> --- a/arch/sparc/include/uapi/asm/ioctls.h
>> +++ b/arch/sparc/include/uapi/asm/ioctls.h
>> @@ -5,10 +5,10 @@
>> #include <asm/ioctl.h>
>>
>> /* Big T */
>> -#define TCGETA _IOR('T', 1, struct termio)
>> -#define TCSETA _IOW('T', 2, struct termio)
>> -#define TCSETAW _IOW('T', 3, struct termio)
>> -#define TCSETAF _IOW('T', 4, struct termio)
>> +#define TCGETA 0x40125401
>> +#define TCSETA 0x80125402
>> +#define TCSETAW 0x80125403
>> +#define TCSETAF 0x80125404
>> #define TCSBRK _IO('T', 5)
>> #define TCXONC _IO('T', 6)
>> #define TCFLSH _IO('T', 7)
Please also, like in commit ab107276607a ("powerpc: Fix struct termio
related ioctl macros"), add the previous definitions as comments in
order to be able to know in the future what these hard coded constants
really should correspond to.
Don't forget to make sure that the subject gets a [PATCH v4].
Thanks,
Andreas
Hi Sam,
On Wed, 2026-01-14 at 10:20 +0100, Andreas Larsson wrote:
> On 2025-10-19 21:18, Sam James wrote:
> > Sam James <sam@gentoo.org> writes:
> > > Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
>
> Please refer to the referenced commit also with "commit", the SHA ID and
> the oneline summary of the commit, like so:
>
> commit ab107276607a ("powerpc: Fix struct termio related ioctl macros")
>
> > > drops the legacy termio struct, but the ioctls.h header still defines some
> > > TC* constants in terms of termio (via sizeof). Hardcode the values instead.
> > >
> > > This fixes building Python for example, which falls over like:
> > > ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
> > >
> > > Link: https://bugs.gentoo.org/961769
> > > Link: https://bugs.gentoo.org/962600
> > > Co-authored-by: Stian Halseth <stian@itx.no>
> > > Signed-off-by: Sam James <sam@gentoo.org>
> > > ---
> > > v3: Fix constants.
> > > v2: Fix title.
> > >
> > > arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
> > > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > Ping.
> >
> > >
> > > diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
> > > index 7fd2f5873c9e7..f26befbf690fb 100644
> > > --- a/arch/sparc/include/uapi/asm/ioctls.h
> > > +++ b/arch/sparc/include/uapi/asm/ioctls.h
> > > @@ -5,10 +5,10 @@
> > > #include <asm/ioctl.h>
> > >
> > > /* Big T */
> > > -#define TCGETA _IOR('T', 1, struct termio)
> > > -#define TCSETA _IOW('T', 2, struct termio)
> > > -#define TCSETAW _IOW('T', 3, struct termio)
> > > -#define TCSETAF _IOW('T', 4, struct termio)
> > > +#define TCGETA 0x40125401
> > > +#define TCSETA 0x80125402
> > > +#define TCSETAW 0x80125403
> > > +#define TCSETAF 0x80125404
> > > #define TCSBRK _IO('T', 5)
> > > #define TCXONC _IO('T', 6)
> > > #define TCFLSH _IO('T', 7)
>
> Please also, like in commit ab107276607a ("powerpc: Fix struct termio
> related ioctl macros"), add the previous definitions as comments in
> order to be able to know in the future what these hard coded constants
> really should correspond to.
>
> Don't forget to make sure that the subject gets a [PATCH v4].
Could you send a revised version of this, please?
Debian's kernel maintainer refuses to merge this patch locally unless it's
been merged upstream.
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Similar in nature to commit ab107276607a ("powerpc: Fix struct termio related ioctl macros").
glibc-2.42 drops the legacy termio struct, but the ioctls.h header still
defines some TC* constants in terms of termio (via sizeof). Hardcode the
values instead.
This fixes building Python for example, which falls over like:
./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
Link: https://bugs.gentoo.org/961769
Link: https://bugs.gentoo.org/962600
Signed-off-by: Sam James <sam@gentoo.org>
---
v4: Tweak commit message for commit ref and add comments for old definitions.
v3: Fix constants.
v2: Fix title.
arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
index 7fd2f5873c9e..a8bbdf9877a4 100644
--- a/arch/sparc/include/uapi/asm/ioctls.h
+++ b/arch/sparc/include/uapi/asm/ioctls.h
@@ -5,10 +5,10 @@
#include <asm/ioctl.h>
/* Big T */
-#define TCGETA _IOR('T', 1, struct termio)
-#define TCSETA _IOW('T', 2, struct termio)
-#define TCSETAW _IOW('T', 3, struct termio)
-#define TCSETAF _IOW('T', 4, struct termio)
+#define TCGETA 0x40125401 /* _IOR('T', 1, struct termio) */
+#define TCSETA 0x80125402 /* _IOW('T', 2, struct termio) */
+#define TCSETAW 0x80125403 /* _IOW('T', 3, struct termio) */
+#define TCSETAF 0x80125404 /* _IOW('T', 4, struct termio) */
#define TCSBRK _IO('T', 5)
#define TCXONC _IO('T', 6)
#define TCFLSH _IO('T', 7)
--
2.53.0
On 2026-02-04 14:40, Sam James wrote:
> Similar in nature to commit ab107276607a ("powerpc: Fix struct termio related ioctl macros").
>
> glibc-2.42 drops the legacy termio struct, but the ioctls.h header still
> defines some TC* constants in terms of termio (via sizeof). Hardcode the
> values instead.
>
> This fixes building Python for example, which falls over like:
> ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
>
> Link: https://bugs.gentoo.org/961769
> Link: https://bugs.gentoo.org/962600
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v4: Tweak commit message for commit ref and add comments for old definitions.
> v3: Fix constants.
> v2: Fix title.
>
> arch/sparc/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
> index 7fd2f5873c9e..a8bbdf9877a4 100644
> --- a/arch/sparc/include/uapi/asm/ioctls.h
> +++ b/arch/sparc/include/uapi/asm/ioctls.h
> @@ -5,10 +5,10 @@
> #include <asm/ioctl.h>
>
> /* Big T */
> -#define TCGETA _IOR('T', 1, struct termio)
> -#define TCSETA _IOW('T', 2, struct termio)
> -#define TCSETAW _IOW('T', 3, struct termio)
> -#define TCSETAF _IOW('T', 4, struct termio)
> +#define TCGETA 0x40125401 /* _IOR('T', 1, struct termio) */
> +#define TCSETA 0x80125402 /* _IOW('T', 2, struct termio) */
> +#define TCSETAW 0x80125403 /* _IOW('T', 3, struct termio) */
> +#define TCSETAF 0x80125404 /* _IOW('T', 4, struct termio) */
> #define TCSBRK _IO('T', 5)
> #define TCXONC _IO('T', 6)
> #define TCFLSH _IO('T', 7)
Reviewed-by: Andreas Larsson <andreas@gaisler.com>
Picking this up to my for-next.
Thanks,
Andreas
© 2016 - 2026 Red Hat, Inc.