From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2126) id E15B63853818; Mon, 31 Oct 2022 15:08:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E15B63853818 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1667228899; bh=LO/HwYp+5Ja2vPhovvFpzT3zbbFSnLCHNlJCOmz0K40=; h=From:To:Subject:Date:From; b=i/82ap3b8SnUAJHZnCeVEnZbfVLRr2aYBtktI4Ahbiq9iSocsh7DWGG2Vv/K3bIrq Th6WYYQK+GcjOX9G6Frc09dZiFdBEMIzu6ulBCGlEDcSYwSEp9Dr7hTaCCHrbIL1hk H+oVnYspy4cFz4udNpIH+Vf/2wz1XftaNcJwvZ60= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom Tromey To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Inline initialization of gdbarch members X-Act-Checkin: binutils-gdb X-Git-Author: Tom Tromey X-Git-Refname: refs/heads/master X-Git-Oldrev: 86430497337968e6163aef370c6312e7b5ed6504 X-Git-Newrev: 6c8912c64bcbfd109af0500577409690074e9d27 Message-Id: <20221031150819.E15B63853818@sourceware.org> Date: Mon, 31 Oct 2022 15:08:19 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D6c8912c64bcb= fd109af0500577409690074e9d27 commit 6c8912c64bcbfd109af0500577409690074e9d27 Author: Tom Tromey Date: Tue Oct 18 09:48:09 2022 -0600 Inline initialization of gdbarch members =20 This changes gdbarch to use the "predefault" to initialize its members inline. This required changing a couple of the Value instantiations to avoid a use of "gdbarch" during initialization, but on the whole I think this is better -- it removes a hidden ordering dependency. Diff: --- gdb/gdbarch-components.py | 8 +- gdb/gdbarch.c | 290 ++++++++++++++++--------------------------= ---- gdb/gdbarch.py | 19 +-- 3 files changed, 111 insertions(+), 206 deletions(-) diff --git a/gdb/gdbarch-components.py b/gdb/gdbarch-components.py index 46e7565f293..c997a709cbb 100644 --- a/gdb/gdbarch-components.py +++ b/gdb/gdbarch-components.py @@ -151,7 +151,7 @@ Number of bits in a short or unsigned short for the tar= get machine. invalid=3DFalse, ) =20 -Value( +int_bit =3D Value( comment=3D""" Number of bits in an int or unsigned int for the target machine. """, @@ -161,7 +161,7 @@ Number of bits in an int or unsigned int for the target= machine. invalid=3DFalse, ) =20 -Value( +long_bit =3D Value( comment=3D""" Number of bits in a long or unsigned long for the target machine. """, @@ -178,7 +178,7 @@ machine. """, type=3D"int", name=3D"long_long_bit", - predefault=3D"2*gdbarch->long_bit", + predefault=3D"2*" + long_bit.predefault, invalid=3DFalse, ) =20 @@ -314,7 +314,7 @@ ptr_bit is the size of a pointer on the target """, type=3D"int", name=3D"ptr_bit", - predefault=3D"gdbarch->int_bit", + predefault=3Dint_bit.predefault, invalid=3DFalse, ) =20 diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index a096f2a9c2c..6ff4fee5b3f 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -52,124 +52,124 @@ struct gdbarch unsigned nr_data =3D 0; void **data =3D nullptr; =20 - int short_bit =3D 0; - int int_bit =3D 0; - int long_bit =3D 0; - int long_long_bit =3D 0; - int bfloat16_bit =3D 0; + int short_bit =3D 2*TARGET_CHAR_BIT; + int int_bit =3D 4*TARGET_CHAR_BIT; + int long_bit =3D 4*TARGET_CHAR_BIT; + int long_long_bit =3D 2*4*TARGET_CHAR_BIT; + int bfloat16_bit =3D 2*TARGET_CHAR_BIT; const struct floatformat ** bfloat16_format =3D 0; - int half_bit =3D 0; + int half_bit =3D 2*TARGET_CHAR_BIT; const struct floatformat ** half_format =3D 0; - int float_bit =3D 0; + int float_bit =3D 4*TARGET_CHAR_BIT; const struct floatformat ** float_format =3D 0; - int double_bit =3D 0; + int double_bit =3D 8*TARGET_CHAR_BIT; const struct floatformat ** double_format =3D 0; - int long_double_bit =3D 0; + int long_double_bit =3D 8*TARGET_CHAR_BIT; const struct floatformat ** long_double_format =3D 0; - int wchar_bit =3D 0; - int wchar_signed =3D 0; - gdbarch_floatformat_for_type_ftype *floatformat_for_type =3D nullptr; - int ptr_bit =3D 0; + int wchar_bit =3D 4*TARGET_CHAR_BIT; + int wchar_signed =3D -1; + gdbarch_floatformat_for_type_ftype *floatformat_for_type =3D default_flo= atformat_for_type; + int ptr_bit =3D 4*TARGET_CHAR_BIT; int addr_bit =3D 0; int dwarf2_addr_size =3D 0; - int char_signed =3D 0; + int char_signed =3D -1; gdbarch_read_pc_ftype *read_pc =3D nullptr; gdbarch_write_pc_ftype *write_pc =3D nullptr; - gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer =3D nullptr; + gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer =3D legacy_vi= rtual_frame_pointer; gdbarch_pseudo_register_read_ftype *pseudo_register_read =3D nullptr; gdbarch_pseudo_register_read_value_ftype *pseudo_register_read_value =3D= nullptr; gdbarch_pseudo_register_write_ftype *pseudo_register_write =3D nullptr; - int num_regs =3D 0; + int num_regs =3D -1; int num_pseudo_regs =3D 0; gdbarch_ax_pseudo_register_collect_ftype *ax_pseudo_register_collect =3D= nullptr; gdbarch_ax_pseudo_register_push_stack_ftype *ax_pseudo_register_push_sta= ck =3D nullptr; gdbarch_report_signal_info_ftype *report_signal_info =3D nullptr; - int sp_regnum =3D 0; - int pc_regnum =3D 0; - int ps_regnum =3D 0; - int fp0_regnum =3D 0; - gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum =3D nullptr; - gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum =3D nullptr; - gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum =3D nullptr; - gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum =3D nullptr; - gdbarch_register_name_ftype *register_name =3D nullptr; + int sp_regnum =3D -1; + int pc_regnum =3D -1; + int ps_regnum =3D -1; + int fp0_regnum =3D -1; + gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum =3D no_op_reg_to_re= gnum; + gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum =3D no_op_reg_to_= regnum; + gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum =3D no_op_reg_to_regn= um; + gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum =3D no_op_reg_t= o_regnum; + gdbarch_register_name_ftype *register_name =3D 0; gdbarch_register_type_ftype *register_type =3D nullptr; - gdbarch_dummy_id_ftype *dummy_id =3D nullptr; - int deprecated_fp_regnum =3D 0; + gdbarch_dummy_id_ftype *dummy_id =3D default_dummy_id; + int deprecated_fp_regnum =3D -1; gdbarch_push_dummy_call_ftype *push_dummy_call =3D nullptr; - int call_dummy_location =3D 0; + int call_dummy_location =3D AT_ENTRY_POINT; gdbarch_push_dummy_code_ftype *push_dummy_code =3D nullptr; - gdbarch_code_of_frame_writable_ftype *code_of_frame_writable =3D nullptr; - gdbarch_print_registers_info_ftype *print_registers_info =3D nullptr; - gdbarch_print_float_info_ftype *print_float_info =3D nullptr; + gdbarch_code_of_frame_writable_ftype *code_of_frame_writable =3D default= _code_of_frame_writable; + gdbarch_print_registers_info_ftype *print_registers_info =3D default_pri= nt_registers_info; + gdbarch_print_float_info_ftype *print_float_info =3D default_print_float= _info; gdbarch_print_vector_info_ftype *print_vector_info =3D nullptr; - gdbarch_register_sim_regno_ftype *register_sim_regno =3D nullptr; - gdbarch_cannot_fetch_register_ftype *cannot_fetch_register =3D nullptr; - gdbarch_cannot_store_register_ftype *cannot_store_register =3D nullptr; + gdbarch_register_sim_regno_ftype *register_sim_regno =3D legacy_register= _sim_regno; + gdbarch_cannot_fetch_register_ftype *cannot_fetch_register =3D cannot_re= gister_not; + gdbarch_cannot_store_register_ftype *cannot_store_register =3D cannot_re= gister_not; gdbarch_get_longjmp_target_ftype *get_longjmp_target =3D nullptr; int believe_pcc_promotion =3D 0; - gdbarch_convert_register_p_ftype *convert_register_p =3D nullptr; + gdbarch_convert_register_p_ftype *convert_register_p =3D generic_convert= _register_p; gdbarch_register_to_value_ftype *register_to_value =3D nullptr; gdbarch_value_to_register_ftype *value_to_register =3D nullptr; - gdbarch_value_from_register_ftype *value_from_register =3D nullptr; - gdbarch_pointer_to_address_ftype *pointer_to_address =3D nullptr; - gdbarch_address_to_pointer_ftype *address_to_pointer =3D nullptr; + gdbarch_value_from_register_ftype *value_from_register =3D default_value= _from_register; + gdbarch_pointer_to_address_ftype *pointer_to_address =3D unsigned_pointe= r_to_address; + gdbarch_address_to_pointer_ftype *address_to_pointer =3D unsigned_addres= s_to_pointer; gdbarch_integer_to_address_ftype *integer_to_address =3D nullptr; gdbarch_return_value_ftype *return_value =3D nullptr; - gdbarch_return_in_first_hidden_param_p_ftype *return_in_first_hidden_par= am_p =3D nullptr; - gdbarch_skip_prologue_ftype *skip_prologue =3D nullptr; + gdbarch_return_in_first_hidden_param_p_ftype *return_in_first_hidden_par= am_p =3D default_return_in_first_hidden_param_p; + gdbarch_skip_prologue_ftype *skip_prologue =3D 0; gdbarch_skip_main_prologue_ftype *skip_main_prologue =3D nullptr; gdbarch_skip_entrypoint_ftype *skip_entrypoint =3D nullptr; - gdbarch_inner_than_ftype *inner_than =3D nullptr; - gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc =3D nullptr; - gdbarch_breakpoint_kind_from_pc_ftype *breakpoint_kind_from_pc =3D nullp= tr; - gdbarch_sw_breakpoint_from_kind_ftype *sw_breakpoint_from_kind =3D nullp= tr; - gdbarch_breakpoint_kind_from_current_state_ftype *breakpoint_kind_from_c= urrent_state =3D nullptr; + gdbarch_inner_than_ftype *inner_than =3D 0; + gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc =3D default_breakpo= int_from_pc; + gdbarch_breakpoint_kind_from_pc_ftype *breakpoint_kind_from_pc =3D 0; + gdbarch_sw_breakpoint_from_kind_ftype *sw_breakpoint_from_kind =3D NULL; + gdbarch_breakpoint_kind_from_current_state_ftype *breakpoint_kind_from_c= urrent_state =3D default_breakpoint_kind_from_current_state; gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address =3D n= ullptr; - gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint =3D nul= lptr; - gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint =3D nul= lptr; + gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint =3D def= ault_memory_insert_breakpoint; + gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint =3D def= ault_memory_remove_breakpoint; CORE_ADDR decr_pc_after_break =3D 0; CORE_ADDR deprecated_function_start_offset =3D 0; - gdbarch_remote_register_number_ftype *remote_register_number =3D nullptr; + gdbarch_remote_register_number_ftype *remote_register_number =3D default= _remote_register_number; gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_addre= ss =3D nullptr; gdbarch_get_thread_local_address_ftype *get_thread_local_address =3D nul= lptr; CORE_ADDR frame_args_skip =3D 0; - gdbarch_unwind_pc_ftype *unwind_pc =3D nullptr; - gdbarch_unwind_sp_ftype *unwind_sp =3D nullptr; + gdbarch_unwind_pc_ftype *unwind_pc =3D default_unwind_pc; + gdbarch_unwind_sp_ftype *unwind_sp =3D default_unwind_sp; gdbarch_frame_num_args_ftype *frame_num_args =3D nullptr; gdbarch_frame_align_ftype *frame_align =3D nullptr; - gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr =3D nullp= tr; + gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr =3D defau= lt_stabs_argument_has_addr; int frame_red_zone_size =3D 0; - gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr =3D= nullptr; - gdbarch_addr_bits_remove_ftype *addr_bits_remove =3D nullptr; + gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr =3D= convert_from_func_ptr_addr_identity; + gdbarch_addr_bits_remove_ftype *addr_bits_remove =3D core_addr_identity; int significant_addr_bit =3D 0; - gdbarch_memtag_to_string_ftype *memtag_to_string =3D nullptr; - gdbarch_tagged_address_p_ftype *tagged_address_p =3D nullptr; - gdbarch_memtag_matches_p_ftype *memtag_matches_p =3D nullptr; - gdbarch_set_memtags_ftype *set_memtags =3D nullptr; - gdbarch_get_memtag_ftype *get_memtag =3D nullptr; + gdbarch_memtag_to_string_ftype *memtag_to_string =3D default_memtag_to_s= tring; + gdbarch_tagged_address_p_ftype *tagged_address_p =3D default_tagged_addr= ess_p; + gdbarch_memtag_matches_p_ftype *memtag_matches_p =3D default_memtag_matc= hes_p; + gdbarch_set_memtags_ftype *set_memtags =3D default_set_memtags; + gdbarch_get_memtag_ftype *get_memtag =3D default_get_memtag; CORE_ADDR memtag_granule_size =3D 0; gdbarch_software_single_step_ftype *software_single_step =3D nullptr; gdbarch_single_step_through_delay_ftype *single_step_through_delay =3D n= ullptr; - gdbarch_print_insn_ftype *print_insn =3D nullptr; - gdbarch_skip_trampoline_code_ftype *skip_trampoline_code =3D nullptr; + gdbarch_print_insn_ftype *print_insn =3D default_print_insn; + gdbarch_skip_trampoline_code_ftype *skip_trampoline_code =3D generic_ski= p_trampoline_code; const struct target_so_ops * so_ops =3D 0; - gdbarch_skip_solib_resolver_ftype *skip_solib_resolver =3D nullptr; - gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline =3D= nullptr; - gdbarch_in_indirect_branch_thunk_ftype *in_indirect_branch_thunk =3D nul= lptr; - gdbarch_stack_frame_destroyed_p_ftype *stack_frame_destroyed_p =3D nullp= tr; + gdbarch_skip_solib_resolver_ftype *skip_solib_resolver =3D generic_skip_= solib_resolver; + gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline =3D= generic_in_solib_return_trampoline; + gdbarch_in_indirect_branch_thunk_ftype *in_indirect_branch_thunk =3D def= ault_in_indirect_branch_thunk; + gdbarch_stack_frame_destroyed_p_ftype *stack_frame_destroyed_p =3D gener= ic_stack_frame_destroyed_p; gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special =3D nul= lptr; - gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special =3D n= ullptr; - gdbarch_make_symbol_special_ftype *make_symbol_special =3D nullptr; - gdbarch_adjust_dwarf2_addr_ftype *adjust_dwarf2_addr =3D nullptr; - gdbarch_adjust_dwarf2_line_ftype *adjust_dwarf2_line =3D nullptr; + gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special =3D d= efault_coff_make_msymbol_special; + gdbarch_make_symbol_special_ftype *make_symbol_special =3D default_make_= symbol_special; + gdbarch_adjust_dwarf2_addr_ftype *adjust_dwarf2_addr =3D default_adjust_= dwarf2_addr; + gdbarch_adjust_dwarf2_line_ftype *adjust_dwarf2_line =3D default_adjust_= dwarf2_line; int cannot_step_breakpoint =3D 0; int have_nonsteppable_watchpoint =3D 0; gdbarch_address_class_type_flags_ftype *address_class_type_flags =3D nul= lptr; gdbarch_address_class_type_flags_to_name_ftype *address_class_type_flags= _to_name =3D nullptr; - gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op = =3D nullptr; + gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op = =3D default_execute_dwarf_cfa_vendor_op; gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_ty= pe_flags =3D nullptr; - gdbarch_register_reggroup_p_ftype *register_reggroup_p =3D nullptr; + gdbarch_register_reggroup_p_ftype *register_reggroup_p =3D default_regis= ter_reggroup_p; gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument =3D nullptr; gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections= =3D nullptr; gdbarch_make_corefile_notes_ftype *make_corefile_notes =3D nullptr; @@ -185,16 +185,16 @@ struct gdbarch const char * gcore_bfd_target =3D 0; int vtable_function_descriptors =3D 0; int vbit_in_delta =3D 0; - gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint =3D n= ullptr; + gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint =3D d= efault_skip_permanent_breakpoint; ULONGEST max_insn_length =3D 0; gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn =3D nul= lptr; - gdbarch_displaced_step_hw_singlestep_ftype *displaced_step_hw_singlestep= =3D nullptr; - gdbarch_displaced_step_fixup_ftype *displaced_step_fixup =3D nullptr; + gdbarch_displaced_step_hw_singlestep_ftype *displaced_step_hw_singlestep= =3D default_displaced_step_hw_singlestep; + gdbarch_displaced_step_fixup_ftype *displaced_step_fixup =3D NULL; gdbarch_displaced_step_prepare_ftype *displaced_step_prepare =3D nullptr; - gdbarch_displaced_step_finish_ftype *displaced_step_finish =3D nullptr; + gdbarch_displaced_step_finish_ftype *displaced_step_finish =3D NULL; gdbarch_displaced_step_copy_insn_closure_by_addr_ftype *displaced_step_c= opy_insn_closure_by_addr =3D nullptr; gdbarch_displaced_step_restore_all_in_ptid_ftype *displaced_step_restore= _all_in_ptid =3D nullptr; - gdbarch_relocate_instruction_ftype *relocate_instruction =3D nullptr; + gdbarch_relocate_instruction_ftype *relocate_instruction =3D NULL; gdbarch_overlay_update_ftype *overlay_update =3D nullptr; gdbarch_core_read_description_ftype *core_read_description =3D nullptr; int sofun_address_maybe_missing =3D 0; @@ -224,36 +224,36 @@ struct gdbarch gdbarch_dtrace_disable_probe_ftype *dtrace_disable_probe =3D nullptr; int has_global_solist =3D 0; int has_global_breakpoints =3D 0; - gdbarch_has_shared_address_space_ftype *has_shared_address_space =3D nul= lptr; - gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at =3D nul= lptr; - gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers =3D= nullptr; - gdbarch_auto_charset_ftype *auto_charset =3D nullptr; - gdbarch_auto_wide_charset_ftype *auto_wide_charset =3D nullptr; + gdbarch_has_shared_address_space_ftype *has_shared_address_space =3D def= ault_has_shared_address_space; + gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at =3D def= ault_fast_tracepoint_valid_at; + gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers =3D= default_guess_tracepoint_registers; + gdbarch_auto_charset_ftype *auto_charset =3D default_auto_charset; + gdbarch_auto_wide_charset_ftype *auto_wide_charset =3D default_auto_wide= _charset; const char * solib_symbols_extension =3D 0; int has_dos_based_file_system =3D 0; - gdbarch_gen_return_address_ftype *gen_return_address =3D nullptr; + gdbarch_gen_return_address_ftype *gen_return_address =3D default_gen_ret= urn_address; gdbarch_info_proc_ftype *info_proc =3D nullptr; gdbarch_core_info_proc_ftype *core_info_proc =3D nullptr; - gdbarch_iterate_over_objfiles_in_search_order_ftype *iterate_over_objfil= es_in_search_order =3D nullptr; - struct ravenscar_arch_ops * ravenscar_ops =3D 0; - gdbarch_insn_is_call_ftype *insn_is_call =3D nullptr; - gdbarch_insn_is_ret_ftype *insn_is_ret =3D nullptr; - gdbarch_insn_is_jump_ftype *insn_is_jump =3D nullptr; - gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p =3D n= ullptr; + gdbarch_iterate_over_objfiles_in_search_order_ftype *iterate_over_objfil= es_in_search_order =3D default_iterate_over_objfiles_in_search_order; + struct ravenscar_arch_ops * ravenscar_ops =3D NULL; + gdbarch_insn_is_call_ftype *insn_is_call =3D default_insn_is_call; + gdbarch_insn_is_ret_ftype *insn_is_ret =3D default_insn_is_ret; + gdbarch_insn_is_jump_ftype *insn_is_jump =3D default_insn_is_jump; + gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p =3D d= efault_program_breakpoint_here_p; gdbarch_auxv_parse_ftype *auxv_parse =3D nullptr; - gdbarch_print_auxv_entry_ftype *print_auxv_entry =3D nullptr; - gdbarch_vsyscall_range_ftype *vsyscall_range =3D nullptr; - gdbarch_infcall_mmap_ftype *infcall_mmap =3D nullptr; - gdbarch_infcall_munmap_ftype *infcall_munmap =3D nullptr; - gdbarch_gcc_target_options_ftype *gcc_target_options =3D nullptr; - gdbarch_gnu_triplet_regexp_ftype *gnu_triplet_regexp =3D nullptr; - gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size= =3D nullptr; + gdbarch_print_auxv_entry_ftype *print_auxv_entry =3D default_print_auxv_= entry; + gdbarch_vsyscall_range_ftype *vsyscall_range =3D default_vsyscall_range; + gdbarch_infcall_mmap_ftype *infcall_mmap =3D default_infcall_mmap; + gdbarch_infcall_munmap_ftype *infcall_munmap =3D default_infcall_munmap; + gdbarch_gcc_target_options_ftype *gcc_target_options =3D default_gcc_tar= get_options; + gdbarch_gnu_triplet_regexp_ftype *gnu_triplet_regexp =3D default_gnu_tri= plet_regexp; + gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size= =3D default_addressable_memory_unit_size; const char * disassembler_options_implicit =3D 0; char ** disassembler_options =3D 0; const disasm_options_and_args_t * valid_disassembler_options =3D 0; - gdbarch_type_align_ftype *type_align =3D nullptr; - gdbarch_get_pc_address_flags_ftype *get_pc_address_flags =3D nullptr; - gdbarch_read_core_file_mappings_ftype *read_core_file_mappings =3D nullp= tr; + gdbarch_type_align_ftype *type_align =3D default_type_align; + gdbarch_get_pc_address_flags_ftype *get_pc_address_flags =3D default_get= _pc_address_flags; + gdbarch_read_core_file_mappings_ftype *read_core_file_mappings =3D defau= lt_read_core_file_mappings; }; =20 /* Create a new ``struct gdbarch'' based on information provided by @@ -275,102 +275,6 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->osabi =3D info->osabi; gdbarch->target_desc =3D info->target_desc; =20 - /* Force the explicit initialization of these. */ - gdbarch->short_bit =3D 2*TARGET_CHAR_BIT; - gdbarch->int_bit =3D 4*TARGET_CHAR_BIT; - gdbarch->long_bit =3D 4*TARGET_CHAR_BIT; - gdbarch->long_long_bit =3D 2*gdbarch->long_bit; - gdbarch->bfloat16_bit =3D 2*TARGET_CHAR_BIT; - gdbarch->half_bit =3D 2*TARGET_CHAR_BIT; - gdbarch->float_bit =3D 4*TARGET_CHAR_BIT; - gdbarch->double_bit =3D 8*TARGET_CHAR_BIT; - gdbarch->long_double_bit =3D 8*TARGET_CHAR_BIT; - gdbarch->wchar_bit =3D 4*TARGET_CHAR_BIT; - gdbarch->wchar_signed =3D -1; - gdbarch->floatformat_for_type =3D default_floatformat_for_type; - gdbarch->ptr_bit =3D gdbarch->int_bit; - gdbarch->char_signed =3D -1; - gdbarch->virtual_frame_pointer =3D legacy_virtual_frame_pointer; - gdbarch->num_regs =3D -1; - gdbarch->sp_regnum =3D -1; - gdbarch->pc_regnum =3D -1; - gdbarch->ps_regnum =3D -1; - gdbarch->fp0_regnum =3D -1; - gdbarch->stab_reg_to_regnum =3D no_op_reg_to_regnum; - gdbarch->ecoff_reg_to_regnum =3D no_op_reg_to_regnum; - gdbarch->sdb_reg_to_regnum =3D no_op_reg_to_regnum; - gdbarch->dwarf2_reg_to_regnum =3D no_op_reg_to_regnum; - gdbarch->dummy_id =3D default_dummy_id; - gdbarch->deprecated_fp_regnum =3D -1; - gdbarch->call_dummy_location =3D AT_ENTRY_POINT; - gdbarch->code_of_frame_writable =3D default_code_of_frame_writable; - gdbarch->print_registers_info =3D default_print_registers_info; - gdbarch->print_float_info =3D default_print_float_info; - gdbarch->register_sim_regno =3D legacy_register_sim_regno; - gdbarch->cannot_fetch_register =3D cannot_register_not; - gdbarch->cannot_store_register =3D cannot_register_not; - gdbarch->convert_register_p =3D generic_convert_register_p; - gdbarch->value_from_register =3D default_value_from_register; - gdbarch->pointer_to_address =3D unsigned_pointer_to_address; - gdbarch->address_to_pointer =3D unsigned_address_to_pointer; - gdbarch->return_in_first_hidden_param_p =3D default_return_in_first_hidd= en_param_p; - gdbarch->breakpoint_from_pc =3D default_breakpoint_from_pc; - gdbarch->sw_breakpoint_from_kind =3D NULL; - gdbarch->breakpoint_kind_from_current_state =3D default_breakpoint_kind_= from_current_state; - gdbarch->memory_insert_breakpoint =3D default_memory_insert_breakpoint; - gdbarch->memory_remove_breakpoint =3D default_memory_remove_breakpoint; - gdbarch->remote_register_number =3D default_remote_register_number; - gdbarch->unwind_pc =3D default_unwind_pc; - gdbarch->unwind_sp =3D default_unwind_sp; - gdbarch->stabs_argument_has_addr =3D default_stabs_argument_has_addr; - gdbarch->convert_from_func_ptr_addr =3D convert_from_func_ptr_addr_ident= ity; - gdbarch->addr_bits_remove =3D core_addr_identity; - gdbarch->memtag_to_string =3D default_memtag_to_string; - gdbarch->tagged_address_p =3D default_tagged_address_p; - gdbarch->memtag_matches_p =3D default_memtag_matches_p; - gdbarch->set_memtags =3D default_set_memtags; - gdbarch->get_memtag =3D default_get_memtag; - gdbarch->print_insn =3D default_print_insn; - gdbarch->skip_trampoline_code =3D generic_skip_trampoline_code; - gdbarch->skip_solib_resolver =3D generic_skip_solib_resolver; - gdbarch->in_solib_return_trampoline =3D generic_in_solib_return_trampoli= ne; - gdbarch->in_indirect_branch_thunk =3D default_in_indirect_branch_thunk; - gdbarch->stack_frame_destroyed_p =3D generic_stack_frame_destroyed_p; - gdbarch->coff_make_msymbol_special =3D default_coff_make_msymbol_special; - gdbarch->make_symbol_special =3D default_make_symbol_special; - gdbarch->adjust_dwarf2_addr =3D default_adjust_dwarf2_addr; - gdbarch->adjust_dwarf2_line =3D default_adjust_dwarf2_line; - gdbarch->execute_dwarf_cfa_vendor_op =3D default_execute_dwarf_cfa_vendo= r_op; - gdbarch->register_reggroup_p =3D default_register_reggroup_p; - gdbarch->skip_permanent_breakpoint =3D default_skip_permanent_breakpoint; - gdbarch->displaced_step_hw_singlestep =3D default_displaced_step_hw_sing= lestep; - gdbarch->displaced_step_fixup =3D NULL; - gdbarch->displaced_step_finish =3D NULL; - gdbarch->relocate_instruction =3D NULL; - gdbarch->has_shared_address_space =3D default_has_shared_address_space; - gdbarch->fast_tracepoint_valid_at =3D default_fast_tracepoint_valid_at; - gdbarch->guess_tracepoint_registers =3D default_guess_tracepoint_registe= rs; - gdbarch->auto_charset =3D default_auto_charset; - gdbarch->auto_wide_charset =3D default_auto_wide_charset; - gdbarch->gen_return_address =3D default_gen_return_address; - gdbarch->iterate_over_objfiles_in_search_order =3D default_iterate_over_= objfiles_in_search_order; - gdbarch->ravenscar_ops =3D NULL; - gdbarch->insn_is_call =3D default_insn_is_call; - gdbarch->insn_is_ret =3D default_insn_is_ret; - gdbarch->insn_is_jump =3D default_insn_is_jump; - gdbarch->program_breakpoint_here_p =3D default_program_breakpoint_here_p; - gdbarch->print_auxv_entry =3D default_print_auxv_entry; - gdbarch->vsyscall_range =3D default_vsyscall_range; - gdbarch->infcall_mmap =3D default_infcall_mmap; - gdbarch->infcall_munmap =3D default_infcall_munmap; - gdbarch->gcc_target_options =3D default_gcc_target_options; - gdbarch->gnu_triplet_regexp =3D default_gnu_triplet_regexp; - gdbarch->addressable_memory_unit_size =3D default_addressable_memory_uni= t_size; - gdbarch->type_align =3D default_type_align; - gdbarch->get_pc_address_flags =3D default_get_pc_address_flags; - gdbarch->read_core_file_mappings =3D default_read_core_file_mappings; - /* gdbarch_alloc() */ - return gdbarch; } =20 diff --git a/gdb/gdbarch.py b/gdb/gdbarch.py index ae8a3f73fd6..a4c1818b0c0 100755 --- a/gdb/gdbarch.py +++ b/gdb/gdbarch.py @@ -286,11 +286,18 @@ with open("gdbarch.c", "w") as f: print(" void **data =3D nullptr;", file=3Df) print(file=3Df) for c in filter(not_info, components): - if isinstance(c, Value): - print(f" {c.type} {c.name} =3D 0;", file=3Df) + if isinstance(c, Function): + print(f" gdbarch_{c.name}_ftype *", file=3Df, end=3D"") + else: + print(f" {c.type} ", file=3Df, end=3D"") + print(f"{c.name} =3D ", file=3Df, end=3D"") + if c.predefault is not None: + print(f"{c.predefault};", file=3Df) + elif isinstance(c, Value): + print("0;", file=3Df) else: assert isinstance(c, Function) - print(f" gdbarch_{c.name}_ftype *{c.name} =3D nullptr;", file= =3Df) + print("nullptr;", file=3Df) print("};", file=3Df) print(file=3Df) # @@ -312,12 +319,6 @@ with open("gdbarch.c", "w") as f: for c in filter(info, components): print(f" gdbarch->{c.name} =3D info->{c.name};", file=3Df) print(file=3Df) - print(" /* Force the explicit initialization of these. */", file=3Df) - for c in filter(not_info, components): - if c.predefault and c.predefault !=3D "0": - print(f" gdbarch->{c.name} =3D {c.predefault};", file=3Df) - print(" /* gdbarch_alloc() */", file=3Df) - print(file=3Df) print(" return gdbarch;", file=3Df) print("}", file=3Df) print(file=3Df)