* [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants
@ 2025-10-01 19:42 Sam James
2025-10-01 19:42 ` [PATCH v2 2/3] alpha: " Sam James
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Sam James @ 2025-10-01 19:42 UTC (permalink / raw)
To: James E.J. Bottomley, Helge Deller
Cc: Sam James, Stian Halseth, linux-parisc, linux-kernel
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>
---
v2: Fixed title...
arch/parisc/include/uapi/asm/ioctls.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/parisc/include/uapi/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h
index 82d1148c6379a..b90253c8265ae 100644
--- a/arch/parisc/include/uapi/asm/ioctls.h
+++ b/arch/parisc/include/uapi/asm/ioctls.h
@@ -10,10 +10,10 @@
#define TCSETS _IOW('T', 17, struct termios) /* TCSETATTR */
#define TCSETSW _IOW('T', 18, struct termios) /* TCSETATTRD */
#define TCSETSF _IOW('T', 19, struct termios) /* TCSETATTRF */
-#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 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
#define TCSBRK _IO('T', 5)
#define TCXONC _IO('T', 6)
#define TCFLSH _IO('T', 7)
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] alpha: don't reference obsolete termio struct for TC* constants
2025-10-01 19:42 [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants Sam James
@ 2025-10-01 19:42 ` Sam James
2025-10-01 22:12 ` Magnus Lindholm
2025-10-01 19:42 ` [PATCH v2 3/3] sparc: " Sam James
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Sam James @ 2025-10-01 19:42 UTC (permalink / raw)
To: Richard Henderson, Matt Turner
Cc: Sam James, Stian Halseth, linux-alpha, linux-kernel
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>
---
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..857e280f95d1e 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 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
#define TCSBRK _IO('t', 29)
#define TCXONC _IO('t', 30)
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] sparc: don't reference obsolete termio struct for TC* constants
2025-10-01 19:42 [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants Sam James
2025-10-01 19:42 ` [PATCH v2 2/3] alpha: " Sam James
@ 2025-10-01 19:42 ` Sam James
2025-10-01 20:16 ` [PATCH v2 1/3] parisc: " Helge Deller
2025-10-01 22:58 ` [PATCH] " Sam James
3 siblings, 0 replies; 7+ messages in thread
From: Sam James @ 2025-10-01 19:42 UTC (permalink / raw)
To: David S. Miller, Andreas Larsson
Cc: Sam James, Stian Halseth, sparclinux, linux-kernel
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>
---
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..b493dea7ca377 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 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
#define TCSBRK _IO('T', 5)
#define TCXONC _IO('T', 6)
#define TCFLSH _IO('T', 7)
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants
2025-10-01 19:42 [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants Sam James
2025-10-01 19:42 ` [PATCH v2 2/3] alpha: " Sam James
2025-10-01 19:42 ` [PATCH v2 3/3] sparc: " Sam James
@ 2025-10-01 20:16 ` Helge Deller
2025-10-01 22:58 ` [PATCH] " Sam James
3 siblings, 0 replies; 7+ messages in thread
From: Helge Deller @ 2025-10-01 20:16 UTC (permalink / raw)
To: Sam James, James E.J. Bottomley; +Cc: Stian Halseth, linux-parisc, linux-kernel
On 10/1/25 21:42, 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>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
> v2: Fixed title...
>
> arch/parisc/include/uapi/asm/ioctls.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
applied.
Thanks!
Helge
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] alpha: don't reference obsolete termio struct for TC* constants
2025-10-01 19:42 ` [PATCH v2 2/3] alpha: " Sam James
@ 2025-10-01 22:12 ` Magnus Lindholm
2025-10-01 22:26 ` Sam James
0 siblings, 1 reply; 7+ messages in thread
From: Magnus Lindholm @ 2025-10-01 22:12 UTC (permalink / raw)
To: Sam James
Cc: Richard Henderson, Matt Turner, Stian Halseth, linux-alpha,
linux-kernel
> +#define TCGETA 0x5405
> +#define TCSETA 0x5406
> +#define TCSETAW 0x5407
> +#define TCSETAF 0x5408
Hi,
A similar patch aimed for powerpc (commit ab10727) had the following
definitions:
#define TCGETA 0x40147417
#define TCSETA 0x80147418
#define TCSETAW 0x80147419
#define TCSETAF 0x8014741c
On Alpha, if I do something like printf("TCGETA = 0x%08x\n", TCGETA);
I get TCGETA = 0x40127417, but on an intel/x64 I get 0x5405.
Is this something we need to consider here?
Regards
Magnus
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] alpha: don't reference obsolete termio struct for TC* constants
2025-10-01 22:12 ` Magnus Lindholm
@ 2025-10-01 22:26 ` Sam James
0 siblings, 0 replies; 7+ messages in thread
From: Sam James @ 2025-10-01 22:26 UTC (permalink / raw)
To: Magnus Lindholm
Cc: Richard Henderson, Matt Turner, Stian Halseth, linux-alpha,
linux-kernel
Magnus Lindholm <linmag7@gmail.com> writes:
>> +#define TCGETA 0x5405
>> +#define TCSETA 0x5406
>> +#define TCSETAW 0x5407
>> +#define TCSETAF 0x5408
>
> Hi,
>
> A similar patch aimed for powerpc (commit ab10727) had the following
> definitions:
>
> #define TCGETA 0x40147417
> #define TCSETA 0x80147418
> #define TCSETAW 0x80147419
> #define TCSETAF 0x8014741c
>
> On Alpha, if I do something like printf("TCGETA = 0x%08x\n", TCGETA);
> I get TCGETA = 0x40127417, but on an intel/x64 I get 0x5405.
> Is this something we need to consider here?
There are fallback definitions in generic:
tools/include/uapi/asm-generic/ioctls.h:24:#define TCGETA 0x5405
include/uapi/asm-generic/ioctls.h:24:#define TCGETA 0x5405
I think those are used where there was no historical value (i.e. for
newer ioctls). Coud you run something like
https://bugs.gentoo.org/962600#c5 to get the full list of (removed)
constant values for alpha? It's awkward for me to test with older glibc.
>
> Regards
>
> Magnus
thanks,
sam
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] parisc: don't reference obsolete termio struct for TC* constants
2025-10-01 19:42 [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants Sam James
` (2 preceding siblings ...)
2025-10-01 20:16 ` [PATCH v2 1/3] parisc: " Helge Deller
@ 2025-10-01 22:58 ` Sam James
3 siblings, 0 replies; 7+ messages in thread
From: Sam James @ 2025-10-01 22:58 UTC (permalink / raw)
To: James E.J. Bottomley, Helge Deller
Cc: Sam James, Stian Halseth, linux-parisc, linux-kernel
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>
---
This fixes a mistake in the constants as I mixed up arches. Helge, could
you replace the patch with this one instead? Or do you want me to send
a fixup patch on top of that?
arch/parisc/include/uapi/asm/ioctls.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/parisc/include/uapi/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h
index 82d1148c6379a..74b4027a4e808 100644
--- a/arch/parisc/include/uapi/asm/ioctls.h
+++ b/arch/parisc/include/uapi/asm/ioctls.h
@@ -10,10 +10,10 @@
#define TCSETS _IOW('T', 17, struct termios) /* TCSETATTR */
#define TCSETSW _IOW('T', 18, struct termios) /* TCSETATTRD */
#define TCSETSF _IOW('T', 19, struct termios) /* TCSETATTRF */
-#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
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-01 22:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-01 19:42 [PATCH v2 1/3] parisc: don't reference obsolete termio struct for TC* constants Sam James
2025-10-01 19:42 ` [PATCH v2 2/3] alpha: " Sam James
2025-10-01 22:12 ` Magnus Lindholm
2025-10-01 22:26 ` Sam James
2025-10-01 19:42 ` [PATCH v2 3/3] sparc: " Sam James
2025-10-01 20:16 ` [PATCH v2 1/3] parisc: " Helge Deller
2025-10-01 22:58 ` [PATCH] " Sam James
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox