0006-sim-ppc-Fix-linker-error-with-fno-common.patch 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. From ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0 Mon Sep 17 00:00:00 2001
  2. From: Sebastian Huber <sebastian.huber@embedded-brains.de>
  3. Date: Wed, 1 Jul 2020 19:29:55 +0200
  4. Subject: [PATCH] sim/ppc: Fix linker error with -fno-common
  5. GCC 10 enables -fno-common by default. This resulted in a multiple
  6. definition linker error since global variables were declared and defined
  7. in a header file:
  8. ld: ld-insn.o:sim/ppc/ld-insn.h:221: multiple definition of
  9. `max_model_fields_len'; igen.o:sim/ppc/ld-insn.h:221: first defined here
  10. sim/ppc
  11. * ld-insn.h (last_model, last_model_data, last_model_function,
  12. last_model_internal, last_model_macro, last_model_static):
  13. Delete.
  14. (max_model_fields_len, model_data, model_functions,
  15. model_internal, model_macros, model_static, models): Declare, but do not
  16. define.
  17. * ld-insn.c (last_model, last_model_data, last_model_function,
  18. last_model_internal, last_model_macro, last_model_static,
  19. max_model_fields_len, model_data, model_functions,
  20. model_internal, model_macros, model_static, models): Define.
  21. Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
  22. Fetch from: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=ad8464f799a4c96c7ab8bdfec3f95846cf54f9b0
  23. ---
  24. sim/ppc/ld-insn.c | 18 ++++++++++++++++++
  25. sim/ppc/ld-insn.h | 24 +++++++-----------------
  26. 2 files changed, 25 insertions(+), 17 deletions(-)
  27. diff --git a/sim/ppc/ld-insn.c b/sim/ppc/ld-insn.c
  28. index e39131ca133..585071a861f 100644
  29. --- a/sim/ppc/ld-insn.c
  30. +++ b/sim/ppc/ld-insn.c
  31. @@ -28,6 +28,24 @@
  32. #include "igen.h"
  33. +static model *last_model;
  34. +
  35. +static insn *last_model_macro;
  36. +static insn *last_model_function;
  37. +static insn *last_model_internal;
  38. +static insn *last_model_static;
  39. +static insn *last_model_data;
  40. +
  41. +model *models;
  42. +
  43. +insn *model_macros;
  44. +insn *model_functions;
  45. +insn *model_internal;
  46. +insn *model_static;
  47. +insn *model_data;
  48. +
  49. +int max_model_fields_len;
  50. +
  51. static void
  52. update_depth(insn_table *entry,
  53. lf *file,
  54. diff --git a/sim/ppc/ld-insn.h b/sim/ppc/ld-insn.h
  55. index 88318ffa2b3..52baeaa2d84 100644
  56. --- a/sim/ppc/ld-insn.h
  57. +++ b/sim/ppc/ld-insn.h
  58. @@ -200,25 +200,15 @@ extern insn_table *load_insn_table
  59. table_include *includes,
  60. cache_table **cache_rules);
  61. -model *models;
  62. -model *last_model;
  63. +extern model *models;
  64. -insn *model_macros;
  65. -insn *last_model_macro;
  66. +extern insn *model_macros;
  67. +extern insn *model_functions;
  68. +extern insn *model_internal;
  69. +extern insn *model_static;
  70. +extern insn *model_data;
  71. -insn *model_functions;
  72. -insn *last_model_function;
  73. -
  74. -insn *model_internal;
  75. -insn *last_model_internal;
  76. -
  77. -insn *model_static;
  78. -insn *last_model_static;
  79. -
  80. -insn *model_data;
  81. -insn *last_model_data;
  82. -
  83. -int max_model_fields_len;
  84. +extern int max_model_fields_len;
  85. extern void insn_table_insert_insn
  86. (insn_table *table,
  87. --
  88. 2.18.4