[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