[PATCH] io: Fix record locking contants on 32 bit arch with 64 bit default time_t (BZ#30477)
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Thu May 25 12:17:42 GMT 2023
On 25/05/23 05:48, Florian Weimer wrote:
> * Adhemerval Zanella via Libc-alpha:
>
>> diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
>> index ca6a0d7516..3c15625599 100644
>> --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
>> +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h
>> @@ -101,7 +101,7 @@
>> #endif
>>
>> #ifndef F_GETLK
>> -# ifndef __USE_FILE_OFFSET64
>> +# if !defined(__USE_FILE_OFFSET64) && __TIMESIZE != 64
>> # define F_GETLK 5 /* Get record locking info. */
>> # define F_SETLK 6 /* Set record locking info (non-blocking). */
>> # define F_SETLKW 7 /* Set record locking info (blocking). */
>
> We have a similar construct in many installed headers. Is this really
> the only place that needs changing?
I did a quick check on the installed headers:
/usr/include/aio.h It conditionalizes the existence of a pad after aio_offset,
and it will create a zero size array in this case. Not ideal,
but this is not strictly an issue.
It also defined whether to redirect to the LFS variants (which
are all aliases)
/usr/include/bits/struct_stat.h It is handled by each architecture and the generic should
be fixed by 7a6ca82f8007ddbd43e2b8fce806ba7101ee47f5.
/usr/include/fcntl.h
/usr/include/stdio.h
/usr/include/sys/mman.h
/usr/include/fcntl.h
/usr/include/sys/types.h
/usr/include/sys/stat.h
/usr/include/dirent.h Define types that change size for LFS, which should not matter
since in this case they are essentially the same; and whether
to redirect to the LFS variants (which also should not matter
since they are aliases).
/usr/include/bits/unistd.h
/usr/include/fts.h
/usr/include/ftw.h
/usr/include/sys/resource.h
/usr/include/sys/sendfile.h
/usr/include/sys/statfs.h
/usr/include/sys/statvfs.h
/usr/include/bits/fcntl-linux.h
/usr/include/bits/fcntl2.h
/usr/include/stdlib.h
/usr/include/glob.h Define whether to redirect to the LFS variants (which are
all aliases).
So it does seems that this is the missing spot of kernel interface that is
changed whether LFS is used or not.
More information about the Libc-alpha
mailing list