Unable to build the AArch64 binutils sources with NDEBUG defined
Nick Clifton
nickc@redhat.com
Mon Jan 22 17:08:22 GMT 2024
Hi Andrew,
Sorry for picking on you with an AArch64 build problem,
but you seem to active in the sources at the moment and
this should not be a big issue to solve:
If you build the AArch64 binutils sources with NDEBUG defined,
the assert() function call becomes a no-op and this in turn
leads to some compile time warnings about unused variables.
Since we treat compile time warnings as errors, this means
that the build fails. For example:
$ .../configure --quiet --target=aarch64-linux-gnu CFLAGS="-O2 -g -DNDEBUG"
$ make all-binutils
[...]
opcodes/aarch64-asm.c: In function 'aarch64_ins_sve_strided_reglist':
opcodes/aarch64-asm.c:1328:16: error: unused variable 'mask' [-Werror=unused-variable]
There are a couple more like this.
Fixing them is either a case of replacing the assert() with an "if () return <fail>"
type statement, or marking the variable as possibly unused:
diff --git a/opcodes/aarch64-asm.c b/opcodes/aarch64-asm.c
index 565c4b10559..29e96e244bb 100644
--- a/opcodes/aarch64-asm.c
+++ b/opcodes/aarch64-asm.c
@@ -1325,7 +1325,7 @@ aarch64_ins_sve_strided_reglist (const aarch64_operand *self,
ATTRIBUTE_UNUSED)
{
unsigned int num_regs = get_operand_specific_data (self);
- unsigned int mask = 16 | (16 / num_regs - 1);
+ unsigned int mask ATTRIBUTE_UNUSED = 16 | (16 / num_regs - 1);
unsigned int val = info->reglist.first_regno;
assert ((val & mask) == val);
insert_field (self->fields[0], code, val >> 4, 0);
If you do not have the time to look into this issue, please let me know
and I will fix the problems myself.
Cheers
Nick
More information about the Binutils
mailing list