123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- From ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0 Mon Sep 17 00:00:00 2001
- From: Sebastian Huber <sebastian.huber@embedded-brains.de>
- Date: Wed, 1 Jul 2020 19:29:55 +0200
- Subject: [PATCH] sim/ppc: Fix linker error with -fno-common
- GCC 10 enables -fno-common by default. This resulted in a multiple
- definition linker error since global variables were declared and defined
- in a header file:
- ld: ld-insn.o:sim/ppc/ld-insn.h:221: multiple definition of
- `max_model_fields_len'; igen.o:sim/ppc/ld-insn.h:221: first defined here
- sim/ppc
- * ld-insn.h (last_model, last_model_data, last_model_function,
- last_model_internal, last_model_macro, last_model_static):
- Delete.
- (max_model_fields_len, model_data, model_functions,
- model_internal, model_macros, model_static, models): Declare, but do not
- define.
- * ld-insn.c (last_model, last_model_data, last_model_function,
- last_model_internal, last_model_macro, last_model_static,
- max_model_fields_len, model_data, model_functions,
- model_internal, model_macros, model_static, models): Define.
- Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
- Fetch from: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0
- ---
- sim/ppc/ld-insn.c | 18 ++++++++++++++++++
- sim/ppc/ld-insn.h | 24 +++++++-----------------
- 2 files changed, 25 insertions(+), 17 deletions(-)
- diff --git a/sim/ppc/ld-insn.c b/sim/ppc/ld-insn.c
- index e39131ca133..585071a861f 100644
- --- a/sim/ppc/ld-insn.c
- +++ b/sim/ppc/ld-insn.c
- @@ -28,6 +28,24 @@
-
- #include "igen.h"
-
- +static model *last_model;
- +
- +static insn *last_model_macro;
- +static insn *last_model_function;
- +static insn *last_model_internal;
- +static insn *last_model_static;
- +static insn *last_model_data;
- +
- +model *models;
- +
- +insn *model_macros;
- +insn *model_functions;
- +insn *model_internal;
- +insn *model_static;
- +insn *model_data;
- +
- +int max_model_fields_len;
- +
- static void
- update_depth(insn_table *entry,
- lf *file,
- diff --git a/sim/ppc/ld-insn.h b/sim/ppc/ld-insn.h
- index 88318ffa2b3..52baeaa2d84 100644
- --- a/sim/ppc/ld-insn.h
- +++ b/sim/ppc/ld-insn.h
- @@ -200,25 +200,15 @@ extern insn_table *load_insn_table
- table_include *includes,
- cache_table **cache_rules);
-
- -model *models;
- -model *last_model;
- +extern model *models;
-
- -insn *model_macros;
- -insn *last_model_macro;
- +extern insn *model_macros;
- +extern insn *model_functions;
- +extern insn *model_internal;
- +extern insn *model_static;
- +extern insn *model_data;
-
- -insn *model_functions;
- -insn *last_model_function;
- -
- -insn *model_internal;
- -insn *last_model_internal;
- -
- -insn *model_static;
- -insn *last_model_static;
- -
- -insn *model_data;
- -insn *last_model_data;
- -
- -int max_model_fields_len;
- +extern int max_model_fields_len;
-
- extern void insn_table_insert_insn
- (insn_table *table,
- --
- 2.18.4
|