From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com [IPv6:2607:f8b0:4864:20::d31]) by sourceware.org (Postfix) with ESMTPS id AE2D23858C83 for ; Tue, 18 Oct 2022 16:15:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AE2D23858C83 Received: by mail-io1-xd31.google.com with SMTP id i65so12187114ioa.0 for ; Tue, 18 Oct 2022 09:15:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g7jGjjahlQ79OKbKKMd4z6FtjPIMzdGvIx1sj2bVWCQ=; b=I5d7xf1fBIF9OTrdDrr5WpwcVcwp5EQJnxupo8LhfyZyyqwWuB5PpHBZChvlh7Heeh 841MIeI7HDx9QuC2+zZOg1legqjTtWLrNHS9j4NykzGNG0kabuPX+XJyQv64HPA3sG/U U5cOXtzFKQG+5cmYcrcpuobaGpQsuSH7m0ug8ly1qxAWbjhJp8fERdDdhLqOslUbpjy8 FSLqoYX6xlAOIu9MGJOm+u3aTb+OvBhLnjAAT4lhAYtKXZwGt8SRg1C9Ps6TKHmyB8FV WnutGAxsYg6SrLut/T+4rW7LX+q3eY/UI3w/bqJNxj5ccTPAfMz/4AXMiKTd1d7N3N1k fkmA== X-Gm-Message-State: ACrzQf2ZNZBS5J4daOvpcQjEPy7rJhTa3CSva3UBd4zXl/xBGRCALzsX R+MNSJ7d9RLReKuZR+F9TiflIFq29rqVHw== X-Google-Smtp-Source: AMsMyM48VTgJYtib6hC5DSDfXARxBAOn1P4m1XIiEsOnZpE6GlnGve98hlc6ZbeRh8uJAGBKRsae8w== X-Received: by 2002:a05:6602:3999:b0:6bc:5179:1f40 with SMTP id bw25-20020a056602399900b006bc51791f40mr1859269iob.93.1666109743872; Tue, 18 Oct 2022 09:15:43 -0700 (PDT) Received: from localhost.localdomain (71-211-181-169.hlrn.qwest.net. [71.211.181.169]) by smtp.gmail.com with ESMTPSA id r11-20020a92d44b000000b002fc165318basm1123514ilm.30.2022.10.18.09.15.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Oct 2022 09:15:43 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 1/2] Inline initialization of gdbarch members Date: Tue, 18 Oct 2022 10:15:32 -0600 Message-Id: <20221018161533.3089756-2-tromey@adacore.com> X-Mailer: git-send-email 2.34.3 In-Reply-To: <20221018161533.3089756-1-tromey@adacore.com> References: <20221018161533.3089756-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Oct 2022 16:15:48 -0000 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. --- 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 target machine. invalid=False, ) -Value( +int_bit = Value( comment=""" 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=False, ) -Value( +long_bit = Value( comment=""" Number of bits in a long or unsigned long for the target machine. """, @@ -178,7 +178,7 @@ machine. """, type="int", name="long_long_bit", - predefault="2*gdbarch->long_bit", + predefault="2*" + long_bit.predefault, invalid=False, ) @@ -314,7 +314,7 @@ ptr_bit is the size of a pointer on the target """, type="int", name="ptr_bit", - predefault="gdbarch->int_bit", + predefault=int_bit.predefault, invalid=False, ) diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 559e92dee58..5545cfdad8e 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -52,124 +52,124 @@ struct gdbarch unsigned nr_data = 0; void **data = nullptr; - int short_bit = 0; - int int_bit = 0; - int long_bit = 0; - int long_long_bit = 0; - int bfloat16_bit = 0; + int short_bit = 2*TARGET_CHAR_BIT; + int int_bit = 4*TARGET_CHAR_BIT; + int long_bit = 4*TARGET_CHAR_BIT; + int long_long_bit = 2*4*TARGET_CHAR_BIT; + int bfloat16_bit = 2*TARGET_CHAR_BIT; const struct floatformat ** bfloat16_format = 0; - int half_bit = 0; + int half_bit = 2*TARGET_CHAR_BIT; const struct floatformat ** half_format = 0; - int float_bit = 0; + int float_bit = 4*TARGET_CHAR_BIT; const struct floatformat ** float_format = 0; - int double_bit = 0; + int double_bit = 8*TARGET_CHAR_BIT; const struct floatformat ** double_format = 0; - int long_double_bit = 0; + int long_double_bit = 8*TARGET_CHAR_BIT; const struct floatformat ** long_double_format = 0; - int wchar_bit = 0; - int wchar_signed = 0; - gdbarch_floatformat_for_type_ftype *floatformat_for_type = nullptr; - int ptr_bit = 0; + int wchar_bit = 4*TARGET_CHAR_BIT; + int wchar_signed = -1; + gdbarch_floatformat_for_type_ftype *floatformat_for_type = default_floatformat_for_type; + int ptr_bit = 4*TARGET_CHAR_BIT; int addr_bit = 0; int dwarf2_addr_size = 0; - int char_signed = 0; + int char_signed = -1; gdbarch_read_pc_ftype *read_pc = nullptr; gdbarch_write_pc_ftype *write_pc = nullptr; - gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer = nullptr; + gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer = legacy_virtual_frame_pointer; gdbarch_pseudo_register_read_ftype *pseudo_register_read = nullptr; gdbarch_pseudo_register_read_value_ftype *pseudo_register_read_value = nullptr; gdbarch_pseudo_register_write_ftype *pseudo_register_write = nullptr; - int num_regs = 0; + int num_regs = -1; int num_pseudo_regs = 0; gdbarch_ax_pseudo_register_collect_ftype *ax_pseudo_register_collect = nullptr; gdbarch_ax_pseudo_register_push_stack_ftype *ax_pseudo_register_push_stack = nullptr; gdbarch_report_signal_info_ftype *report_signal_info = nullptr; - int sp_regnum = 0; - int pc_regnum = 0; - int ps_regnum = 0; - int fp0_regnum = 0; - gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum = nullptr; - gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum = nullptr; - gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum = nullptr; - gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum = nullptr; - gdbarch_register_name_ftype *register_name = nullptr; + int sp_regnum = -1; + int pc_regnum = -1; + int ps_regnum = -1; + int fp0_regnum = -1; + gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum = no_op_reg_to_regnum; + gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum = no_op_reg_to_regnum; + gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum = no_op_reg_to_regnum; + gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum = no_op_reg_to_regnum; + gdbarch_register_name_ftype *register_name = 0; gdbarch_register_type_ftype *register_type = nullptr; - gdbarch_dummy_id_ftype *dummy_id = nullptr; - int deprecated_fp_regnum = 0; + gdbarch_dummy_id_ftype *dummy_id = default_dummy_id; + int deprecated_fp_regnum = -1; gdbarch_push_dummy_call_ftype *push_dummy_call = nullptr; - int call_dummy_location = 0; + int call_dummy_location = AT_ENTRY_POINT; gdbarch_push_dummy_code_ftype *push_dummy_code = nullptr; - gdbarch_code_of_frame_writable_ftype *code_of_frame_writable = nullptr; - gdbarch_print_registers_info_ftype *print_registers_info = nullptr; - gdbarch_print_float_info_ftype *print_float_info = nullptr; + gdbarch_code_of_frame_writable_ftype *code_of_frame_writable = default_code_of_frame_writable; + gdbarch_print_registers_info_ftype *print_registers_info = default_print_registers_info; + gdbarch_print_float_info_ftype *print_float_info = default_print_float_info; gdbarch_print_vector_info_ftype *print_vector_info = nullptr; - gdbarch_register_sim_regno_ftype *register_sim_regno = nullptr; - gdbarch_cannot_fetch_register_ftype *cannot_fetch_register = nullptr; - gdbarch_cannot_store_register_ftype *cannot_store_register = nullptr; + gdbarch_register_sim_regno_ftype *register_sim_regno = legacy_register_sim_regno; + gdbarch_cannot_fetch_register_ftype *cannot_fetch_register = cannot_register_not; + gdbarch_cannot_store_register_ftype *cannot_store_register = cannot_register_not; gdbarch_get_longjmp_target_ftype *get_longjmp_target = nullptr; int believe_pcc_promotion = 0; - gdbarch_convert_register_p_ftype *convert_register_p = nullptr; + gdbarch_convert_register_p_ftype *convert_register_p = generic_convert_register_p; gdbarch_register_to_value_ftype *register_to_value = nullptr; gdbarch_value_to_register_ftype *value_to_register = nullptr; - gdbarch_value_from_register_ftype *value_from_register = nullptr; - gdbarch_pointer_to_address_ftype *pointer_to_address = nullptr; - gdbarch_address_to_pointer_ftype *address_to_pointer = nullptr; + gdbarch_value_from_register_ftype *value_from_register = default_value_from_register; + gdbarch_pointer_to_address_ftype *pointer_to_address = unsigned_pointer_to_address; + gdbarch_address_to_pointer_ftype *address_to_pointer = unsigned_address_to_pointer; gdbarch_integer_to_address_ftype *integer_to_address = nullptr; gdbarch_return_value_ftype *return_value = nullptr; - gdbarch_return_in_first_hidden_param_p_ftype *return_in_first_hidden_param_p = nullptr; - gdbarch_skip_prologue_ftype *skip_prologue = nullptr; + gdbarch_return_in_first_hidden_param_p_ftype *return_in_first_hidden_param_p = default_return_in_first_hidden_param_p; + gdbarch_skip_prologue_ftype *skip_prologue = 0; gdbarch_skip_main_prologue_ftype *skip_main_prologue = nullptr; gdbarch_skip_entrypoint_ftype *skip_entrypoint = nullptr; - gdbarch_inner_than_ftype *inner_than = nullptr; - gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc = nullptr; - gdbarch_breakpoint_kind_from_pc_ftype *breakpoint_kind_from_pc = nullptr; - gdbarch_sw_breakpoint_from_kind_ftype *sw_breakpoint_from_kind = nullptr; - gdbarch_breakpoint_kind_from_current_state_ftype *breakpoint_kind_from_current_state = nullptr; + gdbarch_inner_than_ftype *inner_than = 0; + gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc = default_breakpoint_from_pc; + gdbarch_breakpoint_kind_from_pc_ftype *breakpoint_kind_from_pc = 0; + gdbarch_sw_breakpoint_from_kind_ftype *sw_breakpoint_from_kind = NULL; + gdbarch_breakpoint_kind_from_current_state_ftype *breakpoint_kind_from_current_state = default_breakpoint_kind_from_current_state; gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address = nullptr; - gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint = nullptr; - gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint = nullptr; + gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint = default_memory_insert_breakpoint; + gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint = default_memory_remove_breakpoint; CORE_ADDR decr_pc_after_break = 0; CORE_ADDR deprecated_function_start_offset = 0; - gdbarch_remote_register_number_ftype *remote_register_number = nullptr; + gdbarch_remote_register_number_ftype *remote_register_number = default_remote_register_number; gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address = nullptr; gdbarch_get_thread_local_address_ftype *get_thread_local_address = nullptr; CORE_ADDR frame_args_skip = 0; - gdbarch_unwind_pc_ftype *unwind_pc = nullptr; - gdbarch_unwind_sp_ftype *unwind_sp = nullptr; + gdbarch_unwind_pc_ftype *unwind_pc = default_unwind_pc; + gdbarch_unwind_sp_ftype *unwind_sp = default_unwind_sp; gdbarch_frame_num_args_ftype *frame_num_args = nullptr; gdbarch_frame_align_ftype *frame_align = nullptr; - gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr = nullptr; + gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr = default_stabs_argument_has_addr; int frame_red_zone_size = 0; - gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr = nullptr; - gdbarch_addr_bits_remove_ftype *addr_bits_remove = nullptr; + gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr = convert_from_func_ptr_addr_identity; + gdbarch_addr_bits_remove_ftype *addr_bits_remove = core_addr_identity; int significant_addr_bit = 0; - gdbarch_memtag_to_string_ftype *memtag_to_string = nullptr; - gdbarch_tagged_address_p_ftype *tagged_address_p = nullptr; - gdbarch_memtag_matches_p_ftype *memtag_matches_p = nullptr; - gdbarch_set_memtags_ftype *set_memtags = nullptr; - gdbarch_get_memtag_ftype *get_memtag = nullptr; + gdbarch_memtag_to_string_ftype *memtag_to_string = default_memtag_to_string; + gdbarch_tagged_address_p_ftype *tagged_address_p = default_tagged_address_p; + gdbarch_memtag_matches_p_ftype *memtag_matches_p = default_memtag_matches_p; + gdbarch_set_memtags_ftype *set_memtags = default_set_memtags; + gdbarch_get_memtag_ftype *get_memtag = default_get_memtag; CORE_ADDR memtag_granule_size = 0; gdbarch_software_single_step_ftype *software_single_step = nullptr; gdbarch_single_step_through_delay_ftype *single_step_through_delay = nullptr; - gdbarch_print_insn_ftype *print_insn = nullptr; - gdbarch_skip_trampoline_code_ftype *skip_trampoline_code = nullptr; + gdbarch_print_insn_ftype *print_insn = default_print_insn; + gdbarch_skip_trampoline_code_ftype *skip_trampoline_code = generic_skip_trampoline_code; const struct target_so_ops * so_ops = 0; - gdbarch_skip_solib_resolver_ftype *skip_solib_resolver = nullptr; - gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline = nullptr; - gdbarch_in_indirect_branch_thunk_ftype *in_indirect_branch_thunk = nullptr; - gdbarch_stack_frame_destroyed_p_ftype *stack_frame_destroyed_p = nullptr; + gdbarch_skip_solib_resolver_ftype *skip_solib_resolver = generic_skip_solib_resolver; + gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline = generic_in_solib_return_trampoline; + gdbarch_in_indirect_branch_thunk_ftype *in_indirect_branch_thunk = default_in_indirect_branch_thunk; + gdbarch_stack_frame_destroyed_p_ftype *stack_frame_destroyed_p = generic_stack_frame_destroyed_p; gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special = nullptr; - gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special = nullptr; - gdbarch_make_symbol_special_ftype *make_symbol_special = nullptr; - gdbarch_adjust_dwarf2_addr_ftype *adjust_dwarf2_addr = nullptr; - gdbarch_adjust_dwarf2_line_ftype *adjust_dwarf2_line = nullptr; + gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special = default_coff_make_msymbol_special; + gdbarch_make_symbol_special_ftype *make_symbol_special = default_make_symbol_special; + gdbarch_adjust_dwarf2_addr_ftype *adjust_dwarf2_addr = default_adjust_dwarf2_addr; + gdbarch_adjust_dwarf2_line_ftype *adjust_dwarf2_line = default_adjust_dwarf2_line; int cannot_step_breakpoint = 0; int have_nonsteppable_watchpoint = 0; gdbarch_address_class_type_flags_ftype *address_class_type_flags = nullptr; gdbarch_address_class_type_flags_to_name_ftype *address_class_type_flags_to_name = nullptr; - gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op = nullptr; + gdbarch_execute_dwarf_cfa_vendor_op_ftype *execute_dwarf_cfa_vendor_op = default_execute_dwarf_cfa_vendor_op; gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags = nullptr; - gdbarch_register_reggroup_p_ftype *register_reggroup_p = nullptr; + gdbarch_register_reggroup_p_ftype *register_reggroup_p = default_register_reggroup_p; gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument = nullptr; gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections = nullptr; gdbarch_make_corefile_notes_ftype *make_corefile_notes = nullptr; @@ -185,16 +185,16 @@ struct gdbarch const char * gcore_bfd_target = 0; int vtable_function_descriptors = 0; int vbit_in_delta = 0; - gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint = nullptr; + gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint = default_skip_permanent_breakpoint; ULONGEST max_insn_length = 0; gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn = nullptr; - gdbarch_displaced_step_hw_singlestep_ftype *displaced_step_hw_singlestep = nullptr; - gdbarch_displaced_step_fixup_ftype *displaced_step_fixup = nullptr; + gdbarch_displaced_step_hw_singlestep_ftype *displaced_step_hw_singlestep = default_displaced_step_hw_singlestep; + gdbarch_displaced_step_fixup_ftype *displaced_step_fixup = NULL; gdbarch_displaced_step_prepare_ftype *displaced_step_prepare = nullptr; - gdbarch_displaced_step_finish_ftype *displaced_step_finish = nullptr; + gdbarch_displaced_step_finish_ftype *displaced_step_finish = NULL; gdbarch_displaced_step_copy_insn_closure_by_addr_ftype *displaced_step_copy_insn_closure_by_addr = nullptr; gdbarch_displaced_step_restore_all_in_ptid_ftype *displaced_step_restore_all_in_ptid = nullptr; - gdbarch_relocate_instruction_ftype *relocate_instruction = nullptr; + gdbarch_relocate_instruction_ftype *relocate_instruction = NULL; gdbarch_overlay_update_ftype *overlay_update = nullptr; gdbarch_core_read_description_ftype *core_read_description = nullptr; int sofun_address_maybe_missing = 0; @@ -224,36 +224,36 @@ struct gdbarch gdbarch_dtrace_disable_probe_ftype *dtrace_disable_probe = nullptr; int has_global_solist = 0; int has_global_breakpoints = 0; - gdbarch_has_shared_address_space_ftype *has_shared_address_space = nullptr; - gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at = nullptr; - gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers = nullptr; - gdbarch_auto_charset_ftype *auto_charset = nullptr; - gdbarch_auto_wide_charset_ftype *auto_wide_charset = nullptr; + gdbarch_has_shared_address_space_ftype *has_shared_address_space = default_has_shared_address_space; + gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at = default_fast_tracepoint_valid_at; + gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers = default_guess_tracepoint_registers; + gdbarch_auto_charset_ftype *auto_charset = default_auto_charset; + gdbarch_auto_wide_charset_ftype *auto_wide_charset = default_auto_wide_charset; const char * solib_symbols_extension = 0; int has_dos_based_file_system = 0; - gdbarch_gen_return_address_ftype *gen_return_address = nullptr; + gdbarch_gen_return_address_ftype *gen_return_address = default_gen_return_address; gdbarch_info_proc_ftype *info_proc = nullptr; gdbarch_core_info_proc_ftype *core_info_proc = nullptr; - gdbarch_iterate_over_objfiles_in_search_order_ftype *iterate_over_objfiles_in_search_order = nullptr; - struct ravenscar_arch_ops * ravenscar_ops = 0; - gdbarch_insn_is_call_ftype *insn_is_call = nullptr; - gdbarch_insn_is_ret_ftype *insn_is_ret = nullptr; - gdbarch_insn_is_jump_ftype *insn_is_jump = nullptr; - gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p = nullptr; + gdbarch_iterate_over_objfiles_in_search_order_ftype *iterate_over_objfiles_in_search_order = default_iterate_over_objfiles_in_search_order; + struct ravenscar_arch_ops * ravenscar_ops = NULL; + gdbarch_insn_is_call_ftype *insn_is_call = default_insn_is_call; + gdbarch_insn_is_ret_ftype *insn_is_ret = default_insn_is_ret; + gdbarch_insn_is_jump_ftype *insn_is_jump = default_insn_is_jump; + gdbarch_program_breakpoint_here_p_ftype *program_breakpoint_here_p = default_program_breakpoint_here_p; gdbarch_auxv_parse_ftype *auxv_parse = nullptr; - gdbarch_print_auxv_entry_ftype *print_auxv_entry = nullptr; - gdbarch_vsyscall_range_ftype *vsyscall_range = nullptr; - gdbarch_infcall_mmap_ftype *infcall_mmap = nullptr; - gdbarch_infcall_munmap_ftype *infcall_munmap = nullptr; - gdbarch_gcc_target_options_ftype *gcc_target_options = nullptr; - gdbarch_gnu_triplet_regexp_ftype *gnu_triplet_regexp = nullptr; - gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size = nullptr; + gdbarch_print_auxv_entry_ftype *print_auxv_entry = default_print_auxv_entry; + gdbarch_vsyscall_range_ftype *vsyscall_range = default_vsyscall_range; + gdbarch_infcall_mmap_ftype *infcall_mmap = default_infcall_mmap; + gdbarch_infcall_munmap_ftype *infcall_munmap = default_infcall_munmap; + gdbarch_gcc_target_options_ftype *gcc_target_options = default_gcc_target_options; + gdbarch_gnu_triplet_regexp_ftype *gnu_triplet_regexp = default_gnu_triplet_regexp; + gdbarch_addressable_memory_unit_size_ftype *addressable_memory_unit_size = default_addressable_memory_unit_size; const char * disassembler_options_implicit = 0; char ** disassembler_options = 0; const disasm_options_and_args_t * valid_disassembler_options = 0; - gdbarch_type_align_ftype *type_align = nullptr; - gdbarch_get_pc_address_flags_ftype *get_pc_address_flags = nullptr; - gdbarch_read_core_file_mappings_ftype *read_core_file_mappings = nullptr; + gdbarch_type_align_ftype *type_align = default_type_align; + gdbarch_get_pc_address_flags_ftype *get_pc_address_flags = default_get_pc_address_flags; + gdbarch_read_core_file_mappings_ftype *read_core_file_mappings = default_read_core_file_mappings; }; /* Create a new ``struct gdbarch'' based on information provided by @@ -275,102 +275,6 @@ gdbarch_alloc (const struct gdbarch_info *info, gdbarch->osabi = info->osabi; gdbarch->target_desc = info->target_desc; - /* Force the explicit initialization of these. */ - gdbarch->short_bit = 2*TARGET_CHAR_BIT; - gdbarch->int_bit = 4*TARGET_CHAR_BIT; - gdbarch->long_bit = 4*TARGET_CHAR_BIT; - gdbarch->long_long_bit = 2*gdbarch->long_bit; - gdbarch->bfloat16_bit = 2*TARGET_CHAR_BIT; - gdbarch->half_bit = 2*TARGET_CHAR_BIT; - gdbarch->float_bit = 4*TARGET_CHAR_BIT; - gdbarch->double_bit = 8*TARGET_CHAR_BIT; - gdbarch->long_double_bit = 8*TARGET_CHAR_BIT; - gdbarch->wchar_bit = 4*TARGET_CHAR_BIT; - gdbarch->wchar_signed = -1; - gdbarch->floatformat_for_type = default_floatformat_for_type; - gdbarch->ptr_bit = gdbarch->int_bit; - gdbarch->char_signed = -1; - gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer; - gdbarch->num_regs = -1; - gdbarch->sp_regnum = -1; - gdbarch->pc_regnum = -1; - gdbarch->ps_regnum = -1; - gdbarch->fp0_regnum = -1; - gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum; - gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum; - gdbarch->sdb_reg_to_regnum = no_op_reg_to_regnum; - gdbarch->dwarf2_reg_to_regnum = no_op_reg_to_regnum; - gdbarch->dummy_id = default_dummy_id; - gdbarch->deprecated_fp_regnum = -1; - gdbarch->call_dummy_location = AT_ENTRY_POINT; - gdbarch->code_of_frame_writable = default_code_of_frame_writable; - gdbarch->print_registers_info = default_print_registers_info; - gdbarch->print_float_info = default_print_float_info; - gdbarch->register_sim_regno = legacy_register_sim_regno; - gdbarch->cannot_fetch_register = cannot_register_not; - gdbarch->cannot_store_register = cannot_register_not; - gdbarch->convert_register_p = generic_convert_register_p; - gdbarch->value_from_register = default_value_from_register; - gdbarch->pointer_to_address = unsigned_pointer_to_address; - gdbarch->address_to_pointer = unsigned_address_to_pointer; - gdbarch->return_in_first_hidden_param_p = default_return_in_first_hidden_param_p; - gdbarch->breakpoint_from_pc = default_breakpoint_from_pc; - gdbarch->sw_breakpoint_from_kind = NULL; - gdbarch->breakpoint_kind_from_current_state = default_breakpoint_kind_from_current_state; - gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint; - gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint; - gdbarch->remote_register_number = default_remote_register_number; - gdbarch->unwind_pc = default_unwind_pc; - gdbarch->unwind_sp = default_unwind_sp; - gdbarch->stabs_argument_has_addr = default_stabs_argument_has_addr; - gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr_identity; - gdbarch->addr_bits_remove = core_addr_identity; - gdbarch->memtag_to_string = default_memtag_to_string; - gdbarch->tagged_address_p = default_tagged_address_p; - gdbarch->memtag_matches_p = default_memtag_matches_p; - gdbarch->set_memtags = default_set_memtags; - gdbarch->get_memtag = default_get_memtag; - gdbarch->print_insn = default_print_insn; - gdbarch->skip_trampoline_code = generic_skip_trampoline_code; - gdbarch->skip_solib_resolver = generic_skip_solib_resolver; - gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline; - gdbarch->in_indirect_branch_thunk = default_in_indirect_branch_thunk; - gdbarch->stack_frame_destroyed_p = generic_stack_frame_destroyed_p; - gdbarch->coff_make_msymbol_special = default_coff_make_msymbol_special; - gdbarch->make_symbol_special = default_make_symbol_special; - gdbarch->adjust_dwarf2_addr = default_adjust_dwarf2_addr; - gdbarch->adjust_dwarf2_line = default_adjust_dwarf2_line; - gdbarch->execute_dwarf_cfa_vendor_op = default_execute_dwarf_cfa_vendor_op; - gdbarch->register_reggroup_p = default_register_reggroup_p; - gdbarch->skip_permanent_breakpoint = default_skip_permanent_breakpoint; - gdbarch->displaced_step_hw_singlestep = default_displaced_step_hw_singlestep; - gdbarch->displaced_step_fixup = NULL; - gdbarch->displaced_step_finish = NULL; - gdbarch->relocate_instruction = NULL; - gdbarch->has_shared_address_space = default_has_shared_address_space; - gdbarch->fast_tracepoint_valid_at = default_fast_tracepoint_valid_at; - gdbarch->guess_tracepoint_registers = default_guess_tracepoint_registers; - gdbarch->auto_charset = default_auto_charset; - gdbarch->auto_wide_charset = default_auto_wide_charset; - gdbarch->gen_return_address = default_gen_return_address; - gdbarch->iterate_over_objfiles_in_search_order = default_iterate_over_objfiles_in_search_order; - gdbarch->ravenscar_ops = NULL; - gdbarch->insn_is_call = default_insn_is_call; - gdbarch->insn_is_ret = default_insn_is_ret; - gdbarch->insn_is_jump = default_insn_is_jump; - gdbarch->program_breakpoint_here_p = default_program_breakpoint_here_p; - gdbarch->print_auxv_entry = default_print_auxv_entry; - gdbarch->vsyscall_range = default_vsyscall_range; - gdbarch->infcall_mmap = default_infcall_mmap; - gdbarch->infcall_munmap = default_infcall_munmap; - gdbarch->gcc_target_options = default_gcc_target_options; - gdbarch->gnu_triplet_regexp = default_gnu_triplet_regexp; - gdbarch->addressable_memory_unit_size = default_addressable_memory_unit_size; - gdbarch->type_align = default_type_align; - gdbarch->get_pc_address_flags = default_get_pc_address_flags; - gdbarch->read_core_file_mappings = default_read_core_file_mappings; - /* gdbarch_alloc() */ - return gdbarch; } diff --git a/gdb/gdbarch.py b/gdb/gdbarch.py index da848feae84..4424b319d5e 100755 --- a/gdb/gdbarch.py +++ b/gdb/gdbarch.py @@ -286,11 +286,18 @@ with open("gdbarch.c", "w") as f: print(" void **data = nullptr;", file=f) print(file=f) for c in filter(not_info, components): - if isinstance(c, Value): - print(f" {c.type} {c.name} = 0;", file=f) + if isinstance(c, Function): + print(f" gdbarch_{c.name}_ftype *", file=f, end="") + else: + print(f" {c.type} ", file=f, end="") + print(f"{c.name} = ", file=f, end="") + if c.predefault is not None: + print(f"{c.predefault};", file=f) + elif isinstance(c, Value): + print("0;", file=f) else: assert isinstance(c, Function) - print(f" gdbarch_{c.name}_ftype *{c.name} = nullptr;", file=f) + print("nullptr;", file=f) print("};", file=f) print(file=f) # @@ -312,12 +319,6 @@ with open("gdbarch.c", "w") as f: for c in filter(info, components): print(f" gdbarch->{c.name} = info->{c.name};", file=f) print(file=f) - print(" /* Force the explicit initialization of these. */", file=f) - for c in filter(not_info, components): - if c.predefault and c.predefault != "0": - print(f" gdbarch->{c.name} = {c.predefault};", file=f) - print(" /* gdbarch_alloc() */", file=f) - print(file=f) print(" return gdbarch;", file=f) print("}", file=f) print(file=f) -- 2.34.3