Avoid duplicate definitions of globals 06/14106/4
authorCheyenne Wills <cwills@sinenomine.net>
Wed, 1 Apr 2020 15:48:57 +0000 (09:48 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 3 Apr 2020 15:21:51 +0000 (11:21 -0400)
GCC 10 changed a default flag from -fcommon to -fno-common.  See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678 for some background.

The change in gcc 10 results in build link-time errors. For example:
   ../../src/xstat/.libs/liboafs_xstat_cm.a(xstat_cm.o):(.bss+0x2050):
       multiple definition of `numCollections';

Ensure that only one definition for global data objects exist and change
references to use "extern" as needed.

To ensure that future changes do not introduce duplicated global
definitions, add the -fno-common flag to XCFLAGS when using the
configure --enable-checking setting.

Change-Id: I6780dd995fe6fb6c2102765ff3484c18e1e1cd58
Reviewed-on: https://gerrit.openafs.org/14106
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

16 files changed:
src/bucoord/main.c
src/butc/dbentries.c
src/butc/dump.c
src/butc/lwps.c
src/butc/tcmain.c
src/cf/osconf.m4
src/fsprobe/fsprobe.h
src/uss/uss_vol.c
src/viced/host.c
src/viced/host.h
src/vol/fssync-server.c
src/vol/volume.c
src/xstat/xstat_cm.c
src/xstat/xstat_cm.h
src/xstat/xstat_fs.c
src/xstat/xstat_fs.h

index d2a5f36..a453cc9 100644 (file)
@@ -47,9 +47,9 @@ char tcell[64];
 /*
  * Global configuration information for the Backup Coordinator.
  */
-struct bc_config *bc_globalConfig;     /*Ptr to global BC configuration info */
+extern struct bc_config *bc_globalConfig;      /*Ptr to global BC configuration info */
 
-struct ubik_client *cstruct;   /* Ptr to Ubik client structure */
+extern struct ubik_client *cstruct;    /* Ptr to Ubik client structure */
 time_t tokenExpires;           /* The token's expiration time */
 
 static const char *DefaultConfDir;     /*Default backup config directory */
@@ -162,8 +162,6 @@ bc_InitTextConfig(void)
     udbClientTextP ctPtr;
     int i;
 
-    extern struct bc_config *bc_globalConfig;
-
     mkdir(DefaultConfDir, 777);        /* temporary */
 
     /* initialize the client text structures */
index 762105b..867a225 100644 (file)
@@ -32,7 +32,7 @@
 #include "error_macros.h"
 
 dlqlinkT savedEntries;
-dlqlinkT entries_to_flush;
+static dlqlinkT entries_to_flush;
 
 int dbWatcherinprogress;
 
index 92c1078..62d09e5 100644 (file)
@@ -43,8 +43,7 @@ extern int isafile;
 extern int forcemultiple;
 
 extern struct ubik_client *cstruct;
-dlqlinkT savedEntries;
-dlqlinkT entries_to_flush;
+extern dlqlinkT savedEntries;
 
 extern afs_int32 groupId;
 extern afs_int32 BufferSize;
@@ -62,8 +61,8 @@ extern char *xbsalGName;
 extern char *globalButcLog;
 #endif /*xbsa */
 
-afs_int32 dataSize;            /* Size of data to read on each rx_Read() call */
-afs_int32 tapeblocks;          /* Number of 16K tape datablocks in buffer (!CONF_XBSA) */
+extern afs_int32 dataSize;             /* Size of data to read on each rx_Read() call */
+extern afs_int32 tapeblocks;           /* Number of 16K tape datablocks in buffer (!CONF_XBSA) */
 
 /* TBD
  *
index 82b61be..3078d73 100644 (file)
@@ -51,7 +51,7 @@ extern int forcemultiple;
 #endif
 
 /* XBSA Global Parameters */
-afs_int32 xbsaType;
+extern afs_int32 xbsaType;
 #ifdef xbsa
 struct butx_transactionInfo butxInfo;
 #endif
index 344d93e..1bbebeb 100644 (file)
@@ -66,7 +66,7 @@
 #define TL_PREFIX  "TL"
 #define CFG_PREFIX "CFG"
 
-struct ubik_client *cstruct;
+extern struct ubik_client *cstruct;
 FILE *logIO, *ErrorlogIO, *centralLogIO, *lastLogIO;
 char lFile[AFSDIR_PATH_MAX];
 char logFile[AFSDIR_PATH_MAX + 256];
index e5e484a..a765717 100644 (file)
@@ -629,7 +629,7 @@ if test "x$GCC" = "xyes"; then
     XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Wpointer-arith"
   fi
   if test "x$enable_checking" != "xno"; then
-    XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Werror -fdiagnostics-show-option -Wpointer-arith"
+    XCFLAGS="${XCFLAGS} -Wall -Wstrict-prototypes -Wold-style-definition -Werror -fdiagnostics-show-option -Wpointer-arith -fno-common"
     CFLAGS_WERROR="-Werror"
     if test "x$enable_checking" != "xall"; then
       CFLAGS_NOERROR="-Wno-error"
index c3588d1..70c3637 100644 (file)
@@ -103,7 +103,6 @@ struct fsprobe_ProbeResults {
 
 extern int fsprobe_numServers; /*# servers connected */
 extern struct fsprobe_ConnectionInfo *fsprobe_ConnInfo;        /*Ptr to connections */
-extern int numCollections;     /*Num data collections */
 extern struct fsprobe_ProbeResults fsprobe_Results;    /*Latest probe results */
 
 extern int fsprobe_Init(int, struct sockaddr_in *, int, int (*)(void), int );
index d114aa4..5bbdebe 100644 (file)
@@ -61,7 +61,7 @@ extern int line;
  * will work and we can avoid nasty little core dumps.
  */
 struct ubik_client *uconn_vldbP;       /*Ubik connection struct */
-struct ubik_client *cstruct;   /*Required name for above */
+extern struct ubik_client *cstruct;    /*Required name for above */
 
 /*
  * ------------------------ Private globals -----------------------
index 0bceeb1..363b342 100644 (file)
@@ -67,6 +67,8 @@ int hostCount = 0;            /* number of hosts in hostList */
 int rxcon_ident_key;
 int rxcon_client_key;
 
+struct host *(hosttableptrs[h_MAXHOSTTABLES]);
+
 static struct rx_securityClass *sc = NULL;
 static int h_quota_limit;
 
index fead948..272dcdb 100644 (file)
@@ -254,7 +254,7 @@ extern int h_RestoreState(void);
 #define H_ENUMERATE_BAIL(flags)        ((flags)|0x80000000)
 #define H_ENUMERATE_ISSET_BAIL(flags)  ((flags)&0x80000000)
 
-struct host *(hosttableptrs[h_MAXHOSTTABLES]); /* Used by h_itoh */
+extern struct host *(hosttableptrs[h_MAXHOSTTABLES]);  /* Used by h_itoh */
 #define h_htoi(host) ((host)->index)   /* index isn't zeroed, no need to lock */
 #define h_itoh(hostindex) (hosttableptrs[(hostindex)>>h_HTSHIFT]+((hostindex)&(h_HTSPERBLOCK-1)))
 
index bd39366..8cf3b55 100644 (file)
@@ -79,9 +79,6 @@
 #endif /* USE_UNIX_SOCKETS */
 
 #ifdef FSSYNC_BUILD_SERVER
-
-int (*V_BreakVolumeCallbacks) (VolumeId volume);
-
 #define MAXHANDLERS    4       /* Up to 4 clients; must be at least 2, so that
                                 * move = dump+restore can run on single server */
 #define MAXOFFLINEVOLUMES 128  /* This needs to be as big as the maximum
index d03d2fc..c2d0668 100644 (file)
@@ -120,9 +120,6 @@ pthread_cond_t vol_vinit_cond;
 int vol_attach_threads = 1;
 #endif /* AFS_PTHREAD_ENV */
 
-/* start-time configurable I/O parameters */
-ih_init_params vol_io_params;
-
 #ifdef AFS_DEMAND_ATTACH_FS
 pthread_mutex_t vol_salvsync_mutex;
 
index 4189cb7..a7d0a03 100644 (file)
@@ -31,9 +31,7 @@
 int xstat_cm_numServers;       /*Num connected servers */
 struct xstat_cm_ConnectionInfo
  *xstat_cm_ConnInfo;           /*Ptr to connection array */
-int numCollections;            /*Number of data collections */
 struct xstat_cm_ProbeResults xstat_cm_Results; /*Latest probe results */
-char terminationEvent;         /*One-shot termination event */
 
 afs_int32 xstat_cmData[AFSCB_MAX_XSTAT_LONGS]; /*Buffer for collected data */
 
index cba285e..85d8388 100644 (file)
@@ -86,10 +86,8 @@ struct xstat_cm_ProbeResults {
 extern int xstat_cm_numServers;        /*# connected servers */
 extern struct xstat_cm_ConnectionInfo
  *xstat_cm_ConnInfo;           /*Ptr to connections */
-extern int numCollections;     /*Num data collections */
 extern struct xstat_cm_ProbeResults
   xstat_cm_Results;            /*Latest probe results */
-extern char terminationEvent;  /*One-shot termination event */
 
 /*
  * ------------------------ Exported functions ------------------------
index a025abe..3ebf97f 100644 (file)
@@ -32,9 +32,7 @@
 int xstat_fs_numServers;       /*Num connected servers */
 struct xstat_fs_ConnectionInfo
  *xstat_fs_ConnInfo;           /*Ptr to connection array */
-int numCollections;            /*Number of data collections */
 struct xstat_fs_ProbeResults xstat_fs_Results; /*Latest probe results */
-char terminationEvent;         /*One-shot termination event */
 
 afs_int32 xstat_fsData[AFS_MAX_XSTAT_LONGS];   /*Buffer for collected data */
 
index 8ad3882..839a065 100644 (file)
@@ -87,10 +87,8 @@ struct xstat_fs_ProbeResults {
 extern int xstat_fs_numServers;        /*# connected servers */
 extern struct xstat_fs_ConnectionInfo
  *xstat_fs_ConnInfo;           /*Ptr to connections */
-extern int numCollections;     /*Num data collections */
 extern struct xstat_fs_ProbeResults
   xstat_fs_Results;            /*Latest probe results */
-extern char terminationEvent;  /*One-shot termination event */
 
 /*
  * ------------------------ Exported functions ------------------------