question about prctl return value type
Yang Xu
xuyang2018.jy@cn.fujitsu.com
Thu Jul 25 07:53:00 GMT 2019
on 2019/07/24 18:48, Florian Weimer wrote:
> * Yang Xu:
>
>> Since kernel syscall use long value for return, why we set int in
>> sys/prctl.h(glibc). as below:
>>
>> /include/sys/prctl.h
>>
>> 1 #ifndef _SYS_PRCTL_H
>> 2 #include_next <sys/prctl.h>
>> 3
>> 4 # ifndef _ISOMAC
>> 5
>> 6 extern int __prctl (int __option, ...);
>> 7
>> 8 # endif /* !_ISOMAC */
>> 9 #endif
> Note that the actual user-visible header is
> sysdeps/unix/sysv/linux/sys/prctl.h, but it has the same issue.
>
>> If we calling prctl(PR_SET_TIMERSLACK, ULONG_MAX) and then calling prctl(PR_GET_TIMERSLACK), the value
>> will be truncated into INT_MAX(or convered into unsinged,it is UINT_MAX) on 64bit machine. Or, this is a
>> glibc limitation for prctl interfaces?
> I think this is a glibc limitation/bug. The return type should probably
> be __register_t (a type that is currently woefully underused). We
> cannot simply change the return time because once applications are built
> against the new prototype, we need to ensure that they also use the new
> glibc.
>
> Would you please file a bug for this?
> <https://sourceware.org/bugzilla/> is our bug tracker.
Hi Florian
I create a bug and cc you, url as below:
https://sourceware.org/bugzilla/show_bug.cgi?id=24850
Thanks
Yang Xu
> Thanks,
> Florian
>
>
>
More information about the Libc-help
mailing list