| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- From 8ebe62f3f0d27806b1bf69f301f5e188b4acd2b4 Mon Sep 17 00:00:00 2001
- From: Sam James <[email protected]>
- 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.
- ---
- opcodes/i386-gen.c | 2 ++
- opcodes/mips-formats.h | 6 +++---
- opcodes/s390-opc.c | 2 ++
- 3 files changed, 7 insertions(+), 3 deletions(-)
- --- 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;
- --- 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 \
- }; \
- --- 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]))
-
|