Missing time64 prototypes for !__REDIRECT compilers

Florian Weimer fweimer@redhat.com
Mon Jul 5 12:42:12 GMT 2021


* 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.

Thanks,
Florian



More information about the Libc-alpha mailing list