net: include compat.h first incase some specifier-qualifier-list error
PATCH 1/1 net: include compat.h first incase some specifier-qualifier-list error
On some old distros, we use sa_family_t in linux/irda.h and linux/netlink.h first, but include the header file bits/sockaddr.h later in compat.h. Then it will compile failed with error: expected specifier-qualifier-list before ‘sa_family_t’. So let's move compat.h before irda.h and netlink.h
--- net/irda_setsockopt.c | 2 +- net/netlink_setsockopt.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
net/irda_setsockopt.c +1 -1
@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/irda.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/irda.h> #define NR_SOL_IRDA_OPTS ARRAY_SIZE(irda_opts)static const unsigned int irda_opts[] = {
net/netlink_setsockopt.c +1 -1
@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/netlink.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/netlink.h> #define SOL_NETLINK 270
Signature · 1 line
1.8.1.4
Quoted 26 lines · Hangbin Liu
On some old distros, we use
sa_family_tinlinux/irda.handlinux/netlink.hfirst, but include the header filebits/sockaddr.hlater incompat.h. Then it will compile failed with error: expected specifier-qualifier-list before ‘sa_family_t’. So let's movecompat.hbeforeirda.handnetlink.hnet/irda_setsockopt.c +1
-1@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/irda.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/irda.h> #define NR_SOL_IRDA_OPTS ARRAY_SIZE(irda_opts)static const unsigned int irda_opts[] = {net/netlink_setsockopt.c +0
-0
net/netlink_setsockopt.c line 6
Quoted 7 lines
net/netlink_setsockopt.c +1
-1@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/netlink.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/netlink.h>
This seems fragile to me. The idea here is that compat.h is to override all the system includes, so reordering like this may mean that we won't get the desired affect on some other distro.
I don't have a better answer for this though, need to think about it some more. Perhaps changing compat.h to include something other than the bits/sockaddr (Or adding additional includes there)..
What distribution was this ?
Dave
Quoted 39 lines · Dave Jones
Quoted 26 lines · Hangbin Liu
On some old distros, we use
sa_family_tinlinux/irda.handlinux/netlink.hfirst, but include the header filebits/sockaddr.hlater incompat.h. Then it will compile failed with error: expected specifier-qualifier-list before ‘sa_family_t’. So let's movecompat.hbeforeirda.handnetlink.hnet/irda_setsockopt.c +1
-1@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/irda.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/irda.h> #define NR_SOL_IRDA_OPTS ARRAY_SIZE(irda_opts)static const unsigned int irda_opts[] = {net/netlink_setsockopt.c +0
-0net/netlink_setsockopt.c line 6
Quoted 7 lines
net/netlink_setsockopt.c +1
-1@@ -1,9 +1,9 @@#include <stdlib.h> -#include <linux/netlink.h> #include "net.h" #include "maps.h" // page_rand #include "compat.h" #include "trinity.h" // ARRAY_SIZE +#include <linux/netlink.h> This seems fragile to me. The idea here is that
compat.his to override all the system includes, so reordering like this may mean that we won't get the desired affect on some other distro.
Quoted 6 lines
I don't have a better answer for this though, need to think about it some more. Perhaps changing
compat.hto include something other than the bits/sockaddr (Or adding additional includes there)..What distribution was this ?
RHEL6.4
# make <snip> CC net/irda_setsockopt.o In file included from net/irda_setsockopt.c:2: /usr/include/linux/irda.h:128: error: expected specifier-qualifier-list before ‘sa_family_t’ make: *** [net/irda_setsockopt.o] Error 1
# uname -r 2.6.32-358.el6.x86_64
# rpm -qf /usr/include/linux/irda.h kernel-headers-2.6.32-358.el6.x86_64
# rpm -qa | grep gcc libgcc-4.4.7-3.el6.x86_64 gcc-4.4.7-3.el6.x86_64 gcc-gfortran-4.4.7-3.el6.x86_64 gcc-c++-4.4.7-3.el6.x86_64
# rpm -qa | grep glibc glibc-common-2.12-1.107.el6.x86_64 glibc-headers-2.12-1.107.el6.x86_64 glibc-2.12-1.107.el6.x86_64 glibc-devel-2.12-1.107.el6.x86_64
Signature · 2 lines
Thanks & Best Regards Hangbin Liu <[email protected]>