iproute: build more easily on Android
Subsystems (24)
PATCH 1/1 iproute: build more easily on Android
iproute2 contains a bunch of kernel headers, including uapi ones. Android's libc uses uapi headers almost directly, and uses a script to fix kernel types that don't match what userspace expects.
For example: https://issuetracker.google.com/36987220 reports that our struct ip_mreq_source contains "__be32 imr_multiaddr" rather than "struct in_addr imr_multiaddr". The script addresses this by replacing the uapi struct definition with a #include <bits/ip_mreq.h> which contains the traditional userspace definition.
Unfortunately, when we compile iproute2, this definition conflicts with the one in iproute2's linux/in.h.
Historically we've just solved this problem by running "git rm" on all the iproute2 include/linux headers that break Android's libc. However, deleting the files in this way makes it harder to keep up with upstream, because every upstream change to an include file causes a merge conflict with the delete.
This patch fixes the problem by moving the iproute2 linux headers from include/linux to include/uapi/linux.
Tested: compiles on ubuntu trusty (glibc)
---
Makefile | 2 +-
include/{ => uapi}/linux/atm.h | 0
include/{ => uapi}/linux/atmapi.h | 0
include/{ => uapi}/linux/atmarp.h | 0
include/{ => uapi}/linux/atmdev.h | 0
include/{ => uapi}/linux/atmioc.h | 0
include/{ => uapi}/linux/atmsap.h | 0
include/{ => uapi}/linux/bpf.h | 0
include/{ => uapi}/linux/bpf_common.h | 0
include/{ => uapi}/linux/can.h | 0
include/{ => uapi}/linux/can/netlink.h | 0
include/{ => uapi}/linux/can/vxcan.h | 0
include/{ => uapi}/linux/devlink.h | 0
include/{ => uapi}/linux/elf-em.h | 0
include/{ => uapi}/linux/fib_rules.h | 0
include/{ => uapi}/linux/filter.h | 0
include/{ => uapi}/linux/fou.h | 0
include/{ => uapi}/linux/gen_stats.h | 0
include/{ => uapi}/linux/genetlink.h | 0
include/{ => uapi}/linux/hdlc/ioctl.h | 0
include/{ => uapi}/linux/icmpv6.h | 0
include/{ => uapi}/linux/if.h | 0
include/{ => uapi}/linux/if_addr.h | 0
include/{ => uapi}/linux/if_addrlabel.h | 0
include/{ => uapi}/linux/if_alg.h | 0
include/{ => uapi}/linux/if_arp.h | 0
include/{ => uapi}/linux/if_bonding.h | 0
include/{ => uapi}/linux/if_bridge.h | 0
include/{ => uapi}/linux/if_ether.h | 0
include/{ => uapi}/linux/if_link.h | 0
include/{ => uapi}/linux/if_macsec.h | 0
include/{ => uapi}/linux/if_packet.h | 0
include/{ => uapi}/linux/if_tun.h | 0
include/{ => uapi}/linux/if_tunnel.h | 0
include/{ => uapi}/linux/if_vlan.h | 0
include/{ => uapi}/linux/ife.h | 0
include/{ => uapi}/linux/ila.h | 0
include/{ => uapi}/linux/in.h | 0
include/{ => uapi}/linux/in6.h | 0
include/{ => uapi}/linux/in_route.h | 0
include/{ => uapi}/linux/inet_diag.h | 0
include/{ => uapi}/linux/ip.h | 0
include/{ => uapi}/linux/ip6_tunnel.h | 0
include/{ => uapi}/linux/ipsec.h | 0
include/{ => uapi}/linux/kernel.h | 0
include/{ => uapi}/linux/l2tp.h | 0
include/{ => uapi}/linux/libc-compat.h | 0
include/{ => uapi}/linux/limits.h | 0
include/{ => uapi}/linux/lwtunnel.h | 0
include/{ => uapi}/linux/magic.h | 0
include/{ => uapi}/linux/mpls.h | 0
include/{ => uapi}/linux/mpls_iptunnel.h | 0
include/{ => uapi}/linux/neighbour.h | 0
include/{ => uapi}/linux/net_namespace.h | 0
include/{ => uapi}/linux/netconf.h | 0
include/{ => uapi}/linux/netdevice.h | 0
include/{ => uapi}/linux/netfilter.h | 0
include/{ => uapi}/linux/netfilter/ipset/ip_set.h | 0
include/{ => uapi}/linux/netfilter/x_tables.h | 0
include/{ => uapi}/linux/netfilter/xt_set.h | 0
include/{ => uapi}/linux/netfilter/xt_tcpudp.h | 0
include/{ => uapi}/linux/netfilter_ipv4.h | 0
include/{ => uapi}/linux/netfilter_ipv4/ip_tables.h | 0
include/{ => uapi}/linux/netfilter_ipv6.h | 0
include/{ => uapi}/linux/netfilter_ipv6/ip6_tables.h | 0
include/{ => uapi}/linux/netlink.h | 0
include/{ => uapi}/linux/netlink_diag.h | 0
include/{ => uapi}/linux/packet_diag.h | 0
include/{ => uapi}/linux/param.h | 0
include/{ => uapi}/linux/pfkeyv2.h | 0
include/{ => uapi}/linux/pkt_cls.h | 0
include/{ => uapi}/linux/pkt_sched.h | 0
include/{ => uapi}/linux/posix_types.h | 0
include/{ => uapi}/linux/rtnetlink.h | 0
include/{ => uapi}/linux/sctp.h | 0
include/{ => uapi}/linux/seg6.h | 0
include/{ => uapi}/linux/seg6_genl.h | 0
include/{ => uapi}/linux/seg6_hmac.h | 0
include/{ => uapi}/linux/seg6_iptunnel.h | 0
include/{ => uapi}/linux/seg6_local.h | 0
include/{ => uapi}/linux/sock_diag.h | 0
include/{ => uapi}/linux/socket.h | 0
include/{ => uapi}/linux/sockios.h | 0
include/{ => uapi}/linux/stddef.h | 0
include/{ => uapi}/linux/sysinfo.h | 0
include/{ => uapi}/linux/tc_act/tc_bpf.h | 0
include/{ => uapi}/linux/tc_act/tc_connmark.h | 0
include/{ => uapi}/linux/tc_act/tc_csum.h | 0
include/{ => uapi}/linux/tc_act/tc_defact.h | 0
include/{ => uapi}/linux/tc_act/tc_gact.h | 0
include/{ => uapi}/linux/tc_act/tc_ife.h | 0
include/{ => uapi}/linux/tc_act/tc_ipt.h | 0
include/{ => uapi}/linux/tc_act/tc_mirred.h | 0
include/{ => uapi}/linux/tc_act/tc_nat.h | 0
include/{ => uapi}/linux/tc_act/tc_pedit.h | 0
include/{ => uapi}/linux/tc_act/tc_sample.h | 0
include/{ => uapi}/linux/tc_act/tc_skbedit.h | 0
include/{ => uapi}/linux/tc_act/tc_skbmod.h | 0
include/{ => uapi}/linux/tc_act/tc_tunnel_key.h | 0
include/{ => uapi}/linux/tc_act/tc_vlan.h | 0
include/{ => uapi}/linux/tc_ematch/tc_em_cmp.h | 0
include/{ => uapi}/linux/tc_ematch/tc_em_meta.h | 0
include/{ => uapi}/linux/tc_ematch/tc_em_nbyte.h | 0
include/{ => uapi}/linux/tcp.h | 0
include/{ => uapi}/linux/tcp_metrics.h | 0
include/{ => uapi}/linux/tipc.h | 0
include/{ => uapi}/linux/tipc_netlink.h | 0
include/{ => uapi}/linux/types.h | 0
include/{ => uapi}/linux/unix_diag.h | 0
include/{ => uapi}/linux/veth.h | 0
include/{ => uapi}/linux/xfrm.h | 0
111 files changed, 1 insertion(+), 1 deletion(-)
rename include/{ => uapi}/linux/atm.h (100%)
rename include/{ => uapi}/linux/atmapi.h (100%)
rename include/{ => uapi}/linux/atmarp.h (100%)
rename include/{ => uapi}/linux/atmdev.h (100%)
rename include/{ => uapi}/linux/atmioc.h (100%)
rename include/{ => uapi}/linux/atmsap.h (100%)
rename include/{ => uapi}/linux/bpf.h (100%)
rename include/{ => uapi}/linux/bpf_common.h (100%)
rename include/{ => uapi}/linux/can.h (100%)
rename include/{ => uapi}/linux/can/netlink.h (100%)
rename include/{ => uapi}/linux/can/vxcan.h (100%)
rename include/{ => uapi}/linux/devlink.h (100%)
rename include/{ => uapi}/linux/elf-em.h (100%)
rename include/{ => uapi}/linux/fib_rules.h (100%)
rename include/{ => uapi}/linux/filter.h (100%)
rename include/{ => uapi}/linux/fou.h (100%)
rename include/{ => uapi}/linux/gen_stats.h (100%)
rename include/{ => uapi}/linux/genetlink.h (100%)
rename include/{ => uapi}/linux/hdlc/ioctl.h (100%)
rename include/{ => uapi}/linux/icmpv6.h (100%)
rename include/{ => uapi}/linux/if.h (100%)
rename include/{ => uapi}/linux/if_addr.h (100%)
rename include/{ => uapi}/linux/if_addrlabel.h (100%)
rename include/{ => uapi}/linux/if_alg.h (100%)
rename include/{ => uapi}/linux/if_arp.h (100%)
rename include/{ => uapi}/linux/if_bonding.h (100%)
rename include/{ => uapi}/linux/if_bridge.h (100%)
rename include/{ => uapi}/linux/if_ether.h (100%)
rename include/{ => uapi}/linux/if_link.h (100%)
rename include/{ => uapi}/linux/if_macsec.h (100%)
rename include/{ => uapi}/linux/if_packet.h (100%)
rename include/{ => uapi}/linux/if_tun.h (100%)
rename include/{ => uapi}/linux/if_tunnel.h (100%)
rename include/{ => uapi}/linux/if_vlan.h (100%)
rename include/{ => uapi}/linux/ife.h (100%)
rename include/{ => uapi}/linux/ila.h (100%)
rename include/{ => uapi}/linux/in.h (100%)
rename include/{ => uapi}/linux/in6.h (100%)
rename include/{ => uapi}/linux/in_route.h (100%)
rename include/{ => uapi}/linux/inet_diag.h (100%)
rename include/{ => uapi}/linux/ip.h (100%)
rename include/{ => uapi}/linux/ip6_tunnel.h (100%)
rename include/{ => uapi}/linux/ipsec.h (100%)
rename include/{ => uapi}/linux/kernel.h (100%)
rename include/{ => uapi}/linux/l2tp.h (100%)
rename include/{ => uapi}/linux/libc-compat.h (100%)
rename include/{ => uapi}/linux/limits.h (100%)
rename include/{ => uapi}/linux/lwtunnel.h (100%)
rename include/{ => uapi}/linux/magic.h (100%)
rename include/{ => uapi}/linux/mpls.h (100%)
rename include/{ => uapi}/linux/mpls_iptunnel.h (100%)
rename include/{ => uapi}/linux/neighbour.h (100%)
rename include/{ => uapi}/linux/net_namespace.h (100%)
rename include/{ => uapi}/linux/netconf.h (100%)
rename include/{ => uapi}/linux/netdevice.h (100%)
rename include/{ => uapi}/linux/netfilter.h (100%)
rename include/{ => uapi}/linux/netfilter/ipset/ip_set.h (100%)
rename include/{ => uapi}/linux/netfilter/x_tables.h (100%)
rename include/{ => uapi}/linux/netfilter/xt_set.h (100%)
rename include/{ => uapi}/linux/netfilter/xt_tcpudp.h (100%)
rename include/{ => uapi}/linux/netfilter_ipv4.h (100%)
rename include/{ => uapi}/linux/netfilter_ipv4/ip_tables.h (100%)
rename include/{ => uapi}/linux/netfilter_ipv6.h (100%)
rename include/{ => uapi}/linux/netfilter_ipv6/ip6_tables.h (100%)
rename include/{ => uapi}/linux/netlink.h (100%)
rename include/{ => uapi}/linux/netlink_diag.h (100%)
rename include/{ => uapi}/linux/packet_diag.h (100%)
rename include/{ => uapi}/linux/param.h (100%)
rename include/{ => uapi}/linux/pfkeyv2.h (100%)
rename include/{ => uapi}/linux/pkt_cls.h (100%)
rename include/{ => uapi}/linux/pkt_sched.h (100%)
rename include/{ => uapi}/linux/posix_types.h (100%)
rename include/{ => uapi}/linux/rtnetlink.h (100%)
rename include/{ => uapi}/linux/sctp.h (100%)
rename include/{ => uapi}/linux/seg6.h (100%)
rename include/{ => uapi}/linux/seg6_genl.h (100%)
rename include/{ => uapi}/linux/seg6_hmac.h (100%)
rename include/{ => uapi}/linux/seg6_iptunnel.h (100%)
rename include/{ => uapi}/linux/seg6_local.h (100%)
rename include/{ => uapi}/linux/sock_diag.h (100%)
rename include/{ => uapi}/linux/socket.h (100%)
rename include/{ => uapi}/linux/sockios.h (100%)
rename include/{ => uapi}/linux/stddef.h (100%)
rename include/{ => uapi}/linux/sysinfo.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_bpf.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_connmark.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_csum.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_defact.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_gact.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_ife.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_ipt.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_mirred.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_nat.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_pedit.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_sample.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_skbedit.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_skbmod.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_tunnel_key.h (100%)
rename include/{ => uapi}/linux/tc_act/tc_vlan.h (100%)
rename include/{ => uapi}/linux/tc_ematch/tc_em_cmp.h (100%)
rename include/{ => uapi}/linux/tc_ematch/tc_em_meta.h (100%)
rename include/{ => uapi}/linux/tc_ematch/tc_em_nbyte.h (100%)
rename include/{ => uapi}/linux/tcp.h (100%)
rename include/{ => uapi}/linux/tcp_metrics.h (100%)
rename include/{ => uapi}/linux/tipc.h (100%)
rename include/{ => uapi}/linux/tipc_netlink.h (100%)
rename include/{ => uapi}/linux/types.h (100%)
rename include/{ => uapi}/linux/unix_diag.h (100%)
rename include/{ => uapi}/linux/veth.h (100%)
rename include/{ => uapi}/linux/xfrm.h (100%)Makefile +1 -1
@@ -46,7 +46,7 @@ CCOPTS = -O2 WFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes WFLAGS += -Wmissing-declarations -Wold-style-definition -Wformat=2 -CFLAGS := $(WFLAGS) $(CCOPTS) -I../include $(DEFINES) $(CFLAGS) +CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) YACCFLAGS = -d -t -v SUBDIRS=lib ip tc bridge misc netem genl tipc devlink rdma man
include/uapi/linux/atm.h renamed from include/linux/atm.h +0 -0
include/uapi/linux/atmapi.h renamed from include/linux/atmapi.h +0 -0
include/uapi/linux/atmarp.h renamed from include/linux/atmarp.h +0 -0
include/uapi/linux/atmdev.h renamed from include/linux/atmdev.h +0 -0
include/uapi/linux/atmioc.h renamed from include/linux/atmioc.h +0 -0
include/uapi/linux/atmsap.h renamed from include/linux/atmsap.h +0 -0
include/uapi/linux/bpf.h renamed from include/linux/bpf.h +0 -0
include/uapi/linux/bpf_common.h renamed from include/linux/bpf_common.h +0 -0
include/uapi/linux/can.h renamed from include/linux/can.h +0 -0
include/uapi/linux/can/netlink.h renamed from include/linux/can/netlink.h +0 -0
include/uapi/linux/can/vxcan.h renamed from include/linux/can/vxcan.h +0 -0
include/uapi/linux/devlink.h renamed from include/linux/devlink.h +0 -0
include/uapi/linux/elf-em.h renamed from include/linux/elf-em.h +0 -0
include/uapi/linux/fib_rules.h renamed from include/linux/fib_rules.h +0 -0
include/uapi/linux/filter.h renamed from include/linux/filter.h +0 -0
include/uapi/linux/fou.h renamed from include/linux/fou.h +0 -0
include/uapi/linux/gen_stats.h renamed from include/linux/gen_stats.h +0 -0
include/uapi/linux/genetlink.h renamed from include/linux/genetlink.h +0 -0
include/uapi/linux/hdlc/ioctl.h renamed from include/linux/hdlc/ioctl.h +0 -0
include/uapi/linux/icmpv6.h renamed from include/linux/icmpv6.h +0 -0
include/uapi/linux/if.h renamed from include/linux/if.h +0 -0
include/uapi/linux/if_addr.h renamed from include/linux/if_addr.h +0 -0
include/uapi/linux/if_addrlabel.h renamed from include/linux/if_addrlabel.h +0 -0
include/uapi/linux/if_alg.h renamed from include/linux/if_alg.h +0 -0
include/uapi/linux/if_arp.h renamed from include/linux/if_arp.h +0 -0
include/uapi/linux/if_bonding.h renamed from include/linux/if_bonding.h +0 -0
include/uapi/linux/if_bridge.h renamed from include/linux/if_bridge.h +0 -0
include/uapi/linux/if_ether.h renamed from include/linux/if_ether.h +0 -0
include/uapi/linux/if_link.h renamed from include/linux/if_link.h +0 -0
include/uapi/linux/if_macsec.h renamed from include/linux/if_macsec.h +0 -0
include/uapi/linux/if_packet.h renamed from include/linux/if_packet.h +0 -0
include/uapi/linux/if_tun.h renamed from include/linux/if_tun.h +0 -0
include/uapi/linux/if_tunnel.h renamed from include/linux/if_tunnel.h +0 -0
include/uapi/linux/if_vlan.h renamed from include/linux/if_vlan.h +0 -0
include/uapi/linux/ife.h renamed from include/linux/ife.h +0 -0
include/uapi/linux/ila.h renamed from include/linux/ila.h +0 -0
include/uapi/linux/in.h renamed from include/linux/in.h +0 -0
include/uapi/linux/in6.h renamed from include/linux/in6.h +0 -0
include/uapi/linux/in_route.h renamed from include/linux/in_route.h +0 -0
include/uapi/linux/inet_diag.h renamed from include/linux/inet_diag.h +0 -0
include/uapi/linux/ip.h renamed from include/linux/ip.h +0 -0
include/uapi/linux/ip6_tunnel.h renamed from include/linux/ip6_tunnel.h +0 -0
include/uapi/linux/ipsec.h renamed from include/linux/ipsec.h +0 -0
include/uapi/linux/kernel.h renamed from include/linux/kernel.h +0 -0
include/uapi/linux/l2tp.h renamed from include/linux/l2tp.h +0 -0
include/uapi/linux/libc-compat.h renamed from include/linux/libc-compat.h +0 -0
include/uapi/linux/limits.h renamed from include/linux/limits.h +0 -0
include/uapi/linux/lwtunnel.h renamed from include/linux/lwtunnel.h +0 -0
include/uapi/linux/magic.h renamed from include/linux/magic.h +0 -0
include/uapi/linux/mpls.h renamed from include/linux/mpls.h +0 -0
include/uapi/linux/mpls_iptunnel.h renamed from include/linux/mpls_iptunnel.h +0 -0
include/uapi/linux/neighbour.h renamed from include/linux/neighbour.h +0 -0
include/uapi/linux/net_namespace.h renamed from include/linux/net_namespace.h +0 -0
include/uapi/linux/netconf.h renamed from include/linux/netconf.h +0 -0
include/uapi/linux/netdevice.h renamed from include/linux/netdevice.h +0 -0
include/uapi/linux/netfilter.h renamed from include/linux/netfilter.h +0 -0
include/uapi/linux/netfilter/ipset/ip_set.h renamed from include/linux/netfilter/ipset/ip_set.h +0 -0
include/uapi/linux/netfilter/x_tables.h renamed from include/linux/netfilter/x_tables.h +0 -0
include/uapi/linux/netfilter/xt_set.h renamed from include/linux/netfilter/xt_set.h +0 -0
include/uapi/linux/netfilter/xt_tcpudp.h renamed from include/linux/netfilter/xt_tcpudp.h +0 -0
include/uapi/linux/netfilter_ipv4.h renamed from include/linux/netfilter_ipv4.h +0 -0
include/uapi/linux/netfilter_ipv4/ip_tables.h renamed from include/linux/netfilter_ipv4/ip_tables.h +0 -0
include/uapi/linux/netfilter_ipv6.h renamed from include/linux/netfilter_ipv6.h +0 -0
include/uapi/linux/netfilter_ipv6/ip6_tables.h renamed from include/linux/netfilter_ipv6/ip6_tables.h +0 -0
include/uapi/linux/netlink.h renamed from include/linux/netlink.h +0 -0
include/uapi/linux/netlink_diag.h renamed from include/linux/netlink_diag.h +0 -0
include/uapi/linux/packet_diag.h renamed from include/linux/packet_diag.h +0 -0
include/uapi/linux/param.h renamed from include/linux/param.h +0 -0
include/uapi/linux/pfkeyv2.h renamed from include/linux/pfkeyv2.h +0 -0
include/uapi/linux/pkt_cls.h renamed from include/linux/pkt_cls.h +0 -0
include/uapi/linux/pkt_sched.h renamed from include/linux/pkt_sched.h +0 -0
include/uapi/linux/posix_types.h renamed from include/linux/posix_types.h +0 -0
include/uapi/linux/rtnetlink.h renamed from include/linux/rtnetlink.h +0 -0
include/uapi/linux/sctp.h renamed from include/linux/sctp.h +0 -0
include/uapi/linux/seg6.h renamed from include/linux/seg6.h +0 -0
include/uapi/linux/seg6_genl.h renamed from include/linux/seg6_genl.h +0 -0
include/uapi/linux/seg6_hmac.h renamed from include/linux/seg6_hmac.h +0 -0
include/uapi/linux/seg6_iptunnel.h renamed from include/linux/seg6_iptunnel.h +0 -0
include/uapi/linux/seg6_local.h renamed from include/linux/seg6_local.h +0 -0
include/uapi/linux/sock_diag.h renamed from include/linux/sock_diag.h +0 -0
include/uapi/linux/socket.h renamed from include/linux/socket.h +0 -0
include/uapi/linux/sockios.h renamed from include/linux/sockios.h +0 -0
include/uapi/linux/stddef.h renamed from include/linux/stddef.h +0 -0
include/uapi/linux/sysinfo.h renamed from include/linux/sysinfo.h +0 -0
include/uapi/linux/tc_act/tc_bpf.h renamed from include/linux/tc_act/tc_bpf.h +0 -0
include/uapi/linux/tc_act/tc_connmark.h renamed from include/linux/tc_act/tc_connmark.h +0 -0
include/uapi/linux/tc_act/tc_csum.h renamed from include/linux/tc_act/tc_csum.h +0 -0
include/uapi/linux/tc_act/tc_defact.h renamed from include/linux/tc_act/tc_defact.h +0 -0
include/uapi/linux/tc_act/tc_gact.h renamed from include/linux/tc_act/tc_gact.h +0 -0
include/uapi/linux/tc_act/tc_ife.h renamed from include/linux/tc_act/tc_ife.h +0 -0
include/uapi/linux/tc_act/tc_ipt.h renamed from include/linux/tc_act/tc_ipt.h +0 -0
include/uapi/linux/tc_act/tc_mirred.h renamed from include/linux/tc_act/tc_mirred.h +0 -0
include/uapi/linux/tc_act/tc_nat.h renamed from include/linux/tc_act/tc_nat.h +0 -0
include/uapi/linux/tc_act/tc_pedit.h renamed from include/linux/tc_act/tc_pedit.h +0 -0
include/uapi/linux/tc_act/tc_sample.h renamed from include/linux/tc_act/tc_sample.h +0 -0
include/uapi/linux/tc_act/tc_skbedit.h renamed from include/linux/tc_act/tc_skbedit.h +0 -0
include/uapi/linux/tc_act/tc_skbmod.h renamed from include/linux/tc_act/tc_skbmod.h +0 -0
include/uapi/linux/tc_act/tc_tunnel_key.h renamed from include/linux/tc_act/tc_tunnel_key.h +0 -0
include/uapi/linux/tc_act/tc_vlan.h renamed from include/linux/tc_act/tc_vlan.h +0 -0
include/uapi/linux/tc_ematch/tc_em_cmp.h renamed from include/linux/tc_ematch/tc_em_cmp.h +0 -0
include/uapi/linux/tc_ematch/tc_em_meta.h renamed from include/linux/tc_ematch/tc_em_meta.h +0 -0
include/uapi/linux/tc_ematch/tc_em_nbyte.h renamed from include/linux/tc_ematch/tc_em_nbyte.h +0 -0
include/uapi/linux/tcp.h renamed from include/linux/tcp.h +0 -0
include/uapi/linux/tcp_metrics.h renamed from include/linux/tcp_metrics.h +0 -0
include/uapi/linux/tipc.h renamed from include/linux/tipc.h +0 -0
include/uapi/linux/tipc_netlink.h renamed from include/linux/tipc_netlink.h +0 -0
include/uapi/linux/types.h renamed from include/linux/types.h +0 -0
include/uapi/linux/unix_diag.h renamed from include/linux/unix_diag.h +0 -0
include/uapi/linux/veth.h renamed from include/linux/veth.h +0 -0
include/uapi/linux/xfrm.h renamed from include/linux/xfrm.h +0 -0
Signature · 1 line
2.14.2.822.g60be5d43e6-goog
Quoted 21 lines · On Tue, 3 Oct 2017 02:03:37 +0900 Lorenzo Colitti <[email protected]> wrote:
iproute2 contains a bunch of kernel headers, including uapi ones. Android's libc uses uapi headers almost directly, and uses a script to fix kernel types that don't match what userspace expects.
For example: https://issuetracker.google.com/36987220 reports that our struct
ip_mreq_sourcecontains "__be32imr_multiaddr" rather than "structin_addrimr_multiaddr". The script addresses this by replacing the uapi struct definition with a #include <bits/ip_mreq.h> which contains the traditional userspace definition.Unfortunately, when we compile iproute2, this definition conflicts with the one in iproute2's
linux/in.h.Historically we've just solved this problem by running "git rm" on all the iproute2
include/linuxheaders that break Android's libc. However, deleting the files in this way makes it harder to keep up with upstream, because every upstream change to an include file causes a merge conflict with the delete.
Quoted 7 lines
This patch fixes the problem by moving the iproute2 linux headers from
include/linuxtoinclude/uapi/linux.Tested: compiles on ubuntu trusty (glibc)
Signed-off-by Elliott Hughes <[email protected]>Signed-off-by Lorenzo Colitti <[email protected]>
Rather than moving everything, why not make kernel headers directory configurable as part of the configure script setup process.
Quoted 27 lines · Stephen Hemminger
Quoted 24 lines · On Tue, 3 Oct 2017 02:03:37 +0900 Lorenzo Colitti <[email protected]> wrote:
iproute2 contains a bunch of kernel headers, including uapi ones. Android's libc uses uapi headers almost directly, and uses a script to fix kernel types that don't match what userspace expects.
For example: https://issuetracker.google.com/36987220 reports that our struct
ip_mreq_sourcecontains "__be32imr_multiaddr" rather than "structin_addrimr_multiaddr". The script addresses this by replacing the uapi struct definition with a #include <bits/ip_mreq.h> which contains the traditional userspace definition.Unfortunately, when we compile iproute2, this definition conflicts with the one in iproute2's
linux/in.h.Historically we've just solved this problem by running "git rm" on all the iproute2
include/linuxheaders that break Android's libc. However, deleting the files in this way makes it harder to keep up with upstream, because every upstream change to an include file causes a merge conflict with the delete.This patch fixes the problem by moving the iproute2 linux headers from
include/linuxtoinclude/uapi/linux.
Quoted 7 lines
Quoted 4 lines
Tested: compiles on ubuntu trusty (glibc)
Signed-off-by Elliott Hughes <[email protected]>Signed-off-by Lorenzo Colitti <[email protected]>Rather than moving everything, why not make kernel headers directory configurable as part of the configure script setup process.
the problem is that C libraries with their our own uapi headers still need your app-specific headers. to build iproute2 we need to put iproute2's include/ on our include path, but then the fact that your different uapi headers are *under* that directory causes the conflict. separating your headers from your copy of the uapi headers is a necessary part of any fix.
Signature · 2 lines
Elliott Hughes - http://who/enh - http://jessies.org/~enh/ Android native code/tools questions? Mail me/drop by/add me as a reviewer.
Quoted 7 lines · enh
Quoted 2 lines
Rather than moving everything, why not make kernel headers directory configurable as part of the configure script setup process.
the problem is that C libraries with their our own uapi headers still need your app-specific headers. to build iproute2 we need to put iproute2's
include/on our include path, but then the fact that your different uapi headers are *under* that directory causes the conflict.
Right - when building iproute2 we must have .../iproute2/include in the include paths.
So when, say, ip/link_iptnl.c does #include <linux/in.h>, that file is in two places in the path - the C library includes and the iproute includes, and those two files conflict with each other.
There's no way to tell the compiler "use external/iproute2/include but not external/iproute2/include/linux". But if the iproute2 files are in uapi/ , then a simple #include <linux/in.h> won't find the UAPI copy and the files won't conflict.
Quoted 21 lines · Lorenzo Colitti
iproute2 contains a bunch of kernel headers, including uapi ones. Android's libc uses uapi headers almost directly, and uses a script to fix kernel types that don't match what userspace expects.
For example: https://issuetracker.google.com/36987220 reports that our struct
ip_mreq_sourcecontains "__be32imr_multiaddr" rather than "structin_addrimr_multiaddr". The script addresses this by replacing the uapi struct definition with a #include <bits/ip_mreq.h> which contains the traditional userspace definition.Unfortunately, when we compile iproute2, this definition conflicts with the one in iproute2's
linux/in.h.Historically we've just solved this problem by running "git rm" on all the iproute2
include/linuxheaders that break Android's libc. However, deleting the files in this way makes it harder to keep up with upstream, because every upstream change to an include file causes a merge conflict with the delete.
Quoted 8 lines
This patch fixes the problem by moving the iproute2 linux headers from
include/linuxtoinclude/uapi/linux.Tested: compiles on ubuntu trusty (glibc)
Signed-off-by Elliott Hughes <[email protected]>Signed-off-by Lorenzo Colitti <[email protected]>---
include/rdma/* files are coming from kernel's uapi too.
BTW, I know that the rdma folder is not relevant for android, but anyway would like to see the same treatment for that folder as for the include/linux.
Thanks
Quoted 21 lines · On Tue, 3 Oct 2017 02:03:37 +0900 Lorenzo Colitti <[email protected]> wrote:
iproute2 contains a bunch of kernel headers, including uapi ones. Android's libc uses uapi headers almost directly, and uses a script to fix kernel types that don't match what userspace expects.
For example: https://issuetracker.google.com/36987220 reports that our struct
ip_mreq_sourcecontains "__be32imr_multiaddr" rather than "structin_addrimr_multiaddr". The script addresses this by replacing the uapi struct definition with a #include <bits/ip_mreq.h> which contains the traditional userspace definition.Unfortunately, when we compile iproute2, this definition conflicts with the one in iproute2's
linux/in.h.Historically we've just solved this problem by running "git rm" on all the iproute2
include/linuxheaders that break Android's libc. However, deleting the files in this way makes it harder to keep up with upstream, because every upstream change to an include file causes a merge conflict with the delete.
Quoted 8 lines
This patch fixes the problem by moving the iproute2 linux headers from
include/linuxtoinclude/uapi/linux.Tested: compiles on ubuntu trusty (glibc)
Signed-off-by Elliott Hughes <[email protected]>Signed-off-by Lorenzo Colitti <[email protected]>
I went ahead and did this for 4.14 (and net-next). Applied.