public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* Missing time64 prototypes for !__REDIRECT compilers
@ 2021-07-05  9:48 Florian Weimer
  2021-07-05 12:06 ` Adhemerval Zanella
  0 siblings, 1 reply; 8+ messages in thread
From: Florian Weimer @ 2021-07-05  9:48 UTC (permalink / raw)
  To: libc-alpha

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.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05  9:48 Missing time64 prototypes for !__REDIRECT compilers Florian Weimer
@ 2021-07-05 12:06 ` Adhemerval Zanella
  2021-07-05 12:15   ` Florian Weimer
  0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella @ 2021-07-05 12:06 UTC (permalink / raw)
  To: Florian Weimer, libc-alpha



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.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:06 ` Adhemerval Zanella
@ 2021-07-05 12:15   ` Florian Weimer
  2021-07-05 12:26     ` Adhemerval Zanella
  0 siblings, 1 reply; 8+ messages in thread
From: Florian Weimer @ 2021-07-05 12:15 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Lukasz Majewski

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

Thanks,
Florian


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:15   ` Florian Weimer
@ 2021-07-05 12:26     ` Adhemerval Zanella
  2021-07-05 12:42       ` Florian Weimer
  0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella @ 2021-07-05 12:26 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, Lukasz Majewski



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.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:26     ` Adhemerval Zanella
@ 2021-07-05 12:42       ` Florian Weimer
  2021-07-05 12:44         ` Adhemerval Zanella
  0 siblings, 1 reply; 8+ messages in thread
From: Florian Weimer @ 2021-07-05 12:42 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Lukasz Majewski

* 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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:42       ` Florian Weimer
@ 2021-07-05 12:44         ` Adhemerval Zanella
  2021-07-05 12:50           ` Florian Weimer
  0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella @ 2021-07-05 12:44 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, Lukasz Majewski



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.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:44         ` Adhemerval Zanella
@ 2021-07-05 12:50           ` Florian Weimer
  2021-07-05 12:55             ` Adhemerval Zanella
  0 siblings, 1 reply; 8+ messages in thread
From: Florian Weimer @ 2021-07-05 12:50 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Lukasz Majewski

* Adhemerval Zanella:

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

Sorry, I don't understand what this means in this context.

I am worried that the kernel will add a new fcntl which expectes a
64-bit struct timespec argument.  Without the 64-bit state in the glibc
symbol, glibc would not know whether to rewrite the argument or not for
32-bit applications.

Thanks,
Florian


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Missing time64 prototypes for !__REDIRECT compilers
  2021-07-05 12:50           ` Florian Weimer
@ 2021-07-05 12:55             ` Adhemerval Zanella
  0 siblings, 0 replies; 8+ messages in thread
From: Adhemerval Zanella @ 2021-07-05 12:55 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, Lukasz Majewski



On 05/07/2021 09:50, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>>> 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.
> 
> Sorry, I don't understand what this means in this context.
> 
> I am worried that the kernel will add a new fcntl which expectes a
> 64-bit struct timespec argument.  Without the 64-bit state in the glibc
> symbol, glibc would not know whether to rewrite the argument or not for
> 32-bit applications.

My point I expected the kernel to add such new fcntl interface (or for any
other multiplexed interfaces) only for 'sizeof(time_t) == sizeof(__kernel_time64_t)'
which means that programs built with _TIME_SIZE=32 won't see such newer
constants.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-07-05 12:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-05  9:48 Missing time64 prototypes for !__REDIRECT compilers Florian Weimer
2021-07-05 12:06 ` Adhemerval Zanella
2021-07-05 12:15   ` Florian Weimer
2021-07-05 12:26     ` Adhemerval Zanella
2021-07-05 12:42       ` Florian Weimer
2021-07-05 12:44         ` Adhemerval Zanella
2021-07-05 12:50           ` Florian Weimer
2021-07-05 12:55             ` Adhemerval Zanella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).