examples/vm_power: fix build with -fno-common
authorThomas Monjalon <thomas@monjalon.net>
Wed, 20 May 2020 07:59:35 +0000 (09:59 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 21 May 2020 13:41:48 +0000 (15:41 +0200)
The variables of the same name are merged together
if compiled with -fcommon. It used to be the default.
This default behaviour allows to declare a variable in a header file and
share the variable in every .o binaries thanks to merge at link-time.

If compiling with -fno-common (default in GCC 10), the variable must be
shared as extern to avoid multiple re-definitions.

Fixes: dff22404aaad ("examples/vm_power_mgr: add VCPU to PCPU mapping")
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
examples/vm_power_manager/channel_manager.c
examples/vm_power_manager/channel_manager.h

index 4ac21f0..4d13697 100644 (file)
@@ -35,6 +35,8 @@
 
 #define RTE_LOGTYPE_CHANNEL_MANAGER RTE_LOGTYPE_USER1
 
+struct libvirt_vm_info lvm_info[MAX_CLIENTS];
+
 /* Global pointer to libvirt connection */
 static virConnectPtr global_vir_conn_ptr;
 
index 8284be0..a2a2f2b 100644 (file)
@@ -41,7 +41,7 @@ struct libvirt_vm_info {
        uint8_t num_cpus;
 };
 
-struct libvirt_vm_info lvm_info[MAX_CLIENTS];
+extern struct libvirt_vm_info lvm_info[MAX_CLIENTS];
 /* Communication Channel Status */
 enum channel_status { CHANNEL_MGR_CHANNEL_DISCONNECTED = 0,
        CHANNEL_MGR_CHANNEL_CONNECTED,