bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/21446] Incorrect disassembly for msr to dbgdtrtx_el0 in AA


From: cvs-commit at gcc dot gnu.org
Subject: [Bug binutils/21446] Incorrect disassembly for msr to dbgdtrtx_el0 in AArch64
Date: Tue, 15 May 2018 16:21:59 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=21446

--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Tamar Christina
<address@hidden>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=561a72d4ddf825ffaf8e88551e9bd6707cd6c59f

commit 561a72d4ddf825ffaf8e88551e9bd6707cd6c59f
Author: Tamar Christina <address@hidden>
Date:   Tue May 15 16:11:42 2018 +0100

    Modify AArch64 Assembly and disassembly functions to be able to fail and
report why.

    This patch if the first patch in a series to add the ability to add
constraints
    to system registers that an instruction must adhere to in order for the
register
    to be usable with that instruction.

    These constraints can also be used to disambiguate between registers with
the
    same encoding during disassembly.

    This patch adds a new flags entry in the sysreg structures and ensures it
is
    filled in and read out during assembly/disassembly. It also adds the
ability for
    the assemble and disassemble functions to be able to gracefully fail and
re-use
    the existing error reporting infrastructure.

    The return type of these functions are changed to a boolean to denote
success or
    failure and the error structure is passed around to them. This requires
    aarch64-gen changes so a lot of the changes here are just mechanical.

    gas/

        PR binutils/21446
        * config/tc-aarch64.c (parse_sys_reg): Return register flags.
        (parse_operands): Fill in register flags.

    gdb/

        PR binutils/21446
        * aarch64-tdep.c (aarch64_analyze_prologue,
        aarch64_software_single_step, aarch64_displaced_step_copy_insn):
        Indicate not interested in errors.

    include/

        PR binutils/21446
        * opcode/aarch64.h (aarch64_opnd_info): Change sysreg to struct.
        (aarch64_decode_insn): Accept error struct.

    opcodes/

        PR binutils/21446
        * aarch64-asm.h (aarch64_insert_operand, aarch64_##x): Return boolean
        and take error struct.
        * aarch64-asm.c (aarch64_ext_regno, aarch64_ins_reglane,
        aarch64_ins_reglist, aarch64_ins_ldst_reglist,
        aarch64_ins_ldst_reglist_r, aarch64_ins_ldst_elemlist,
        aarch64_ins_advsimd_imm_shift, aarch64_ins_imm, aarch64_ins_imm_half,
        aarch64_ins_advsimd_imm_modified, aarch64_ins_fpimm,
        aarch64_ins_imm_rotate1, aarch64_ins_imm_rotate2, aarch64_ins_fbits,
        aarch64_ins_aimm, aarch64_ins_limm_1, aarch64_ins_limm,
        aarch64_ins_inv_limm, aarch64_ins_ft, aarch64_ins_addr_simple,
        aarch64_ins_addr_regoff, aarch64_ins_addr_offset,
aarch64_ins_addr_simm,
        aarch64_ins_addr_simm10, aarch64_ins_addr_uimm12,
        aarch64_ins_simd_addr_post, aarch64_ins_cond, aarch64_ins_sysreg,
        aarch64_ins_pstatefield, aarch64_ins_sysins_op, aarch64_ins_barrier,
        aarch64_ins_prfop, aarch64_ins_hint, aarch64_ins_reg_extended,
        aarch64_ins_reg_shifted, aarch64_ins_sve_addr_ri_s4xvl,
        aarch64_ins_sve_addr_ri_s6xvl, aarch64_ins_sve_addr_ri_s9xvl,
        aarch64_ins_sve_addr_ri_s4, aarch64_ins_sve_addr_ri_u6,
        aarch64_ins_sve_addr_rr_lsl, aarch64_ins_sve_addr_rz_xtw,
        aarch64_ins_sve_addr_zi_u5, aarch64_ext_sve_addr_zz,
        aarch64_ins_sve_addr_zz_lsl, aarch64_ins_sve_addr_zz_sxtw,
        aarch64_ins_sve_addr_zz_uxtw, aarch64_ins_sve_aimm,
        aarch64_ins_sve_asimm, aarch64_ins_sve_index, aarch64_ins_sve_limm_mov,
        aarch64_ins_sve_quad_index, aarch64_ins_sve_reglist,
        aarch64_ins_sve_scale, aarch64_ins_sve_shlimm, aarch64_ins_sve_shrimm,
        aarch64_ins_sve_float_half_one, aarch64_ins_sve_float_half_two,
        aarch64_ins_sve_float_zero_one, aarch64_opcode_encode): Likewise.
        * aarch64-dis.h (aarch64_extract_operand, aarch64_##x): Likewise.
        * aarch64-dis.c (aarch64_ext_regno, aarch64_ext_reglane,
        aarch64_ext_reglist, aarch64_ext_ldst_reglist,
        aarch64_ext_ldst_reglist_r, aarch64_ext_ldst_elemlist,
        aarch64_ext_advsimd_imm_shift, aarch64_ext_imm, aarch64_ext_imm_half,
        aarch64_ext_advsimd_imm_modified, aarch64_ext_fpimm,
        aarch64_ext_imm_rotate1, aarch64_ext_imm_rotate2, aarch64_ext_fbits,
        aarch64_ext_aimm, aarch64_ext_limm_1, aarch64_ext_limm, decode_limm,
        aarch64_ext_inv_limm, aarch64_ext_ft, aarch64_ext_addr_simple,
        aarch64_ext_addr_regoff, aarch64_ext_addr_offset,
aarch64_ext_addr_simm,
        aarch64_ext_addr_simm10, aarch64_ext_addr_uimm12,
        aarch64_ext_simd_addr_post, aarch64_ext_cond, aarch64_ext_sysreg,
        aarch64_ext_pstatefield, aarch64_ext_sysins_op, aarch64_ext_barrier,
        aarch64_ext_prfop, aarch64_ext_hint, aarch64_ext_reg_extended,
        aarch64_ext_reg_shifted, aarch64_ext_sve_addr_ri_s4xvl,
        aarch64_ext_sve_addr_ri_s6xvl, aarch64_ext_sve_addr_ri_s9xvl,
        aarch64_ext_sve_addr_ri_s4, aarch64_ext_sve_addr_ri_u6,
        aarch64_ext_sve_addr_rr_lsl, aarch64_ext_sve_addr_rz_xtw,
        aarch64_ext_sve_addr_zi_u5, aarch64_ext_sve_addr_zz,
        aarch64_ext_sve_addr_zz_lsl, aarch64_ext_sve_addr_zz_sxtw,
        aarch64_ext_sve_addr_zz_uxtw, aarch64_ext_sve_aimm,
        aarch64_ext_sve_asimm, aarch64_ext_sve_index, aarch64_ext_sve_limm_mov,
        aarch64_ext_sve_quad_index, aarch64_ext_sve_reglist,
        aarch64_ext_sve_scale, aarch64_ext_sve_shlimm, aarch64_ext_sve_shrimm,
        aarch64_ext_sve_float_half_one, aarch64_ext_sve_float_half_two,
        aarch64_ext_sve_float_zero_one, aarch64_opcode_decode): Likewise.
        (determine_disassembling_preference, aarch64_decode_insn,
        print_insn_aarch64_word, print_insn_data): Take errors struct.
        (print_insn_aarch64): Use errors.
        * aarch64-asm-2.c: Regenerate.
        * aarch64-dis-2.c: Regenerate.
        * aarch64-gen.c (print_operand_inserter): Use errors and change type to
        boolean in aarch64_insert_operan.
        (print_operand_extractor): Likewise.
        * aarch64-opc.c (aarch64_print_operand): Use sysreg struct.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]