This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Rename struct ucontext tag (bug 21457)


On 06/12/2017 07:58 PM, Joseph Myers wrote:
> The ucontext_t type has a tag struct ucontext.  As with previous such
> issues for siginfo_t and stack_t, this tag is not permitted by POSIX
> (is not in a reserved namespace), and so namespace conformance means
> breaking C++ name mangling for this type.
> 
> In this case, the type does need to have some tag rather than just a
> typedef name, because it includes a pointer to itself.  This patch
> uses struct ucontext_t as the new tag, so the type is mangled as
> ucontext_t (the POSIX *_t reservation applies in all namespaces, not
> just the namespace of ordinary identifiers).  Another reserved name
> such as struct __ucontext could of course be used.

This looks OK to me.

On the entirely arbitrary basis that the name mangling for

    typedef struct ucontext_t { ... } ucontext_t;

is the same as the name mangling for

    typedef struct { ... } ucontext_t;

whereas

    typedef struct __ucontext { ... } ucontext_t;

would put the string '__ucontext' into the mangled names, I vote for the
'ucontext_t' struct tag.

zw


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]