From 3a337a86d9d273b5da57b1cd8ecec4baa7e95e33 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Tue, 28 Sep 2021 22:11:42 +0100 Subject: opcodes/riscv: add disassembler options support to libopcodes In preparation for the next commit, which will add GDB support for RISC-V disassembler options, this commit restructures how the disassembler options are managed within libopcodes. The implementation provided here is based on this mailing list patch which was never committed: https://sourceware.org/pipermail/binutils/2021-January/114944.html which in turn took inspiration from the MIPS implementation of the same feature. The biggest changes from the original mailing list post are: 1. The GDB changes have been split into a separate patch, and 2. The `riscv_option_args_privspec` variable, which held the valid priv-spec values is now gone, instead we use the `riscv_priv_specs` array from bfd/cpu-riscv.c instead. Co-authored-by: Simon Cook include/ChangeLog: * dis-asm.h (disassembler_options_riscv): Declare. opcodes/ChangeLog: * riscv-dis.c (enum riscv_option_arg_t): New enum typedef. (riscv_options): New static global. (disassembler_options_riscv): New function. (print_riscv_disassembler_options): Rewrite to use disassembler_options_riscv. --- include/ChangeLog | 5 +++++ include/dis-asm.h | 1 + 2 files changed, 6 insertions(+) (limited to 'include') diff --git a/include/ChangeLog b/include/ChangeLog index 5248323..c0486e9 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2021-11-25 Andrew Burgess + Simon Cook + + * dis-asm.h (disassembler_options_riscv): Declare. + 2021-11-16 Fangrui Song * elf/common.h (DT_ENCODING): Bump to 38. diff --git a/include/dis-asm.h b/include/dis-asm.h index c0bc1d5..81cefb9 100644 --- a/include/dis-asm.h +++ b/include/dis-asm.h @@ -320,6 +320,7 @@ extern const disasm_options_and_args_t *disassembler_options_arc (void); extern const disasm_options_and_args_t *disassembler_options_arm (void); extern const disasm_options_and_args_t *disassembler_options_mips (void); extern const disasm_options_and_args_t *disassembler_options_powerpc (void); +extern const disasm_options_and_args_t *disassembler_options_riscv (void); extern const disasm_options_and_args_t *disassembler_options_s390 (void); /* Fetch the disassembler for a given architecture ARC, endianess (big -- cgit v1.1