Add -fno-common compile option
-fno-common makes sure we do not have multiple declarations of the same
global symbol across compilation units. It helps debug nasty linkage
bugs by guaranteeing that all reference to a global symbol use the same
underlying object.
It also helps avoiding benign mistakes such as declaring enum as global
objects instead of types in headers (hence the minor fixes scattered
across the source).
Change-Id: I55c16406dc54ff8a6860238b90ca990fa6b179f1
Signed-off-by: Benoît Ganne <bganne@cisco.com>
diff --git a/src/vnet/dpo/dvr_dpo.c b/src/vnet/dpo/dvr_dpo.c
index 4b440f8..a362d23 100644
--- a/src/vnet/dpo/dvr_dpo.c
+++ b/src/vnet/dpo/dvr_dpo.c
@@ -18,6 +18,8 @@
#include <vnet/ip/ip.h>
#include <vnet/ethernet/ethernet.h>
+dvr_dpo_t *dvr_dpo_pool;
+
/**
* The 'DB' of DVR DPOs.
* There is one per-interface per-L3 proto, so this is a per-interface vector
diff --git a/src/vnet/dpo/dvr_dpo.h b/src/vnet/dpo/dvr_dpo.h
index 15fe113..669c492 100644
--- a/src/vnet/dpo/dvr_dpo.h
+++ b/src/vnet/dpo/dvr_dpo.h
@@ -54,7 +54,7 @@
/**
* @brief pool of all interface DPOs
*/
-dvr_dpo_t *dvr_dpo_pool;
+extern dvr_dpo_t *dvr_dpo_pool;
static inline dvr_dpo_t *
dvr_dpo_get (index_t index)
diff --git a/src/vnet/dpo/interface_rx_dpo.c b/src/vnet/dpo/interface_rx_dpo.c
index 82767e7..90868b9 100644
--- a/src/vnet/dpo/interface_rx_dpo.c
+++ b/src/vnet/dpo/interface_rx_dpo.c
@@ -17,6 +17,8 @@
#include <vnet/fib/fib_node.h>
#include <vnet/l2/l2_input.h>
+interface_rx_dpo_t *interface_rx_dpo_pool;
+
/*
* The 'DB' of interface DPOs.
* There is only one per-interface per-protocol, so this is a per-interface
diff --git a/src/vnet/dpo/interface_rx_dpo.h b/src/vnet/dpo/interface_rx_dpo.h
index edecce0..d3406a2 100644
--- a/src/vnet/dpo/interface_rx_dpo.h
+++ b/src/vnet/dpo/interface_rx_dpo.h
@@ -58,7 +58,7 @@
/**
* @brief pool of all interface DPOs
*/
-interface_rx_dpo_t *interface_rx_dpo_pool;
+extern interface_rx_dpo_t *interface_rx_dpo_pool;
static inline interface_rx_dpo_t *
interface_rx_dpo_get (index_t index)
diff --git a/src/vnet/dpo/l3_proxy_dpo.h b/src/vnet/dpo/l3_proxy_dpo.h
index fcc28b3..3a578e2 100644
--- a/src/vnet/dpo/l3_proxy_dpo.h
+++ b/src/vnet/dpo/l3_proxy_dpo.h
@@ -52,7 +52,7 @@
/**
* @brief pool of all l3_proxy DPOs
*/
-l3_proxy_dpo_t *l3_proxy_dpo_pool;
+extern l3_proxy_dpo_t *l3_proxy_dpo_pool;
static inline l3_proxy_dpo_t *
l3_proxy_dpo_get (index_t index)
diff --git a/src/vnet/dpo/receive_dpo.h b/src/vnet/dpo/receive_dpo.h
index ee3c783..9459fbc 100644
--- a/src/vnet/dpo/receive_dpo.h
+++ b/src/vnet/dpo/receive_dpo.h
@@ -59,7 +59,7 @@
/**
* @brief pool of all receive DPOs
*/
-receive_dpo_t *receive_dpo_pool;
+extern receive_dpo_t *receive_dpo_pool;
static inline receive_dpo_t *
receive_dpo_get (index_t index)