arch/sparc/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>
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.