I have filed a bug [1] for this issue. Hope this could get fixed :-) Best, Xiaolin [1] https://sourceware.org/bugzilla/show_bug.cgi?id=30184 ------------------------------------------------------------------ From:Nelson Chu Send Time:2023年2月21日(星期二) 09:28 To:郑孝林(云矅) Cc:binutils Subject:Re: RISC-V: Should the return value of print_insn_riscv() keep align with other platforms when read_memory_func() returns a non-zero value? It used to be "status", but I accidentally changed it to "1" when porting mapping symbols, so I just changed it back to what it was before. Seems like it should be "-1", but not sure why it was "status" for a long time ago. Thanks Nelson On Mon, Feb 20, 2023 at 6:11 PM Xiaolin Zheng via Binutils wrote: > > Hi, Binutils developers on the RISC-V backend: > Hope this is the right place to send one email to the Binutils mailing list. We have met a small issue [1] in OpenJDK when using the `disassembler()` API in `dis-asm.h` to disassemble. In the RISC-V backend of Binutils, if `read_memory_func` returns a `status`, a non-zero value, after calling `memory_error_func` we will use the `status` variable as the final return value [2], which is different from other platforms that use a `-1` as return value [3] [4] [5] [6]. Although we could have some workaround for this on our side, the question is, should the behavior keep the same as on other platforms? > Best Regards, > Xiaolin > [1] https://github.com/openjdk/jdk/pull/12551 > [2] https://github.com/bminor/binutils-gdb/blob/binutils-2_38-branch/opcodes/riscv-dis.c#L940 > [3] https://github.com/bminor/binutils-gdb/blob/binutils-2_38-branch/opcodes/aarch64-dis.c#L3792 > [4] https://github.com/bminor/binutils-gdb/blob/binutils-2_38-branch/opcodes/ppc-dis.c#L872 > [5] https://github.com/bminor/binutils-gdb/blob/binutils-2_38-branch/opcodes/s390-dis.c#L305 > [6] https://github.com/bminor/binutils-gdb/blob/binutils-2_38-branch/opcodes/i386-dis.c#L9466