Fix places in the AArch64 opcodes library code where a call to assert() has side effects.
PR 27129 * aarch64-dis.c (determine_disassembling_preference): Move call to aarch64_match_operands_constraint outside of the assertion. * aarch64-asm.c (aarch64_ins_limm_1): Remove call to assert. Replace with a return of FALSE.
This commit is contained in:
parent
fb932b57cb
commit
e84c871648
@ -1,5 +1,11 @@
|
||||
2021-01-08 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 27129
|
||||
* aarch64-dis.c (determine_disassembling_preference): Move call to
|
||||
aarch64_match_operands_constraint outside of the assertion.
|
||||
* aarch64-asm.c (aarch64_ins_limm_1): Remove call to assert.
|
||||
Replace with a return of FALSE.
|
||||
|
||||
PR 27139
|
||||
* aarch64-opc.c (aarch64_sys_regs): Treat id_aa64mmfr2_el1 as a
|
||||
core system register.
|
||||
|
@ -545,18 +545,19 @@ aarch64_ins_limm_1 (const aarch64_operand *self,
|
||||
const aarch64_inst *inst, bfd_boolean invert_p,
|
||||
aarch64_operand_error *errors ATTRIBUTE_UNUSED)
|
||||
{
|
||||
bfd_boolean res;
|
||||
aarch64_insn value;
|
||||
uint64_t imm = info->imm.value;
|
||||
int esize = aarch64_get_qualifier_esize (inst->operands[0].qualifier);
|
||||
|
||||
if (invert_p)
|
||||
imm = ~imm;
|
||||
/* The constraint check should have guaranteed this wouldn't happen. */
|
||||
assert (aarch64_logical_immediate_p (imm, esize, &value));
|
||||
|
||||
insert_fields (code, value, 0, 3, self->fields[2], self->fields[1],
|
||||
self->fields[0]);
|
||||
return TRUE;
|
||||
/* The constraint check should guarantee that this will work. */
|
||||
res = aarch64_logical_immediate_p (imm, esize, &value);
|
||||
if (res)
|
||||
insert_fields (code, value, 0, 3, self->fields[2], self->fields[1],
|
||||
self->fields[0]);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Insert logical/bitmask immediate for e.g. the last operand in
|
||||
|
@ -2729,8 +2729,10 @@ determine_disassembling_preference (struct aarch64_inst *inst,
|
||||
successfully converted to the form of ALIAS. */
|
||||
if (convert_to_alias (©, alias) == 1)
|
||||
{
|
||||
int res;
|
||||
aarch64_replace_opcode (©, alias);
|
||||
assert (aarch64_match_operands_constraint (©, NULL));
|
||||
res = aarch64_match_operands_constraint (©, NULL);
|
||||
assert (res == 1);
|
||||
DEBUG_TRACE ("succeed with %s via conversion", alias->name);
|
||||
memcpy (inst, ©, sizeof (aarch64_inst));
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user