[PATCH] RISC-V: Move all global static target stuff into private data for disassembler.

Nelson Chu nelson@rivosinc.com
Tue Feb 11 06:39:46 GMT 2025


Thanks Jan, committed.

Nelson

On Fri, Feb 7, 2025 at 4:57 PM Jan Beulich <jbeulich@suse.com> wrote:

> On 06.02.2025 14:47, Nelson Chu wrote:
> > I got a request said that the JDK multi-thread compiler may be broken
> > if two or more threads are trying to print/disassemble stuff, and filling
> > the disassemble_info, setting callbacks, and grabbing the function
> pointer
> > to disasm at the same time.  Since such as the target global static
> stuff,
> > including subset of extensions and mapping symbol stuff, seems to only be
> > one globally.  Ideally, for dis-assembler, all global static target stuff
> > should/can be better to be defined into the target private data, since
> they
> > are target-dependency.
> >
> > opcodes/
> >       * riscv-dis.c: Moved all global static target-dependency stuff into
> >       riscv_private_data, including architecture and mapping symbol
> stuff.
> >       (set_default_riscv_dis_options): Updated since global static
> target-
> >       dependency stuff are moved into riscv_private_data.
> >       (parse_riscv_dis_option_without_args): Likewise.
> >       (parse_riscv_dis_option): Likewise.
> >       (parse_riscv_dis_options): Likewise.
> >       (maybe_print_address): Likewise.
> >       (print_reg_list): Likewise.
> >       (riscv_get_spimm): Likewise.
> >       (print_insn_args): Likewise.
> >       (riscv_disassemble_insn): Likewise.
> >       (riscv_update_map_state): Likewise.
> >       (riscv_search_mapping_symbol): Likewise.
> >       (riscv_data_length): Likewise.
> >       (print_insn_riscv): Likewise.  Call the riscv_init_disasm_info
> before
> >       parsing any disassembler options, since the related stuff are moved
> >       into riscv_private_data.
> >       (riscv_init_disasm_info): Likewise.  Parse and set the architecture
> >       string and privileged spec version since riscv_get_disassembler is
> >       no longer needed.
> >       (riscv_get_disassembler): Removed.
> >       (disassemble_free_riscv): Only free the subset_list if
> >       riscv_private_data exsits.
> >       * disassemble.c (disassembler): Since riscv_get_disassembler is
> >       removed, call to print_insn_riscv.
> >       * disassemble.h: Removed extern riscv_get_disassembler.
> > ---
> >  opcodes/disassemble.c |   2 +-
> >  opcodes/disassemble.h |   1 -
> >  opcodes/riscv-dis.c   | 336 ++++++++++++++++++++++--------------------
> >  3 files changed, 178 insertions(+), 161 deletions(-)
>
> Lgtm, fwiw.
>
> Jan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/binutils/attachments/20250211/0c962be5/attachment.htm>


More information about the Binutils mailing list