[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging-4.13] tools/xenstore: mark variable in header as extern



commit a5756aa6398b5e333ca15583dfd7fdaa21c0f116
Author:     Anthony PERARD <anthony.perard@xxxxxxxxxx>
AuthorDate: Wed May 20 17:39:42 2020 +0100
Commit:     Ian Jackson <iwj@xxxxxxxxxxxxxx>
CommitDate: Mon Nov 9 17:54:01 2020 +0000

    tools/xenstore: mark variable in header as extern
    
    This patch fix "multiple definition of `xprintf'" (or xgt_handle)
    build error with GCC 10.1.0.
    
    These are the error reported:
        gcc xs_tdb_dump.o utils.o tdb.o talloc.o      -o xs_tdb_dump
        /usr/bin/ld: utils.o:./utils.h:27: multiple definition of `xprintf'; 
xs_tdb_dump.o:./utils.h:27: first defined here
        [...]
        gcc xenstored_core.o xenstored_watch.o xenstored_domain.o 
xenstored_transaction.o xenstored_control.o xs_lib.o talloc.o utils.o tdb.o 
hashtable.o xenstored_posix.o      -lsystemd   -Wl,-rpath-link=... 
../libxc/libxenctrl.so -lrt  -o xenstored
        /usr/bin/ld: xenstored_watch.o:./xenstored_core.h:207: multiple 
definition of `xgt_handle'; xenstored_core.o:./xenstored_core.h:207: first 
defined here
        /usr/bin/ld: xenstored_domain.o:./xenstored_core.h:207: multiple 
definition of `xgt_handle'; xenstored_core.o:./xenstored_core.h:207: first 
defined here
        /usr/bin/ld: xenstored_transaction.o:./xenstored_core.h:207: multiple 
definition of `xgt_handle'; xenstored_core.o:./xenstored_core.h:207: first 
defined here
        /usr/bin/ld: xenstored_control.o:./xenstored_core.h:207: multiple 
definition of `xgt_handle'; xenstored_core.o:./xenstored_core.h:207: first 
defined here
        /usr/bin/ld: xenstored_posix.o:./xenstored_core.h:207: multiple 
definition of `xgt_handle'; xenstored_core.o:./xenstored_core.h:207: first 
defined here
    
    A difference that I noticed with earlier version of the build chain is
    that before, I had:
        $ nm xs_tdb_dump.o | grep xprintf
        0000000000000008 C xprintf
    And now, it's:
        0000000000000000 B xprintf
    With the patch apply, the symbol isn't in xs_tdb_dump.o anymore.
    
    Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
    Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    (cherry picked from commit dacdbf7088d6a3705a9831e73991c2b14c519a65)
---
 tools/xenstore/utils.h          | 2 +-
 tools/xenstore/xenstored_core.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/xenstore/utils.h b/tools/xenstore/utils.h
index 522c3594a2..6a1b5de9bd 100644
--- a/tools/xenstore/utils.h
+++ b/tools/xenstore/utils.h
@@ -24,7 +24,7 @@ static inline bool strends(const char *a, const char *b)
 void barf(const char *fmt, ...) __attribute__((noreturn));
 void barf_perror(const char *fmt, ...) __attribute__((noreturn));
 
-void (*xprintf)(const char *fmt, ...);
+extern void (*xprintf)(const char *fmt, ...);
 
 #define eprintf(_fmt, _args...) xprintf("[ERR] %s" _fmt, __FUNCTION__, ##_args)
 
diff --git a/tools/xenstore/xenstored_core.h b/tools/xenstore/xenstored_core.h
index 56a279cfbb..c4c32bc88f 100644
--- a/tools/xenstore/xenstored_core.h
+++ b/tools/xenstore/xenstored_core.h
@@ -204,7 +204,7 @@ void finish_daemonize(void);
 /* Open a pipe for signal handling */
 void init_pipe(int reopen_log_pipe[2]);
 
-xengnttab_handle **xgt_handle;
+extern xengnttab_handle **xgt_handle;
 
 int remember_string(struct hashtable *hash, const char *str);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.