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: [PATCH] Fix argument passing in sysvipc/test-sysvsem


Florian Weimer <fweimer@redhat.com> writes:

> On 12/31/2016 05:04 PM, Zack Weinberg wrote:
>> On Sat, Dec 31, 2016 at 1:07 AM, Florian Weimer <fweimer@redhat.com> wrote:
>>> On 12/30/2016 09:43 PM, Tulio Magno Quites Machado Filho wrote:
>>>>
>>>> +/* Confirm if sys/sem.h defines semun.  */
>>>> +#ifdef _SEM_SEMUN_UNDEFINED
>>>> +union semun
>>>> +{
>>>> +  int val;
>>>> +  struct semid_ds *buf;
>>>> +    unsigned short int *array;
>>>> +  struct seminfo *__buf;
>>>> +};
>>>> +#endif
>>>
>>>
>>> Sorry, I don't understand the comment.  Why is this definition not provided
>>> by the installed headers if IPC_STAT needs it?
>>
>> sys/sem.h is required *not* to declare union semun; applications are
>> required to declare it themselves.  See
>> http://pubs.opengroup.org/onlinepubs/9699919799/functions/semctl.html.
>> Yes, this is ridiculous.  I can only guess that it was omitted by
>> mistake from the original incarnation of SysV semaphores, so
>> applications started declaring it themselves, and then POSIX was over
>> a barrel since redundant complete aggregate definitions aren't
>> allowed.
>
> This still doesn't make sense.  POSIX could have standardized the union 
> under a different name.  The existence struct sockaddr_storage strongly 
> suggests that implementations must be able to cope with this kind of 
> aliasing violation.

Florian, could elaborate what your proposing here?

It isn't clear whether you're suggesting that this test should be changed or
if POSIX should be changed.

For the record, glibc used to define that union semun in sem.h, but had
to undefine it: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=977bfd77

-- 
Tulio Magno


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