[PATCH] sim: cr16/d10v: move storage out of header

Andrew Burgess andrew.burgess@embecosm.com
Sat Jan 9 11:36:33 GMT 2021


* Mike Frysinger via Gdb-patches <gdb-patches@sourceware.org> [2021-01-09 03:12:43 -0500]:

> 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/cr16_sim.h | 4 +++-
>  sim/cr16/interp.c   | 2 ++
>  sim/d10v/d10v_sim.h | 4 +++-
>  sim/d10v/interp.c   | 2 ++
>  4 files changed, 10 insertions(+), 2 deletions(-)

LGTM, but will need a ChangeLog entry.

> 
> diff --git a/sim/cr16/cr16_sim.h b/sim/cr16/cr16_sim.h
> index 4d6f1b95077b..8232f0743f7b 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 0adb68a77225..cff7b8857189 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/d10v_sim.h b/sim/d10v/d10v_sim.h
> index 86243c9f7002..a3755bf3ccb9 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 cb8c6cf61f5c..5c70b38d9d8f 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. */
> -- 
> 2.28.0



More information about the Gdb-patches mailing list