[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