All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: netdev@vger.kernel.org, Riad Abo Raed <riada@mellanox.com>,
	Guy Ergas <guye@mellanox.com>
Subject: Re: [PATCH iproute2] iproute2: Fix undeclared __kernel_long_t type build error in RHEL 6.8
Date: Wed, 6 Dec 2017 07:01:04 +0200	[thread overview]
Message-ID: <20171206050104.GL2110@mtr-leonro.local> (raw)
In-Reply-To: <20171205173325.7245f907@xeon-e3>

On Tue, Dec 05, 2017 at 05:33:25PM -0800, Stephen Hemminger wrote:
> On Fri,  1 Dec 2017 13:04:51 +0200
> Leon Romanovsky <leon@kernel.org> wrote:
>
> > From: Leon Romanovsky <leonro@mellanox.com>
> >
> > Add asm/posix_types.h header file to the list of needed includes,
> > because the headers files in RHEL 6.8 are too old and doesn't
> > have declaration of __kernel_long_t.
> >
> > In file included from ../include/uapi/linux/kernel.h:5,
> >                  from ../include/uapi/linux/netfilter/x_tables.h:4,
> >                  from ../include/xtables.h:20,
> >                  from em_ipset.c:26:
> > ../include/uapi/linux/sysinfo.h:9: error: expected specifier-qualifier-list before ‘__kernel_long_t’
> >
> > Cc: Riad Abo Raed <riada@mellanox.com>
> > Cc: Guy Ergas <guye@mellanox.com>
> > Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
> > ---
> > Stephen,
> > I don't know how to properly solve this type of errors and would like to
> > hear your guidance on it.
> >
> > Should I simply add kernel file? Or maybe I need to add HAVE_xxx checks
> > to configure script to check __kernel_long_t existence and declare only
> > this type?
> >
> > I also have another build error on RHEL 6.8 system and looking for a
> > solution.
> >
> > In file included from em_ipset.c:26:
> > ../include/xtables.h:35:29: error: xtables-version.h: No such file or directory
> > make[1]: *** [em_ipset.o] Error 1
> >
> > The iptables-devel is iptables-devel-1.4.7-16.el6.x86_64 so check_xt()
> > success, but RH headers don't have xtable-version.h and the relevant defines
> > are embedded in the main xtables.h header file.
> >
> > Thanks
> > ---
> >  include/uapi/asm/posix_types.h | 97 +++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 97 insertions(+)
> >  create mode 100644 include/uapi/asm/posix_types.h
> >
> > diff --git a/include/uapi/asm/posix_types.h b/include/uapi/asm/posix_types.h
> > new file mode 100644
> > index 00000000..5e6ea22b
> > --- /dev/null
> > +++ b/include/uapi/asm/posix_types.h
> > @@ -0,0 +1,97 @@
> > +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
> > +#ifndef __ASM_GENERIC_POSIX_TYPES_H
> > +#define __ASM_GENERIC_POSIX_TYPES_H
> > +
> > +#include <asm/bitsperlong.h>
> > +/*
> > + * This file is generally used by user-level software, so you need to
> > + * be a little careful about namespace pollution etc.
> > + *
> > + * First the types that are often defined in different ways across
> > + * architectures, so that you can override them.
> > + */
> > +
> > +#ifndef __kernel_long_t
> > +typedef long		__kernel_long_t;
> > +typedef unsigned long	__kernel_ulong_t;
> > +#endif
> > +
> > +#ifndef __kernel_ino_t
> > +typedef __kernel_ulong_t __kernel_ino_t;
> > +#endif
> > +
> > +#ifndef __kernel_mode_t
> > +typedef unsigned int	__kernel_mode_t;
> > +#endif
> > +
> > +#ifndef __kernel_pid_t
> > +typedef int		__kernel_pid_t;
> > +#endif
> > +
> > +#ifndef __kernel_ipc_pid_t
> > +typedef int		__kernel_ipc_pid_t;
> > +#endif
> > +
> > +#ifndef __kernel_uid_t
> > +typedef unsigned int	__kernel_uid_t;
> > +typedef unsigned int	__kernel_gid_t;
> > +#endif
> > +
> > +#ifndef __kernel_suseconds_t
> > +typedef __kernel_long_t		__kernel_suseconds_t;
> > +#endif
> > +
> > +#ifndef __kernel_daddr_t
> > +typedef int		__kernel_daddr_t;
> > +#endif
> > +
> > +#ifndef __kernel_uid32_t
> > +typedef unsigned int	__kernel_uid32_t;
> > +typedef unsigned int	__kernel_gid32_t;
> > +#endif
> > +
> > +#ifndef __kernel_old_uid_t
> > +typedef __kernel_uid_t	__kernel_old_uid_t;
> > +typedef __kernel_gid_t	__kernel_old_gid_t;
> > +#endif
> > +
> > +#ifndef __kernel_old_dev_t
> > +typedef unsigned int	__kernel_old_dev_t;
> > +#endif
> > +
> > +/*
> > + * Most 32 bit architectures use "unsigned int" size_t,
> > + * and all 64 bit architectures use "unsigned long" size_t.
> > + */
> > +#ifndef __kernel_size_t
> > +#if __BITS_PER_LONG != 64
> > +typedef unsigned int	__kernel_size_t;
> > +typedef int		__kernel_ssize_t;
> > +typedef int		__kernel_ptrdiff_t;
> > +#else
> > +typedef __kernel_ulong_t __kernel_size_t;
> > +typedef __kernel_long_t	__kernel_ssize_t;
> > +typedef __kernel_long_t	__kernel_ptrdiff_t;
> > +#endif
> > +#endif
> > +
> > +#ifndef __kernel_fsid_t
> > +typedef struct {
> > +	int	val[2];
> > +} __kernel_fsid_t;
> > +#endif
> > +
> > +/*
> > + * anything below here should be completely generic
> > + */
> > +typedef __kernel_long_t	__kernel_off_t;
> > +typedef long long	__kernel_loff_t;
> > +typedef __kernel_long_t	__kernel_time_t;
> > +typedef __kernel_long_t	__kernel_clock_t;
> > +typedef int		__kernel_timer_t;
> > +typedef int		__kernel_clockid_t;
> > +typedef char *		__kernel_caddr_t;
> > +typedef unsigned short	__kernel_uid16_t;
> > +typedef unsigned short	__kernel_gid16_t;
> > +
> > +#endif /* __ASM_GENERIC_POSIX_TYPES_H */
> > --
> > 2.15.1
> >
>
> This isn't going to be supportable.  The headers in uapi are updated by
> a script from kernel, and this version posix_types.h conflicts with what
> the kernel creates by make headers_install.

At the end, I gave up to fix compilation properly for RHEL 6.8.
After I fixed posix_type and xt-tables, I discovered that glibc headers
are not updated too (missing AF_VSOCK).

My dirty hack was to copy various headers to iproute2 so verification
team can proceed with latest iproute2 on such platform was enough for
them.

Thanks

>

      reply	other threads:[~2017-12-06  5:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01 11:04 [PATCH iproute2] iproute2: Fix undeclared __kernel_long_t type build error in RHEL 6.8 Leon Romanovsky
2017-12-01 16:48 ` Stephen Hemminger
2017-12-01 19:56   ` Michal Kubecek
2017-12-02  8:22     ` Leon Romanovsky
2017-12-02  8:28   ` Leon Romanovsky
2017-12-06  0:59     ` Stephen Hemminger
2017-12-06  1:33 ` Stephen Hemminger
2017-12-06  5:01   ` Leon Romanovsky [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171206050104.GL2110@mtr-leonro.local \
    --to=leon@kernel.org \
    --cc=guye@mellanox.com \
    --cc=netdev@vger.kernel.org \
    --cc=riada@mellanox.com \
    --cc=stephen@networkplumber.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.