On 9/7/19 2:18 AM, Ulrich Drepper wrote:
I'll check in the attached patch which implements a disassembler for
RISC-V.  It also fixes a problem in the x86 disassember, exposed through
the additions needed for RISC-V.

Since aside rth, who added the BPF disassembler, no one beside me ever
worked on that code I will push the changes as soon as I can.

There are some binary bz2 files missing at the end of the patch, but if you are committing this yourself that is probably OK.

There is a testfile45.expect.bz2 that doesn't look like it is supposed to be part of the patch set. You probably don't want to commit that one.

There is a testcase for riscv64 but not for riscv32, though the code does look like it correctly handles rv32 versus rv64 decodes. A testcase for rv32 would be a nice improvement.

Otherwise, it looks pretty good at a first glance, and I'm not planning to do a full review. Seems to handle the obvious tricky cases correctly. It doesn't support rv128 or the q (quadfloat) extension, but then I don't know of anyone using them, and binutils probably doesn't handle them correctly either. We have binutils patches for the draft V (vector) and B (bit manipulation) extensions in branches in the github.com riscv repos, but these are still changing instruction mnemonics and encodings, so not ready for official trees yet. We just need to remember that we have another disassembler to update when the V and/or B extensions are finalized. There are also new CSR registers being added regularly, for extensions, and for hardware features like the draft CLIC interrupt controller spec, so that is another thing that will need occasional updates.

Jim

Reply via email to