From bc838bb710fae201df49130a2aedbc76b9fc35e8 Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Mon, 6 Jul 2020 16:19:08 -0400 Subject: cli: type mismatch global_quotad_rpc in cli-quotad-client.c ... [ 236s] (.text+0x0): multiple definition of `cli_default_conn_timeout'; cli.o (symbol from plugin):(.text+0x0): first defined here [ 236s] cli-quotad-client.c:13:24: warning: type of 'global_quotad_rpc' does not match original declaration [-Wlto-type-mismatch] [ 236s] 13 | extern struct rpc_clnt global_quotad_rpc; [ 236s] | ^ [ 236s] cli.c:80:18: note: 'global_quotad_rpc' was previously declared here [ 236s] 80 | struct rpc_clnt *global_quotad_rpc; [ 236s] | ^ [ 236s] cli.c:80:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used [ 239s] collect2: error: ld returned 1 exit status ... move several global extern decls to cli.h. Found on SUSE Tumbleweed w/ gcc-10 and LTO. This bug goes back at least as far as release-6. Curiously this only popped up as an error when building 6.9, not 7.4 or 8.0. And not when building 8.0 on Fedora rawhide/33. Change-Id: I765642cea77b524a36368a7ff1a2976ef049dd0f Fixes: #1356 Signed-off-by: Kaleb S. KEITHLEY --- cli/src/cli-cmd-global.c | 2 -- cli/src/cli-cmd-misc.c | 4 ---- cli/src/cli-cmd-peer.c | 4 ---- cli/src/cli-cmd-snapshot.c | 2 -- cli/src/cli-cmd-system.c | 4 ---- cli/src/cli-cmd-volume.c | 4 ---- cli/src/cli-quotad-client.c | 5 +---- cli/src/cli-rpc-ops.c | 2 -- cli/src/cli.c | 1 + cli/src/cli.h | 6 ++++++ 10 files changed, 8 insertions(+), 26 deletions(-) diff --git a/cli/src/cli-cmd-global.c b/cli/src/cli-cmd-global.c index ba3c1ea6446..2c9a5f01bb1 100644 --- a/cli/src/cli-cmd-global.c +++ b/cli/src/cli-cmd-global.c @@ -27,8 +27,6 @@ #include #include -extern rpc_clnt_prog_t *cli_rpc_prog; - int cli_cmd_global_help_cbk(struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount); diff --git a/cli/src/cli-cmd-misc.c b/cli/src/cli-cmd-misc.c index 658677bbca3..e961d88da86 100644 --- a/cli/src/cli-cmd-misc.c +++ b/cli/src/cli-cmd-misc.c @@ -18,10 +18,6 @@ #include "cli-mem-types.h" #include "protocol-common.h" -extern struct rpc_clnt *global_rpc; - -extern rpc_clnt_prog_t *cli_rpc_prog; - extern struct cli_cmd volume_cmds[]; extern struct cli_cmd bitrot_cmds[]; extern struct cli_cmd quota_cmds[]; diff --git a/cli/src/cli-cmd-peer.c b/cli/src/cli-cmd-peer.c index 342b1d67aaa..084998701d8 100644 --- a/cli/src/cli-cmd-peer.c +++ b/cli/src/cli-cmd-peer.c @@ -20,10 +20,6 @@ #include "protocol-common.h" #include -extern struct rpc_clnt *global_rpc; - -extern rpc_clnt_prog_t *cli_rpc_prog; - int cli_cmd_peer_help_cbk(struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount); diff --git a/cli/src/cli-cmd-snapshot.c b/cli/src/cli-cmd-snapshot.c index 176c6d745b5..859d6b2e40d 100644 --- a/cli/src/cli-cmd-snapshot.c +++ b/cli/src/cli-cmd-snapshot.c @@ -17,8 +17,6 @@ #include "cli-cmd.h" #include "cli-mem-types.h" -extern rpc_clnt_prog_t *cli_rpc_prog; - int cli_cmd_snapshot_help_cbk(struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount); diff --git a/cli/src/cli-cmd-system.c b/cli/src/cli-cmd-system.c index d5732630582..801e8f4efed 100644 --- a/cli/src/cli-cmd-system.c +++ b/cli/src/cli-cmd-system.c @@ -18,10 +18,6 @@ #include "cli-mem-types.h" #include "protocol-common.h" -extern struct rpc_clnt *global_rpc; - -extern rpc_clnt_prog_t *cli_rpc_prog; - int cli_cmd_system_help_cbk(struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount); diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 82b4a7da225..f238851586e 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -28,10 +28,6 @@ #include #include -extern struct rpc_clnt *global_rpc; -extern struct rpc_clnt *global_quotad_rpc; - -extern rpc_clnt_prog_t *cli_rpc_prog; extern rpc_clnt_prog_t cli_quotad_clnt; static int diff --git a/cli/src/cli-quotad-client.c b/cli/src/cli-quotad-client.c index 52ab97ee815..772b8f75bd9 100644 --- a/cli/src/cli-quotad-client.c +++ b/cli/src/cli-quotad-client.c @@ -10,9 +10,6 @@ #include "cli-quotad-client.h" -extern struct rpc_clnt global_quotad_rpc; -extern struct rpc_clnt_program cli_quotad_clnt; - int cli_quotad_submit_request(void *req, call_frame_t *frame, rpc_clnt_prog_t *prog, int procnum, struct iobref *iobref, xlator_t *this, @@ -60,7 +57,7 @@ cli_quotad_submit_request(void *req, call_frame_t *frame, rpc_clnt_prog_t *prog, } /* Send the msg */ - ret = rpc_clnt_submit(&global_quotad_rpc, prog, procnum, cbkfn, &iov, count, + ret = rpc_clnt_submit(global_quotad_rpc, prog, procnum, cbkfn, &iov, count, NULL, 0, iobref, frame, NULL, 0, NULL, 0, NULL); ret = 0; diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index e9cb81948ee..9b6b0c7fa50 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -47,9 +47,7 @@ enum gf_task_types { GF_TASK_TYPE_REBALANCE, GF_TASK_TYPE_REMOVE_BRICK }; -extern struct rpc_clnt *global_quotad_rpc; rpc_clnt_prog_t cli_quotad_clnt; -extern rpc_clnt_prog_t *cli_rpc_prog; static int32_t gf_cli_remove_brick(call_frame_t *frame, xlator_t *this, void *data); diff --git a/cli/src/cli.c b/cli/src/cli.c index 80b82bf77d1..a52b39c5fb8 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -71,6 +71,7 @@ const char *argp_program_version = const char *argp_program_bug_address = "<" PACKAGE_BUGREPORT ">"; struct rpc_clnt *global_quotad_rpc; + struct rpc_clnt *global_rpc; rpc_clnt_prog_t *cli_rpc_prog; diff --git a/cli/src/cli.h b/cli/src/cli.h index 880bd00e55e..c0d933e8f8a 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -189,6 +189,12 @@ typedef ssize_t (*cli_serialize_t)(struct iovec outmsg, void *args); extern struct cli_state *global_state; /* use only in readline callback */ +extern struct rpc_clnt *global_quotad_rpc; + +extern struct rpc_clnt *global_rpc; + +extern rpc_clnt_prog_t *cli_rpc_prog; + typedef const char *(*cli_selector_t)(void *wcon); char * -- cgit