)]}'
{
  "commit": "3f61a38b5e81569357bd15fbcf7fcb1dab3ee2db",
  "tree": "d69be4a54b6dd13e8f2bd8f8acf2ee51ce13752c",
  "parents": [
    "e90210d9bb2776f4e8cf29d36b3b190dfa1b4e6d"
  ],
  "author": {
    "name": "Nelson Chu",
    "email": "nelson@rivosinc.com",
    "time": "Thu Feb 06 21:47:37 2025 +0800"
  },
  "committer": {
    "name": "Nelson Chu",
    "email": "nelson@rivosinc.com",
    "time": "Tue Feb 11 14:30:39 2025 +0800"
  },
  "message": "RISC-V: Move all global static target stuff into private data for disassembler.\n\nI got a request said that the JDK multi-thread compiler may be broken\nif two or more threads are trying to print/disassemble stuff, and filling\nthe disassemble_info, setting callbacks, and grabbing the function pointer\nto disasm at the same time.  Since such as the target global static stuff,\nincluding subset of extensions and mapping symbol stuff, seems to only be\none globally.  Ideally, for dis-assembler, all global static target stuff\nshould/can be better to be defined into the target private data, since they\nare target-dependency.\n\nopcodes/\n\t* riscv-dis.c: Moved all global static target-dependency stuff into\n\triscv_private_data, including architecture and mapping symbol stuff.\n\t(set_default_riscv_dis_options): Updated since global static target-\n\tdependency stuff are moved into riscv_private_data.\n\t(parse_riscv_dis_option_without_args): Likewise.\n\t(parse_riscv_dis_option): Likewise.\n\t(parse_riscv_dis_options): Likewise.\n\t(maybe_print_address): Likewise.\n\t(print_reg_list): Likewise.\n\t(riscv_get_spimm): Likewise.\n\t(print_insn_args): Likewise.\n\t(riscv_disassemble_insn): Likewise.\n\t(riscv_update_map_state): Likewise.\n\t(riscv_search_mapping_symbol): Likewise.\n\t(riscv_data_length): Likewise.\n\t(print_insn_riscv): Likewise.  Call the riscv_init_disasm_info before\n\tparsing any disassembler options, since the related stuff are moved\n\tinto riscv_private_data.\n\t(riscv_init_disasm_info): Likewise.  Parse and set the architecture\n\tstring and privileged spec version since riscv_get_disassembler is\n\tno longer needed.\n\t(riscv_get_disassembler): Removed.\n\t(disassemble_free_riscv): Only free the subset_list if\n\triscv_private_data exsits.\n\t* disassemble.c (disassembler): Since riscv_get_disassembler is\n\tremoved, call to print_insn_riscv.\n\t* disassemble.h: Removed extern riscv_get_disassembler.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98de1a772f9ecef6e49a760775261253990cf019",
      "old_mode": 33188,
      "old_path": "opcodes/disassemble.c",
      "new_id": "53ee1ecf38bccaf4a32aa9c431b49f78d9e3f8df",
      "new_mode": 33188,
      "new_path": "opcodes/disassemble.c"
    },
    {
      "type": "modify",
      "old_id": "5fcd45ea5ae8b8fea1c4cb7cbff689880e479ef2",
      "old_mode": 33188,
      "old_path": "opcodes/disassemble.h",
      "new_id": "a6c7d8fb756cd39602da8d4e6905d28355573b0a",
      "new_mode": 33188,
      "new_path": "opcodes/disassemble.h"
    },
    {
      "type": "modify",
      "old_id": "367004d3341e46a5f72253cd70c7c2941912e84d",
      "old_mode": 33188,
      "old_path": "opcodes/riscv-dis.c",
      "new_id": "d67b2c2aaf034101e9df173f5da7678c5ecee6dd",
      "new_mode": 33188,
      "new_path": "opcodes/riscv-dis.c"
    }
  ]
}
