diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/gdb.scm | 1 | ||||
-rw-r--r-- | gnu/packages/patches/gdb-9.2-sim-ppc-fno-common.patch | 123 |
3 files changed, 125 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index cf60dad2ec..cf47dcd076 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1095,6 +1095,7 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-9-asan-fix-limits-include.patch \ %D%/packages/patches/gcc-9-strmov-store-file-names.patch \ %D%/packages/patches/gdb-hurd.patch \ + %D%/packages/patches/gdb-9.2-sim-ppc-fno-common.patch \ %D%/packages/patches/gd-fix-tests-on-i686.patch \ %D%/packages/patches/gd-brect-bounds.patch \ %D%/packages/patches/gd-Revert-fix-303-gdlib.pc-use-Requires-instead-of-Libs.patch \ diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 24b7c00dbd..543beee8da 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -145,6 +145,7 @@ written in C, C++, Ada, Objective-C, Pascal and more.") (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.xz")) + (patches (search-patches "gdb-9.2-sim-ppc-fno-common.patch")) (sha256 (base32 "0mf5fn8v937qwnal4ykn3ji1y2sxk0fa1yfqi679hxmpg6pdf31n")))) diff --git a/gnu/packages/patches/gdb-9.2-sim-ppc-fno-common.patch b/gnu/packages/patches/gdb-9.2-sim-ppc-fno-common.patch new file mode 100644 index 0000000000..dae126f7d3 --- /dev/null +++ b/gnu/packages/patches/gdb-9.2-sim-ppc-fno-common.patch @@ -0,0 +1,123 @@ +From a2d12a56679db64d96e02a65933b2911f14c52a2 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. + +(cherry picked from commit ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0) +--- + +This patch is a trivial backport from the upstream commit mentioned above. +Only the ChangeLog had to be adapted. + + sim/ppc/ChangeLog | 13 +++++++++++++ + sim/ppc/ld-insn.c | 18 ++++++++++++++++++ + sim/ppc/ld-insn.h | 24 +++++++----------------- + 3 files changed, 38 insertions(+), 17 deletions(-) + +diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog +index 665c7606d9eb..8f7150cee6b9 100644 +--- a/sim/ppc/ChangeLog ++++ b/sim/ppc/ChangeLog +@@ -1,3 +1,16 @@ ++2020-07-03 Sebastian Huber <sebastian.huber@embedded-brains.de> ++ ++ * 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. ++ + 2019-01-26 Tom Tromey <tom@tromey.com> + + * Makefile.in (version.c): Use sim's create-version.sh. +diff --git a/sim/ppc/ld-insn.c b/sim/ppc/ld-insn.c +index e39131ca1334..585071a861ff 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 88318ffa2b34..52baeaa2d846 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, |