Missing time64 prototypes for !__REDIRECT compilers
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Jul 5 12:44:38 GMT 2021
On 05/07/2021 09:42, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> On 05/07/2021 09:15, Florian Weimer wrote:
>>> * Adhemerval Zanella:
>>>
>>>> On 05/07/2021 06:48, Florian Weimer wrote:
>>>>> This pattern looks incorrect to me:
>>>>>
>>>>> #ifdef __USE_GNU
>>>>> /* Receive up to VLEN messages as described by VMESSAGES from socket FD.
>>>>> Returns the number of messages received or -1 for errors.
>>>>>
>>>>> This function is a cancellation point and therefore not marked with
>>>>> __THROW. */
>>>>> # ifndef __USE_TIME_BITS64
>>>>> extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
>>>>> unsigned int __vlen, int __flags,
>>>>> struct timespec *__tmo);
>>>>> # else
>>>>> # ifdef __REDIRECT
>>>>> extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages,
>>>>> unsigned int __vlen, int __flags,
>>>>> struct timespec *__tmo),
>>>>> __recvmmsg64);
>>>>> # else
>>>>> # define recvmmsg __recvmmsg64
>>>>> # endif
>>>>> # endif
>>>>> #endif
>>>>>
>>>>> For the !__REDIRECT case, a prototype for __recvmmsg64 is still needed.
>>>>
>>>> There is some fixes for recvmsg and recvmmsg that I am working on,
>>>> I will add this as well.
>>>
>>> I'm working on adding some missing time64 aliases. I've got a
>>> SCM_RIGHTS smoke test.
>>
>> Do you mean for recvmg/recvmmsg? If so do we really need these? I fixed
>> an issue on __convert_scm_timestamps that I think it the most likely
>> issue that trigger the invalid memory access on ruby testcase.
>
> I have identified the following system calls:
>
> ioctl, fcntl, prctl, sendmmsg, recvmsg, sendmsg, getsockopt, setsockopt.
>
> All of them are multiplexers of some kind, and we don't know if the
> kernel will add different constants for different time_t sizes for
> future features, given that it's more or less 64-bit time_t only these
> days.
But kernel afaik uses the time_t size to provide such constant, if it
adds a new 64-bit time_t only it won't build for _TIME_BITS=32.
More information about the Libc-alpha
mailing list