[PATCH] Fix argument passing in sysvipc/test-sysvsem

Florian Weimer fweimer@redhat.com
Mon Jan 2 16:47:00 GMT 2017


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



More information about the Libc-alpha mailing list