[binutils-gdb] aarch64: Return QLF_ERR for error conditions
Alice Carlotti
acarlotti@sourceware.org
Fri May 15 14:09:43 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=da2fb8e1624ee0e17bb40359d4869de7d5fadacc
commit da2fb8e1624ee0e17bb40359d4869de7d5fadacc
Author: Alice Carlotti <alice.carlotti@arm.com>
Date: Thu Jan 29 12:10:43 2026 +0000
aarch64: Return QLF_ERR for error conditions
In vectype_to_qualifier and get_qualifier_from_partial_encoding, return
AARCH64_OPND_QLF_ERR instead of AARCH64_OPND_QLF_NIL to indicate an
error condition.
Diff:
---
gas/config/tc-aarch64.c | 16 ++++++++++------
opcodes/aarch64-dis.c | 10 +++++-----
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index b851868d3ff..abc351f60b3 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -879,7 +879,7 @@ vectype_to_qualifier (const struct vector_type_el *vectype)
vectype_conversion_fail:
first_error (_("bad vector arrangement type"));
- return AARCH64_OPND_QLF_NIL;
+ return AARCH64_OPND_QLF_ERR;
}
/* Register parsing. */
@@ -4703,7 +4703,7 @@ parse_reg_with_qual (char **str, aarch64_reg_type reg_type,
else
{
*qualifier = vectype_to_qualifier (&vectype);
- if (*qualifier == AARCH64_OPND_QLF_NIL)
+ if (*qualifier == AARCH64_OPND_QLF_ERR)
return NULL;
}
@@ -6974,7 +6974,7 @@ parse_operands (char *str, const aarch64_opcode *opcode)
else
{
info->qualifier = vectype_to_qualifier (&vectype);
- if (info->qualifier == AARCH64_OPND_QLF_NIL)
+ if (info->qualifier == AARCH64_OPND_QLF_ERR)
goto failure;
}
break;
@@ -7067,7 +7067,7 @@ parse_operands (char *str, const aarch64_opcode *opcode)
if (vectype.type == NT_invtype)
goto failure;
info->qualifier = vectype_to_qualifier (&vectype);
- if (info->qualifier == AARCH64_OPND_QLF_NIL)
+ if (info->qualifier == AARCH64_OPND_QLF_ERR)
goto failure;
}
@@ -7197,7 +7197,7 @@ parse_operands (char *str, const aarch64_opcode *opcode)
}
}
info->qualifier = vectype_to_qualifier (&vectype);
- if (info->qualifier == AARCH64_OPND_QLF_NIL)
+ if (info->qualifier == AARCH64_OPND_QLF_ERR)
goto failure;
break;
@@ -8354,7 +8354,11 @@ parse_operands (char *str, const aarch64_opcode *opcode)
if (vectype.type == NT_invtype)
info->qualifier = AARCH64_OPND_QLF_NIL;
else
- info->qualifier = vectype_to_qualifier (&vectype);
+ {
+ info->qualifier = vectype_to_qualifier (&vectype);
+ if (info->qualifier == AARCH64_OPND_QLF_ERR)
+ goto failure;
+ }
break;
case AARCH64_OPND_BARRIER_GCSB:
diff --git a/opcodes/aarch64-dis.c b/opcodes/aarch64-dis.c
index 3395cc3fde1..50f4943afd2 100644
--- a/opcodes/aarch64-dis.c
+++ b/opcodes/aarch64-dis.c
@@ -2512,7 +2512,7 @@ aarch64_ext_plain_shrimm (const aarch64_operand *self, aarch64_opnd_info *info,
constrained field(s). Given the VALUE of such a field or fields, the
qualifiers CANDIDATES and the MASK (indicating which bits are valid for
operand encoding), the function returns the matching qualifier or
- AARCH64_OPND_QLF_NIL if nothing matches.
+ AARCH64_OPND_QLF_ERR if nothing matches.
N.B. CANDIDATES is a group of possible qualifiers that are valid for
one operand; it has a maximum of AARCH64_MAX_QLF_SEQ_NUM qualifiers and
@@ -2535,7 +2535,7 @@ get_qualifier_from_partial_encoding (aarch64_insn value,
if ((standard_value & mask) == (value & mask))
return candidates[i];
}
- return AARCH64_OPND_QLF_NIL;
+ return AARCH64_OPND_QLF_ERR;
}
/* Given a list of qualifier sequences, return all possible valid qualifiers
@@ -2562,7 +2562,6 @@ static int
decode_sizeq (aarch64_inst *inst)
{
int idx;
- enum aarch64_opnd_qualifier qualifier;
aarch64_insn code;
aarch64_insn value, mask;
enum aarch64_field_kind fld_sz;
@@ -2613,9 +2612,10 @@ decode_sizeq (aarch64_inst *inst)
}
#endif /* DEBUG_AARCH64 */
- qualifier = get_qualifier_from_partial_encoding (value, candidates, mask);
+ enum aarch64_opnd_qualifier qualifier
+ = get_qualifier_from_partial_encoding (value, candidates, mask);
- if (qualifier == AARCH64_OPND_QLF_NIL)
+ if (qualifier == AARCH64_OPND_QLF_ERR)
return 0;
inst->operands[idx].qualifier = qualifier;
More information about the Binutils-cvs
mailing list