RISC-V objdump decodes Zcmt table-jump entries
objdump can now decode RISC-V Zcmt table-jump entries, improving disassembly for this feature.
This commit enhances the RISC-V support in objdump by enabling it to decode Zcmt table-jump (JVT) entries. It introduces new fields in the disassembler’s private data structure, functions for handling JVT addresses, and updates the instruction printing logic to annotate JVT targets. This allows for more accurate disassembly of code using the Zcmt extension.
In Details
This change adds support for decoding RISC-V Zcmt table-jump (JVT) entries in opcodes/riscv-dis.c. New fields are added to struct riscv_private_data to store JVT information. Functions like riscv_set_xlen_from_elf, maybe_print_jvt_address, and riscv_disassemble_jvt are introduced to handle JVT parsing and display. The print_insn_args function is modified to annotate JVT targets, and riscv_disassemble_insn now handles Zcmt decoding. The new tests include manually populated RV32 and RV64 JVT tables with and without base symbols, leveraging plain --no-relax linking for address re…
- RISC-V
- An open-standard instruction set architecture (ISA) based on Reduced Instruction Set Computer principles.
- objdump
- A standard utility for displaying information from object files, including disassembly.
- Zcmt
- A RISC-V non-standard extension that provides table-jump instructions, often used for optimized indirect calls or jumps.
- JVT
- Jump Table, a data structure used to implement efficient indirect jumps or calls, often associated with specific compiler or architecture extensions like Zcmt.
- disassembly
- The process of converting machine code (binary instructions) back into human-readable assembly language.
- RV32
- The 32-bit variant of the RISC-V architecture.
- RV64
- The 64-bit variant of the RISC-V architecture.