[BIRD 1.6.x] Unix: fix compilation with GCC 10

Vincent Bernat vincent at bernat.ch
Mon Sep 28 15:01:12 CEST 2020


GCC 10 will now error when declaring a global variable twice:
 https://gcc.gnu.org/gcc-10/porting_to.html#common

Fix this issue by declaring the variable as `extern' in `krt.h'. The
variable is really declared in `krt.c'.

    LD -r -o all.o cf-parse.tab.o cf-lex.o conf.o
    /usr/bin/ld: cf-lex.o:/home/bernat/code/exoscale/bird/build~/conf/../lib/krt.h:115: multiple definition of `kif_proto'; cf-parse.tab.o:/home/bernat/code/exoscale/bird/build~/conf/../lib/krt.h:115: first defined here

This issue was already fixed in BIRD 2.x.
---
 sysdep/unix/krt.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sysdep/unix/krt.h b/sysdep/unix/krt.h
index d4a8717e38ec..fe79efc3717d 100644
--- a/sysdep/unix/krt.h
+++ b/sysdep/unix/krt.h
@@ -112,7 +112,7 @@ struct kif_proto {
   struct kif_state sys;		/* Sysdep state */
 };
 
-struct kif_proto *kif_proto;
+extern struct kif_proto *kif_proto;
 
 #define KIF_CF ((struct kif_config *)p->p.cf)
 
-- 
2.28.0



More information about the Bird-users mailing list