[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