[LTP] [PATCH] configure.ac: fix mount_attr detection

Li Wang liwang@redhat.com
Thu Mar 9 14:09:57 CET 2023


On Thu, Mar 9, 2023 at 6:56 PM Petr Vorel <pvorel@suse.cz> wrote:

> Hi all,
>
> [ Cc Li - question from Cyril at the end ]
>
> Fabrice, thanks for fixing this long standing issue.
>
> > Hi!
> > > Commit b857f8723f30a4b9554bf6b0ff8fa52fd07e8b60 tried to fix build with
> > > latest glibc which provides mount_attr in sys/mount.h. Unfortunately,
> > > the following build failure is still raised because sys/mount is now
> > > unconditionally included in include/lapi/fsmount.h:
>
> > > In file included from fsconfig01.c:9:
> > > ../../../../include/lapi/fsmount.h:55:8: error: redefinition of
> 'struct mount_attr'
> > >    55 | struct mount_attr {
> > >       |        ^~~~~~~~~~
> > > In file included from ../../../../include/lapi/fsmount.h:14:
> > >
> /home/autobuild/autobuild/instance-4/output-1/host/armeb-buildroot-linux-gnueabi/sysroot/usr/include/sys/mount.h:210:8:
> note: originally defined here
> > >   210 | struct mount_attr
> > >       |        ^~~~~~~~~~
>
> > > Fixes:
> > >  -
> http://autobuild.buildroot.org/results/4dbb72e1bf081afd3cd944571b9beeefc7608865
>
> > > Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
> > > ---
> > >  configure.ac | 6 +++---
> > >  1 file changed, 3 insertions(+), 3 deletions(-)
>
> > > diff --git a/configure.ac b/configure.ac
> > > index c2b0f48e7..a6d8ac826 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -225,10 +225,10 @@ AC_CHECK_TYPES([struct __kernel_old_timeval,
> struct __kernel_old_timespec, struc
>
> > >  AC_CHECK_TYPES([struct futex_waitv],,,[#include <linux/futex.h>])
> > >  AC_CHECK_TYPES([struct mount_attr],,,[
> > > -#ifdef HAVE_LINUX_MOUNT_H
> > > -# include <linux/mount.h>
> > > -#else
> > > +#ifdef HAVE_MOUNT_SETATTR
> > >  # include <sys/mount.h>
> > > +#elif HAVE_LINUX_MOUNT_H
> > > +# include <linux/mount.h>
> > >  #endif
> > >  ])
>
> > I wonder if we can get this whole mess of two different fallback headers
> > simplified. Looking at the glibc implementation it seems to include
> > "linux/mount.h" if it does exist. So most reasonable solution would do
> > the same I guess which we did before the commit you reference.
>
> > @Li Wang where does the the sys/mount.h and linux/mount.h conflict? As
> > far as I can tell the UAPI linux/mount.h never defined any functions,
> > just constants, which should be solvable without the complex ifdefs, we
> > just need to check for existence of the types and define them only if
> > missing.
>
> Quoting [1]:
>
> The newer Glibc already provided wrapper for the series pidfd syscall,
> so let's include the header file conditionally.
>
>   # rpm -q glibc-devel
>   glibc-devel-2.35.9000-31.fc37.ppc64le
>
>   # rpm -ql glibc-devel | grep pidfd
>   /usr/include/sys/pidfd.h
>
> To get rid of compiling error from fedora-rawhide:
>
>   tst_safe_macros.c: In function ‘safe_pidfd_open’:
>   tst_safe_macros.c:135:16: error: implicit declaration of function
> ‘pidfd_open’ [-Werror=implicit-function-declaration]
>   135 |         rval = pidfd_open(pid, flags);
>       |
>
> => Li, does the problem still persists? If yes, I'd be for merging this
> patch.
> Could you also test it on newest glibc in Fedora?
>

Of course yes, I have requested a fedora-rawhide for the LTP building,
but tomorrow is the soonest I can provide the result :).



>
> Cyril, FYI musl never includes linux headers (Rich Felker has always been
> against this practise).
>
> Kind regards,
> Petr
>
> [1]
> https://lore.kernel.org/ltp/20220805063401.1647479-2-liwang@redhat.com/
>
>

-- 
Regards,
Li Wang


More information about the ltp mailing list