From: Jean-Mickael Guerin Date: Fri, 4 Mar 2016 13:14:21 +0000 (+0100) Subject: fix declaration of symbol of different size X-Git-Tag: v16.06-rc1~244 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=8941ec2cb4ff29dbf167e3b80e09a70c9164cc19;p=vpp.git fix declaration of symbol of different size I got many warnings at the link step with gcc version 5.3.1 20160225 (Ubuntu 5.3.1-10ubuntu2): /usr/bin/ld: Warning: size of symbol `cop_input_node' changed from 112 in vnet/cop/.libs/cop.o to 168 in vnet/cop/.libs/node1.o /usr/bin/ld: Warning: size of symbol `ethernet_input_node' changed from 112 in vnet/.libs/interface.o to 136 in vnet/ethernet/.libs/node.o /usr/bin/ld: Warning: size of symbol `l2output_node' changed from 112 in vnet/l2/.libs/l2_efp_filter.o to 120 in vnet/l2/.libs/l2_output.o /usr/bin/ld: Warning: size of symbol `srp_input_node' changed from 112 in vnet/srp/.libs/format.o to 136 in vnet/srp/.libs/node.o /usr/bin/ld: Warning: size of symbol `vxlan_encap_node' changed from 112 in vnet/vxlan/.libs/vxlan.o to 128 in vnet/vxlan/.libs/encap.o /usr/bin/ld: Warning: size of symbol `vxlan_input_node' changed from 112 in vnet/vxlan/.libs/vxlan.o to 144 in vnet/vxlan/.libs/decap.o ... Looking at vlib_node_registration_t, I think the reason is that the char * next_nodes[] could be bigger where the variable is defined in .c file. We should mark global variables as external in header files. Some of them can be made static. Change-Id: Ieb6961fd08180c9a69e1d884852703f3eb23f23f Signed-off-by: Jean-Mickael Guerin --- diff --git a/vnet/vnet/classify/vnet_classify.h b/vnet/vnet/classify/vnet_classify.h index 3e93ba34229..0c93e90d020 100644 --- a/vnet/vnet/classify/vnet_classify.h +++ b/vnet/vnet/classify/vnet_classify.h @@ -35,8 +35,8 @@ #include #include -vlib_node_registration_t ip4_classify_node; -vlib_node_registration_t ip6_classify_node; +extern vlib_node_registration_t ip4_classify_node; +extern vlib_node_registration_t ip6_classify_node; #define CLASSIFY_TRACE 0 diff --git a/vnet/vnet/cop/cop.h b/vnet/vnet/cop/cop.h index 20238b8275a..eb5f1dfd78e 100644 --- a/vnet/vnet/cop/cop.h +++ b/vnet/vnet/cop/cop.h @@ -72,7 +72,7 @@ typedef struct { cop_main_t cop_main; -vlib_node_registration_t cop_input_node; +extern vlib_node_registration_t cop_input_node; int cop_interface_enable_disable (u32 sw_if_index, int enable_disable); diff --git a/vnet/vnet/devices/dpdk/dpdk.h b/vnet/vnet/devices/dpdk/dpdk.h index 77b19baff03..1635c0a170c 100644 --- a/vnet/vnet/devices/dpdk/dpdk.h +++ b/vnet/vnet/devices/dpdk/dpdk.h @@ -66,9 +66,9 @@ #define NB_MBUF (32<<10) vnet_device_class_t dpdk_device_class; -vlib_node_registration_t dpdk_input_node; -vlib_node_registration_t dpdk_io_input_node; -vlib_node_registration_t handoff_dispatch_node; +extern vlib_node_registration_t dpdk_input_node; +extern vlib_node_registration_t dpdk_io_input_node; +extern vlib_node_registration_t handoff_dispatch_node; typedef enum { VNET_DPDK_DEV_ETH = 1, /* Standard DPDK PMD driver */ diff --git a/vnet/vnet/devices/ssvm/ssvm_eth.h b/vnet/vnet/devices/ssvm/ssvm_eth.h index 1b077220305..618fb5ca14b 100644 --- a/vnet/vnet/devices/ssvm/ssvm_eth.h +++ b/vnet/vnet/devices/ssvm/ssvm_eth.h @@ -32,7 +32,7 @@ #include vnet_device_class_t ssvm_eth_device_class; -vlib_node_registration_t ssvm_eth_input_node; +extern vlib_node_registration_t ssvm_eth_input_node; #define SSVM_BUFFER_SIZE \ (VLIB_BUFFER_DEFAULT_FREE_LIST_BYTES + VLIB_BUFFER_PRE_DATA_SIZE) diff --git a/vnet/vnet/ethernet/ethernet.h b/vnet/vnet/ethernet/ethernet.h index 04e07b71bf7..21257c558fa 100644 --- a/vnet/vnet/ethernet/ethernet.h +++ b/vnet/vnet/ethernet/ethernet.h @@ -448,6 +448,6 @@ int vnet_add_del_ip4_arp_change_event (vnet_main_t * vnm, uword type_opaque, uword data, int is_add); -vlib_node_registration_t ethernet_input_node; +extern vlib_node_registration_t ethernet_input_node; #endif /* included_ethernet_h */ diff --git a/vnet/vnet/gre/gre.h b/vnet/vnet/gre/gre.h index c0689f60ddf..490360d1ce1 100644 --- a/vnet/vnet/gre/gre.h +++ b/vnet/vnet/gre/gre.h @@ -95,7 +95,7 @@ format_function_t format_gre_protocol; format_function_t format_gre_header; format_function_t format_gre_header_with_length; -vlib_node_registration_t gre_input_node; +extern vlib_node_registration_t gre_input_node; vnet_device_class_t gre_device_class; /* Parse gre protocol as 0xXXXX or protocol name. diff --git a/vnet/vnet/ipsec/ikev2.c b/vnet/vnet/ipsec/ikev2.c index 70dd58bd64a..4a047ee1e04 100644 --- a/vnet/vnet/ipsec/ikev2.c +++ b/vnet/vnet/ipsec/ikev2.c @@ -47,7 +47,7 @@ static u8 * format_ikev2_trace (u8 * s, va_list * args) return s; } -vlib_node_registration_t ikev2_node; +static vlib_node_registration_t ikev2_node; #define foreach_ikev2_error \ _(PROCESSED, "IKEv2 packets processed") \ @@ -1908,7 +1908,7 @@ dispatch0: return frame->n_vectors; } -VLIB_REGISTER_NODE (ikev2_node) = { +VLIB_REGISTER_NODE (ikev2_node,static) = { .function = ikev2_node_fn, .name = "ikev2", .vector_size = sizeof (u32), diff --git a/vnet/vnet/ipsec/ikev2.h b/vnet/vnet/ipsec/ikev2.h index fd0d75a62f3..0b5eb3c7df8 100644 --- a/vnet/vnet/ipsec/ikev2.h +++ b/vnet/vnet/ipsec/ikev2.h @@ -26,8 +26,6 @@ typedef u8 v8; -vlib_node_registration_t ikev2_node; - typedef CLIB_PACKED (struct { u64 ispi; u64 rspi; diff --git a/vnet/vnet/ipsec/ipsec.h b/vnet/vnet/ipsec/ipsec.h index b755976f2b0..386c0adecd6 100644 --- a/vnet/vnet/ipsec/ipsec.h +++ b/vnet/vnet/ipsec/ipsec.h @@ -201,13 +201,10 @@ typedef struct { ipsec_main_t ipsec_main; -vlib_node_registration_t ipsec_input_ip4_node; -vlib_node_registration_t ipsec_input_ip6_node; -vlib_node_registration_t ipsec_output_node; -vlib_node_registration_t esp_encrypt_node; -vlib_node_registration_t esp_decrypt_node; -vlib_node_registration_t ipsec_if_output_node; -vlib_node_registration_t ipsec_if_input_node; +extern vlib_node_registration_t esp_encrypt_node; +extern vlib_node_registration_t esp_decrypt_node; +extern vlib_node_registration_t ipsec_if_output_node; +extern vlib_node_registration_t ipsec_if_input_node; /* diff --git a/vnet/vnet/ipsec/ipsec_input.c b/vnet/vnet/ipsec/ipsec_input.c index abb4a47485a..3cd60ba1fe9 100644 --- a/vnet/vnet/ipsec/ipsec_input.c +++ b/vnet/vnet/ipsec/ipsec_input.c @@ -52,8 +52,6 @@ static char * ipsec_input_error_strings[] = { #undef _ }; -vlib_node_registration_t ipsec_input_node; - typedef struct { u32 tunnel_index; u32 spi; @@ -172,6 +170,8 @@ ipsec_input_ip6_protect_policy_match (ipsec_spd_t * spd, return 0; } +static vlib_node_registration_t ipsec_input_ip4_node; + static uword ipsec_input_ip4_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, @@ -270,7 +270,7 @@ trace0: } -VLIB_REGISTER_NODE (ipsec_input_ip4_node) = { +VLIB_REGISTER_NODE (ipsec_input_ip4_node,static) = { .function = ipsec_input_ip4_node_fn, .name = "ipsec-input-ip4", .vector_size = sizeof (u32), @@ -289,6 +289,8 @@ VLIB_REGISTER_NODE (ipsec_input_ip4_node) = { }; +static vlib_node_registration_t ipsec_input_ip6_node; + static uword ipsec_input_ip6_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, @@ -387,7 +389,7 @@ trace0: } -VLIB_REGISTER_NODE (ipsec_input_ip6_node) = { +VLIB_REGISTER_NODE (ipsec_input_ip6_node,static) = { .function = ipsec_input_ip6_node_fn, .name = "ipsec-input-ip6", .vector_size = sizeof (u32), diff --git a/vnet/vnet/ipsec/ipsec_output.c b/vnet/vnet/ipsec/ipsec_output.c index fd804fae595..509b1e2fba9 100644 --- a/vnet/vnet/ipsec/ipsec_output.c +++ b/vnet/vnet/ipsec/ipsec_output.c @@ -58,7 +58,7 @@ static char * ipsec_output_error_strings[] = { #undef _ }; -vlib_node_registration_t ipsec_output_node; +static vlib_node_registration_t ipsec_output_node; typedef struct { u32 spd_id; @@ -386,7 +386,7 @@ dispatch0: return from_frame->n_vectors; } -VLIB_REGISTER_NODE (ipsec_output_node) = { +VLIB_REGISTER_NODE (ipsec_output_node,static) = { .function = ipsec_output_node_fn, .name = "ipsec-output", .vector_size = sizeof (u32), diff --git a/vnet/vnet/l2/l2_classify.h b/vnet/vnet/l2/l2_classify.h index 55c2fc8b00d..74e9d91c1ad 100644 --- a/vnet/vnet/l2/l2_classify.h +++ b/vnet/vnet/l2/l2_classify.h @@ -65,7 +65,7 @@ typedef struct { l2_classify_main_t l2_classify_main; -vlib_node_registration_t l2_classify_node; +extern vlib_node_registration_t l2_classify_node; void vnet_l2_classify_enable_disable (u32 sw_if_index, int enable_disable); diff --git a/vnet/vnet/l2/l2_output.c b/vnet/vnet/l2/l2_output.c index 31fe2d98243..bea640c8c2f 100644 --- a/vnet/vnet/l2/l2_output.c +++ b/vnet/vnet/l2/l2_output.c @@ -102,6 +102,8 @@ split_horizon_violation (u8 shg1, u8 shg2) } +static vlib_node_registration_t l2output_node; + static uword l2output_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, @@ -394,7 +396,7 @@ l2output_node_fn (vlib_main_t * vm, } -VLIB_REGISTER_NODE (l2output_node) = { +VLIB_REGISTER_NODE (l2output_node,static) = { .function = l2output_node_fn, .name = "l2-output", .vector_size = sizeof (u32), diff --git a/vnet/vnet/l2/l2_output.h b/vnet/vnet/l2/l2_output.h index 0d171b82541..1c7b033cb44 100644 --- a/vnet/vnet/l2/l2_output.h +++ b/vnet/vnet/l2/l2_output.h @@ -73,7 +73,6 @@ typedef struct { } l2output_main_t; l2output_main_t l2output_main; -vlib_node_registration_t l2output_node; // L2 output features diff --git a/vnet/vnet/l2tp/l2tp.h b/vnet/vnet/l2tp/l2tp.h index 9e7ac131a7f..3f77f70fb5a 100644 --- a/vnet/vnet/l2tp/l2tp.h +++ b/vnet/vnet/l2tp/l2tp.h @@ -85,8 +85,8 @@ typedef struct { } l2t_trace_t; l2t_main_t l2t_main; -vlib_node_registration_t l2t_encap_node; -vlib_node_registration_t l2t_decap_node; +extern vlib_node_registration_t l2t_encap_node; +extern vlib_node_registration_t l2t_decap_node; enum { SESSION_COUNTER_USER_TO_NETWORK=0, diff --git a/vnet/vnet/lawful-intercept/lawful_intercept.h b/vnet/vnet/lawful-intercept/lawful_intercept.h index f6cbf66e076..6fe6caf7f45 100644 --- a/vnet/vnet/lawful-intercept/lawful_intercept.h +++ b/vnet/vnet/lawful-intercept/lawful_intercept.h @@ -41,6 +41,6 @@ typedef CLIB_PACKED(struct { udp_header_t udp; }) ip4_udp_header_t; -vlib_node_registration_t li_hit_node; +extern vlib_node_registration_t li_hit_node; #endif /* __lawful_intercept_h__ */ diff --git a/vnet/vnet/lisp-gpe/lisp_gpe.h b/vnet/vnet/lisp-gpe/lisp_gpe.h index 8ca721dda84..12c4ebce38c 100644 --- a/vnet/vnet/lisp-gpe/lisp_gpe.h +++ b/vnet/vnet/lisp-gpe/lisp_gpe.h @@ -110,8 +110,8 @@ typedef struct { lisp_gpe_main_t lisp_gpe_main; -vlib_node_registration_t lisp_gpe_input_node; -vlib_node_registration_t lisp_gpe_encap_node; +extern vlib_node_registration_t lisp_gpe_input_node; +extern vlib_node_registration_t lisp_gpe_encap_node; u8 * format_lisp_gpe_encap_trace (u8 * s, va_list * args); u8 * format_lisp_gpe_header_with_length (u8 * s, va_list * args); diff --git a/vnet/vnet/map/ip4_sixrd.c b/vnet/vnet/map/ip4_sixrd.c index 1e83ce831e0..2fb8015d994 100644 --- a/vnet/vnet/map/ip4_sixrd.c +++ b/vnet/vnet/map/ip4_sixrd.c @@ -15,7 +15,7 @@ */ #include "sixrd.h" -vlib_node_registration_t ip4_sixrd_node; +static vlib_node_registration_t ip4_sixrd_node; typedef enum { IP4_SIXRD_NEXT_IP6_LOOKUP, @@ -112,7 +112,7 @@ static char *sixrd_error_strings[] = { #undef _ }; -VLIB_REGISTER_NODE(ip4_sixrd_node) = { +VLIB_REGISTER_NODE(ip4_sixrd_node,static) = { .function = ip4_sixrd, .name = "ip4-sixrd", .vector_size = sizeof(u32), diff --git a/vnet/vnet/map/ip6_sixrd.c b/vnet/vnet/map/ip6_sixrd.c index 0bd0cf3a303..36f3fab320b 100644 --- a/vnet/vnet/map/ip6_sixrd.c +++ b/vnet/vnet/map/ip6_sixrd.c @@ -20,7 +20,7 @@ #include "sixrd.h" -vlib_node_registration_t ip6_sixrd_node; +static vlib_node_registration_t ip6_sixrd_node; typedef enum { IP6_SIXRD_NEXT_IP4_LOOKUP, @@ -114,7 +114,7 @@ static char *sixrd_error_strings[] = { #undef _ }; -VLIB_REGISTER_NODE(ip6_sixrd_node) = { +VLIB_REGISTER_NODE(ip6_sixrd_node,static) = { .function = ip6_sixrd, .name = "ip6-sixrd", .vector_size = sizeof(u32), diff --git a/vnet/vnet/map/map.h b/vnet/vnet/map/map.h index d38d7f47241..a79da2cdabe 100644 --- a/vnet/vnet/map/map.h +++ b/vnet/vnet/map/map.h @@ -296,18 +296,18 @@ typedef struct { map_main_t map_main; -vlib_node_registration_t ip4_map_node; -vlib_node_registration_t ip6_map_node; - -vlib_node_registration_t ip4_map_t_node; -vlib_node_registration_t ip4_map_t_fragmented_node; -vlib_node_registration_t ip4_map_t_tcp_udp_node; -vlib_node_registration_t ip4_map_t_icmp_node; - -vlib_node_registration_t ip6_map_t_node; -vlib_node_registration_t ip6_map_t_fragmented_node; -vlib_node_registration_t ip6_map_t_tcp_udp_node; -vlib_node_registration_t ip6_map_t_icmp_node; +extern vlib_node_registration_t ip4_map_node; +extern vlib_node_registration_t ip6_map_node; + +extern vlib_node_registration_t ip4_map_t_node; +extern vlib_node_registration_t ip4_map_t_fragmented_node; +extern vlib_node_registration_t ip4_map_t_tcp_udp_node; +extern vlib_node_registration_t ip4_map_t_icmp_node; + +extern vlib_node_registration_t ip6_map_t_node; +extern vlib_node_registration_t ip6_map_t_fragmented_node; +extern vlib_node_registration_t ip6_map_t_tcp_udp_node; +extern vlib_node_registration_t ip6_map_t_icmp_node; /* * map_get_pfx diff --git a/vnet/vnet/map/sixrd.h b/vnet/vnet/map/sixrd.h index d741cb278b5..388ba4d298b 100644 --- a/vnet/vnet/map/sixrd.h +++ b/vnet/vnet/map/sixrd.h @@ -18,9 +18,6 @@ #include #include -vlib_node_registration_t ip6_sixrd_node; -vlib_node_registration_t ip4_sixrd_node; - int sixrd_create_domain(ip6_address_t *ip6_prefix, u8 ip6_prefix_len, ip4_address_t *ip4_prefix, u8 ip4_prefix_len, ip4_address_t *ip4_src, u32 *sixrd_domain_index, u16 mtu); diff --git a/vnet/vnet/mpls-gre/mpls.h b/vnet/vnet/mpls-gre/mpls.h index 5d7f9c5e219..c0a3531512f 100644 --- a/vnet/vnet/mpls-gre/mpls.h +++ b/vnet/vnet/mpls-gre/mpls.h @@ -113,8 +113,8 @@ format_function_t format_mpls_eth_header_with_length; format_function_t format_mpls_unicast_label; format_function_t format_mpls_encap_index; -vlib_node_registration_t mpls_input_node; -vlib_node_registration_t mpls_policy_encap_node; +extern vlib_node_registration_t mpls_input_node; +extern vlib_node_registration_t mpls_policy_encap_node; vnet_device_class_t mpls_gre_device_class; diff --git a/vnet/vnet/nsh-gre/nsh_gre.h b/vnet/vnet/nsh-gre/nsh_gre.h index c82c80f6a68..580942f0f19 100644 --- a/vnet/vnet/nsh-gre/nsh_gre.h +++ b/vnet/vnet/nsh-gre/nsh_gre.h @@ -97,8 +97,8 @@ typedef struct { nsh_gre_main_t nsh_gre_main; -vlib_node_registration_t nsh_gre_input_node; -vlib_node_registration_t nsh_gre_encap_node; +extern vlib_node_registration_t nsh_gre_input_node; +extern vlib_node_registration_t nsh_gre_encap_node; u8 * format_nsh_gre_encap_trace (u8 * s, va_list * args); diff --git a/vnet/vnet/nsh-vxlan-gpe/nsh_vxlan_gpe.h b/vnet/vnet/nsh-vxlan-gpe/nsh_vxlan_gpe.h index 953035a472b..99dc60001f6 100644 --- a/vnet/vnet/nsh-vxlan-gpe/nsh_vxlan_gpe.h +++ b/vnet/vnet/nsh-vxlan-gpe/nsh_vxlan_gpe.h @@ -125,8 +125,8 @@ typedef struct { nsh_vxlan_gpe_main_t nsh_vxlan_gpe_main; -vlib_node_registration_t nsh_vxlan_gpe_input_node; -vlib_node_registration_t nsh_vxlan_gpe_encap_node; +extern vlib_node_registration_t nsh_vxlan_gpe_input_node; +extern vlib_node_registration_t nsh_vxlan_gpe_encap_node; u8 * format_nsh_vxlan_gpe_encap_trace (u8 * s, va_list * args); diff --git a/vnet/vnet/srp/node.c b/vnet/vnet/srp/node.c index 0b23258249f..0ffd4018396 100644 --- a/vnet/vnet/srp/node.c +++ b/vnet/vnet/srp/node.c @@ -269,7 +269,7 @@ static char * srp_error_strings[] = { #undef _ }; -vlib_node_registration_t srp_input_node = { +static vlib_node_registration_t srp_input_node = { .function = srp_input, .name = "srp-input", /* Takes a vector of packets. */ diff --git a/vnet/vnet/srp/srp.h b/vnet/vnet/srp/srp.h index 48c447b7bfd..5288ebe4759 100644 --- a/vnet/vnet/srp/srp.h +++ b/vnet/vnet/srp/srp.h @@ -149,8 +149,7 @@ void srp_interface_set_hw_wrap_function (u32 hw_if_index, srp_hw_wrap_function_t void srp_interface_set_hw_enable_function (u32 hw_if_index, srp_hw_enable_function_t * f); -vlib_node_registration_t srp_ips_process_node; -vlib_node_registration_t srp_input_node; +extern vlib_node_registration_t srp_ips_process_node; /* Called when an IPS control packet is received on given interface. */ void srp_ips_rx_packet (u32 sw_if_index, srp_ips_header_t * ips_packet); diff --git a/vnet/vnet/vxlan/vxlan.h b/vnet/vnet/vxlan/vxlan.h index b38e65de4c1..2454e4c53e8 100644 --- a/vnet/vnet/vxlan/vxlan.h +++ b/vnet/vnet/vxlan/vxlan.h @@ -112,8 +112,8 @@ typedef struct { vxlan_main_t vxlan_main; -vlib_node_registration_t vxlan_input_node; -vlib_node_registration_t vxlan_encap_node; +extern vlib_node_registration_t vxlan_input_node; +extern vlib_node_registration_t vxlan_encap_node; u8 * format_vxlan_encap_trace (u8 * s, va_list * args);