|
@@ -0,0 +1,90 @@
|
|
|
+From 8ebe62f3f0d27806b1bf69f301f5e188b4acd2b4 Mon Sep 17 00:00:00 2001
|
|
|
+From: Sam James <sam@gentoo.org>
|
|
|
+Date: Sat, 16 Nov 2024 05:03:52 +0000
|
|
|
+Subject: [PATCH] opcodes: fix -std=gnu23 compatibility wrt static_assert
|
|
|
+
|
|
|
+static_assert is declared in C23 so we can't reuse that identifier:
|
|
|
+* Define our own static_assert conditionally;
|
|
|
+
|
|
|
+* Rename "static assert" hacks to _N as we do already in some places
|
|
|
+ to avoid a conflict.
|
|
|
+
|
|
|
+ChangeLog:
|
|
|
+ PR ld/32372
|
|
|
+
|
|
|
+ * i386-gen.c (static_assert): Define conditionally.
|
|
|
+ * mips-formats.h (MAPPED_INT): Rename identifier.
|
|
|
+ (MAPPED_REG): Rename identifier.
|
|
|
+ (OPTIONAL_MAPPED_REG): Rename identifier.
|
|
|
+ * s390-opc.c (static_assert): Define conditionally.
|
|
|
+
|
|
|
+Upstream: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=8ebe62f3f0d27806b1bf69f301f5e188b4acd2b4
|
|
|
+Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
|
|
|
+---
|
|
|
+ opcodes/i386-gen.c | 2 ++
|
|
|
+ opcodes/mips-formats.h | 6 +++---
|
|
|
+ opcodes/s390-opc.c | 2 ++
|
|
|
+ 3 files changed, 7 insertions(+), 3 deletions(-)
|
|
|
+
|
|
|
+diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
|
|
|
+index 053b66675c5..7ee8a30310c 100644
|
|
|
+--- a/opcodes/i386-gen.c
|
|
|
++++ b/opcodes/i386-gen.c
|
|
|
+@@ -30,7 +30,9 @@
|
|
|
+
|
|
|
+ /* Build-time checks are preferrable over runtime ones. Use this construct
|
|
|
+ in preference where possible. */
|
|
|
++#ifndef static_assert
|
|
|
+ #define static_assert(e) ((void)sizeof (struct { int _:1 - 2 * !(e); }))
|
|
|
++#endif
|
|
|
+
|
|
|
+ static const char *program_name = NULL;
|
|
|
+ static int debug = 0;
|
|
|
+diff --git a/opcodes/mips-formats.h b/opcodes/mips-formats.h
|
|
|
+index 90df7100803..c4dec6352bf 100644
|
|
|
+--- a/opcodes/mips-formats.h
|
|
|
++++ b/opcodes/mips-formats.h
|
|
|
+@@ -49,7 +49,7 @@
|
|
|
+ #define MAPPED_INT(SIZE, LSB, MAP, PRINT_HEX) \
|
|
|
+ { \
|
|
|
+ typedef char ATTRIBUTE_UNUSED \
|
|
|
+- static_assert[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
++ static_assert_3[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
+ static const struct mips_mapped_int_operand op = { \
|
|
|
+ { OP_MAPPED_INT, SIZE, LSB }, MAP, PRINT_HEX \
|
|
|
+ }; \
|
|
|
+@@ -83,7 +83,7 @@
|
|
|
+ #define MAPPED_REG(SIZE, LSB, BANK, MAP) \
|
|
|
+ { \
|
|
|
+ typedef char ATTRIBUTE_UNUSED \
|
|
|
+- static_assert[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
++ static_assert_4[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
+ static const struct mips_reg_operand op = { \
|
|
|
+ { OP_REG, SIZE, LSB }, OP_REG_##BANK, MAP \
|
|
|
+ }; \
|
|
|
+@@ -93,7 +93,7 @@
|
|
|
+ #define OPTIONAL_MAPPED_REG(SIZE, LSB, BANK, MAP) \
|
|
|
+ { \
|
|
|
+ typedef char ATTRIBUTE_UNUSED \
|
|
|
+- static_assert[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
++ static_assert_5[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
|
|
|
+ static const struct mips_reg_operand op = { \
|
|
|
+ { OP_OPTIONAL_REG, SIZE, LSB }, OP_REG_##BANK, MAP \
|
|
|
+ }; \
|
|
|
+diff --git a/opcodes/s390-opc.c b/opcodes/s390-opc.c
|
|
|
+index 9d9f0973e55..49efd714157 100644
|
|
|
+--- a/opcodes/s390-opc.c
|
|
|
++++ b/opcodes/s390-opc.c
|
|
|
+@@ -36,7 +36,9 @@
|
|
|
+
|
|
|
+ /* Build-time checks are preferrable over runtime ones. Use this construct
|
|
|
+ in preference where possible. */
|
|
|
++#ifndef static_assert
|
|
|
+ #define static_assert(e) ((void)sizeof (struct { int _:1 - 2 * !(e); }))
|
|
|
++#endif
|
|
|
+
|
|
|
+ #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
|
|
+
|
|
|
+--
|
|
|
+2.34.1
|
|
|
+
|