Fix build on glibc 2.36

This commit is contained in:
Essem 2022-08-16 11:20:50 -05:00
parent 6d7d1fde2f
commit d2857ad2b5
No known key found for this signature in database
GPG Key ID: 7D497397CC3A2A8C
2 changed files with 35 additions and 0 deletions

18
configure vendored
View File

@ -5137,6 +5137,20 @@ if compile_prog "" "" ; then
have_fsxattr=yes
fi
##########################################
# check if sys/mount.h conflicts with linux/fs.h
have_sysmount_fs=no
cat > $TMPC << EOF
#include <sys/mount.h>
int main(void) {
return FSCONFIG_SET_FLAG;
}
EOF
if compile_prog "" "" ; then
have_sysmount_fs=yes
fi
##########################################
# check if rtnetlink.h exists and is useful
have_rtnetlink=no
@ -6501,6 +6515,10 @@ if test "$rdma" = "yes" ; then
echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
fi
if test "$have_sysmount_fs" = "yes" ; then
echo "CONFIG_SYS_MOUNT_FS=y" >> $config_host_mak
fi
if test "$have_rtnetlink" = "yes" ; then
echo "CONFIG_RTNETLINK=y" >> $config_host_mak
fi

View File

@ -98,7 +98,24 @@
#include <linux/soundcard.h>
#include <linux/kd.h>
#include <linux/mtio.h>
#ifdef CONFIG_SYS_MOUNT_FS
/*
* glibc >= 2.36 linux/mount.h conflicts with sys/mount.h,
* which in turn prevents use of linux/fs.h. So we have to
* define the constants ourselves for now.
*/
#define FS_IOC_GETFLAGS _IOR('f', 1, long)
#define FS_IOC_SETFLAGS _IOW('f', 2, long)
#define FS_IOC_GETVERSION _IOR('v', 1, long)
#define FS_IOC_SETVERSION _IOW('v', 2, long)
#define FS_IOC_FIEMAP _IOWR('f', 11, struct fiemap)
#define FS_IOC32_GETFLAGS _IOR('f', 1, int)
#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
#define FS_IOC32_GETVERSION _IOR('v', 1, int)
#define FS_IOC32_SETVERSION _IOW('v', 2, int)
#else
#include <linux/fs.h>
#endif
#if defined(CONFIG_FIEMAP)
#include <linux/fiemap.h>
#endif