From 7eb99e5e27eebaf4a4acd469ad0856c0b35d80b3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 9 Jan 2021 03:10:52 -0500 Subject: sim: cr16/d10v: move storage out of header These ports declare their State variable in a header and then include multiple times. This causes linker errors with newer gcc due to the change in -fno-common behavior. Move the storage to a C file so we only have one instance of it in the final program. --- sim/cr16/ChangeLog | 5 +++++ sim/cr16/cr16_sim.h | 4 +++- sim/cr16/interp.c | 2 ++ sim/d10v/ChangeLog | 5 +++++ sim/d10v/d10v_sim.h | 4 +++- sim/d10v/interp.c | 2 ++ 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/sim/cr16/ChangeLog b/sim/cr16/ChangeLog index 9e8a16d..14edee2 100644 --- a/sim/cr16/ChangeLog +++ b/sim/cr16/ChangeLog @@ -1,5 +1,10 @@ 2021-01-09 Mike Frysinger + * cr16_sim.h (State): Change to an extern. + * interp.c (State): Define. + +2021-01-09 Mike Frysinger + * configure: Regenerate. 2021-01-09 Mike Frysinger diff --git a/sim/cr16/cr16_sim.h b/sim/cr16/cr16_sim.h index 4d6f1b9..8232f07 100644 --- a/sim/cr16/cr16_sim.h +++ b/sim/cr16/cr16_sim.h @@ -243,7 +243,9 @@ struct _state enum _ins_type ins_type; -} State; +}; + +extern struct _state State; extern uint32 OP[4]; diff --git a/sim/cr16/interp.c b/sim/cr16/interp.c index 0adb68a..cff7b88 100644 --- a/sim/cr16/interp.c +++ b/sim/cr16/interp.c @@ -33,6 +33,8 @@ #include "gdb/signals.h" #include "opcode/cr16.h" +struct _state State; + int cr16_debug; uint32 OP[4]; diff --git a/sim/d10v/ChangeLog b/sim/d10v/ChangeLog index b82ea09..13abbb8 100644 --- a/sim/d10v/ChangeLog +++ b/sim/d10v/ChangeLog @@ -1,5 +1,10 @@ 2021-01-09 Mike Frysinger + * d10v_sim.h (State): Change to an extern. + * interp.c (State): Define. + +2021-01-09 Mike Frysinger + * configure: Regenerate. 2021-01-09 Mike Frysinger diff --git a/sim/d10v/d10v_sim.h b/sim/d10v/d10v_sim.h index 86243c9..a3755bf 100644 --- a/sim/d10v/d10v_sim.h +++ b/sim/d10v/d10v_sim.h @@ -270,7 +270,9 @@ struct _state enum _ins_type ins_type; -} State; +}; + +extern struct _state State; extern uint16 OP[4]; diff --git a/sim/d10v/interp.c b/sim/d10v/interp.c index cb8c6cf..5c70b38 100644 --- a/sim/d10v/interp.c +++ b/sim/d10v/interp.c @@ -25,6 +25,8 @@ enum _leftright { LEFT_FIRST, RIGHT_FIRST }; +struct _state State; + int d10v_debug; /* Set this to true to get the previous segment layout. */ -- cgit v1.1