This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] Linux: Define struct termios2 in <termios.h> under _GNU_SOURCE [BZ #10339]
On 16/04/2019 06:59, Florian Weimer wrote:
> * hpa:
>> Using symbol versioning doesn't really help much since the real
>> problem is that struct termios can be passed around in userspace, and
>> the interfaces between user space libraries don't have any
>> versioning. However, my POC code deals with that too by only seeing
>> BOTHER when necessary, so if the structure is extended garbage in the
>> extra fields will be ignored unless new baud rates are in use.
> That still doesn't solve the problem of changing struct offsets after a
> struct field of type struct termios.
We will need symbol versioning at least on sparc, since currently it
defines NCSS 17 and termios-c_cc.h defines 16 control characters (there
is no space to squeeze more fields one termios). ANd The WIP branch
gratuitously change the termios struct size on the architecture.
I am not sure which would be the best option to avoid the the user space
libraries compatibility issue. It is unlikely to happen, it would require
one to use old libraries along with newer libraries build against a newer
glibc. Not sure how often this scenarios arises in realworld (specially
I think MIPS would be fine to lower NCSS to 24, as WIP branch does. And
alpha is also fine since it already provides the c_* fields.
>> Exporting termios2 to user space feels a bit odd at this stage as it
>> would only be usable as a fallback on old glibc. Call it
>> kernel_termios2 at least.
> I'm not sure why we should do that? The kernel calls it struct termios2
> in its UAPI headers. If that name is not appropriate, it should be
> changed first in the UAPI headers.