Re: gdb failure: "core file format not supported"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[Cc: linux-m68k]

On Fri, 10 Mar 2023, I wrote:

root@panmac:~# gdb --core core.0
GNU gdb (Debian 13.1-2) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "m68k-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
"/root/core.0": Core file format not supported
(gdb) quit


I was able to run gdb under gdb to get a few hints. Here's the error 
message:


  if (!m_core_gdbarch
      || !gdbarch_iterate_over_regset_sections_p (m_core_gdbarch))
    error (_("\"%s\": Core file format not supported"),
	   bfd_get_filename (core_bfd));


And the reason for the message:


bool
gdbarch_iterate_over_regset_sections_p (struct gdbarch *gdbarch)
{
  gdb_assert (gdbarch != NULL);
  return gdbarch->iterate_over_regset_sections != NULL;
}


So gdbarch->iterate_over_regset_sections == NULL somehow:


(gdb) print *m_core_gdbarch
$3 = {initialized_p = true, obstack = {<obstack> = {chunk_size = 4064, 
      chunk = 0x8092bf80, object_base = 0x8092bfb8 "", 
      next_free = 0x8092bfb8 "", chunk_limit = 0x8092cf60 "", temp = {
        i = 853591194, p = 0x32e0c49a}, alignment_mask = 1, chunkfun = {
        plain = 0x800791d8 <xmalloc(size_t)>, 
        extra = 0x800791d8 <xmalloc(size_t)>}, freefun = {
        plain = 0x8007b5d2 <xfree<void>(void*)>, 
        extra = 0x8007b5d2 <xfree<void>(void*)>}, extra_arg = 0x3300c49a, 
      use_extra_arg = 0, maybe_empty_object = 0, 
      alloc_failed = 0}, <No data fields>}, registry_fields = {
    m_fields = std::vector of length 23, capacity 23 = {0x0, 0x0, 0x0, 0x0, 
      0x8090b608, 0x8090b5f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
      0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}, 
  bfd_arch_info = 0x80795aae <bfd_m68k_arch>, byte_order = BFD_ENDIAN_BIG, 
  byte_order_for_code = BFD_ENDIAN_BIG, osabi = GDB_OSABI_SVR4, 
  target_desc = 0x0, tdep = 0x808e7fb0, 
  dump_tdep = 0x8028c242 <m68k_dump_tdep(gdbarch*, ui_file*)>, nr_data = 0, 
  data = 0x0, short_bit = 16, int_bit = 32, long_bit = 32, long_long_bit = 64, 
  bfloat16_bit = 16, bfloat16_format = 0x807b545a <floatformats_bfloat16>, 
  half_bit = 16, half_format = 0x807b54ba <floatformats_ieee_half>, 
  float_bit = 32, float_format = 0x807b54b2 <floatformats_ieee_single>, 
  double_bit = 64, double_format = 0x807b54aa <floatformats_ieee_double>, 
  long_double_bit = 96, 
  long_double_format = 0x807b548a <floatformats_m68881_ext>, wchar_bit = 32, 
  wchar_signed = 1, 
  floatformat_for_type = 0x8007d812 <default_floatformat_for_type(gdbarch*, char const*, int)>, ptr_bit = 32, addr_bit = 32, dwarf2_addr_size = 4, 
  char_signed = 1, read_pc = 0x0, write_pc = 0x0, 
  virtual_frame_pointer = 0x8007f5c2 <legacy_virtual_frame_pointer(gdbarch*, unsigned long long, int*, long long*)>, pseudo_register_read = 0x0, 
  pseudo_register_read_value = 0x0, pseudo_register_write = 0x0, 
  num_regs = 29, num_pseudo_regs = 0, ax_pseudo_register_collect = 0x0, 
  ax_pseudo_register_push_stack = 0x0, report_signal_info = 0x0, 
  sp_regnum = 15, pc_regnum = 17, ps_regnum = 16, fp0_regnum = 18, 
  stab_reg_to_regnum = 0x8007b4ba <no_op_reg_to_regnum(gdbarch*, int)>, 
  ecoff_reg_to_regnum = 0x8007b4ba <no_op_reg_to_regnum(gdbarch*, int)>, 
  sdb_reg_to_regnum = 0x8007b4ba <no_op_reg_to_regnum(gdbarch*, int)>, 
  dwarf2_reg_to_regnum = 0x8028c298 <m68k_dwarf_reg_to_regnum(gdbarch*, int)>, 
  register_name = 0x8028c248 <m68k_register_name(gdbarch*, int)>, 
  register_type = 0x8028ca62 <m68k_register_type(gdbarch*, int)>, 
  dummy_id = 0x8028e526 <m68k_dummy_id(gdbarch*, frame_info_ptr)>, 
  deprecated_fp_regnum = -1, 
  push_dummy_call = 0x8028c838 <m68k_push_dummy_call(gdbarch*, value*, regcache*, CORE_ADDR, int, value**, CORE_ADDR, function_call_return_method, CORE_ADDR)>, call_dummy_location = AT_ENTRY_POINT, push_dummy_code = 0x0, 
  code_of_frame_writable = 0x8007b4a2 <default_code_of_frame_writable(gdbarch*, frame_info_ptr)>, 
  print_registers_info = 0x8022edfc <default_print_registers_info(gdbarch*, ui_file*, frame_info_ptr, int, int)>, 
  print_float_info = 0x8022f840 <default_print_float_info(gdbarch*, ui_file*, frame_info_ptr, char const*)>, print_vector_info = 0x0, 
  register_sim_regno = 0x8007f228 <legacy_register_sim_regno(gdbarch*, int)>, 
  cannot_fetch_register = 0x8007b4dc <cannot_register_not(gdbarch*, int)>, 
  cannot_store_register = 0x8007b4dc <cannot_register_not(gdbarch*, int)>, 
  get_longjmp_target = 0x0, believe_pcc_promotion = 1, 
  convert_register_p = 0x8028cd58 <m68k_convert_register_p(gdbarch*, int, type*)>, 
  register_to_value = 0x8028e926 <m68k_register_to_value(frame_info_ptr, int, type*, gdb_byte*, int*, int*)>, 
  value_to_register = 0x8028e700 <m68k_value_to_register(frame_info_ptr, int, type*, gdb_byte const*)>, 
  value_from_register = 0x801f5370 <default_value_from_register(gdbarch*, type*, int, frame_id)>, 
  pointer_to_address = 0x801f5092 <unsigned_pointer_to_address(gdbarch*, type*, unsigned char const*)>, 
  address_to_pointer = 0x801f50ee <unsigned_address_to_pointer(gdbarch*, type*, unsigned char*, unsigned long long)>, integer_to_address = 0x0, 
  return_value = 0x8028c04a <m68k_svr4_return_value(gdbarch*, value*, type*, regcache*, gdb_byte*, gdb_byte const*)>, 
  get_return_buf_addr = 0x8007b50e <default_get_return_buf_addr(type*, frame_info_ptr)>, 
  return_in_first_hidden_param_p = 0x8028bc3c <m68k_return_in_first_hidden_param_p(gdbarch*, type*)>, 
  skip_prologue = 0x8028c7e2 <m68k_skip_prologue(gdbarch*, CORE_ADDR)>, 
  skip_main_prologue = 0x0, skip_entrypoint = 0x0, 
  inner_than = 0x8007b984 <core_addr_lessthan(unsigned long long, unsigned long long)>, 
  breakpoint_from_pc = 0x80081c1c <default_breakpoint_from_pc(gdbarch*, unsigned long long*, int*)>, 
  breakpoint_kind_from_pc = 0x8028bc56 <bp_manipulation<2, &m68k_break_insn>::kind_from_pc(gdbarch*, CORE_ADDR*)>, 
  sw_breakpoint_from_kind = 0x8028bc5a <bp_manipulation<2, &m68k_break_insn>::bp_from_kind(gdbarch*, int, int*)>, 
  breakpoint_kind_from_current_state = 0x80081b28 <default_breakpoint_kind_from_current_state(gdbarch*, regcache*, unsigned long long*)>, 
  adjust_breakpoint_address = 0x0, 
  memory_insert_breakpoint = 0x802a5ba4 <default_memory_insert_breakpoint(gdbarch*, bp_target_info*)>, 
  memory_remove_breakpoint = 0x802a5c34 <default_memory_remove_breakpoint(gdbarch*, bp_target_info*)>, decr_pc_after_break = 0, 
  deprecated_function_start_offset = 0, 
  remote_register_number = 0x8007b770 <default_remote_register_number(gdbarch*, int)>, fetch_tls_load_module_address = 0x0, get_thread_local_address = 0x0, 
  frame_args_skip = 8, 
  unwind_pc = 0x8028e442 <m68k_unwind_pc(gdbarch*, frame_info_ptr)>, 
  unwind_sp = 0x801fa23c <default_unwind_sp(gdbarch*, frame_info_ptr)>, 
  frame_num_args = 0x0, 
  frame_align = 0x8028bc30 <m68k_frame_align(gdbarch*, CORE_ADDR)>, 
  stabs_argument_has_addr = 0x8007b4e4 <default_stabs_argument_has_addr(gdbarch*, type*)>, frame_red_zone_size = 0, 
  convert_from_func_ptr_addr = 0x8007b4b0 <convert_from_func_ptr_addr_identity(gdbarch*, unsigned long long, target_ops*)>, 
  addr_bits_remove = 0x8007b4a6 <core_addr_identity(gdbarch*, unsigned long long)>, 
  remove_non_address_bits = 0x8007b756 <default_remove_non_address_bits(gdbarch*, unsigned long long)>, 
  memtag_to_string = 0x8007b514 <default_memtag_to_string[abi:cxx11](gdbarch*, value*)>, 
  tagged_address_p = 0x8007b47c <default_tagged_address_p(gdbarch*, value*)>, 
  memtag_matches_p = 0x8007b480 <default_memtag_matches_p(gdbarch*, value*)>, 
  set_memtags = 0x8007b484 <default_set_memtags(gdbarch*, value*, unsigned int, std::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > const&, memtag_type)>, 
  get_memtag = 0x8007b488 <default_get_memtag(gdbarch*, value*, memtag_type)>, 
  memtag_granule_size = 0, software_single_step = 0x0, 
  single_step_through_delay = 0x0, 
  print_insn = 0x8007b696 <default_print_insn(unsigned long, disassemble_info*)>, 
  skip_trampoline_code = 0x8007b48e <generic_skip_trampoline_code(frame_info_ptr, unsigned long long)>, so_ops = 0x80791610 <solib_target_so_ops>, 
  skip_solib_resolver = 0x8007b494 <generic_skip_solib_resolver(gdbarch*, unsigned long long)>, 
  in_solib_return_trampoline = 0x8007b49a <generic_in_solib_return_trampoline(gdbarch*, unsigned long long, char const*)>, 
  in_indirect_branch_thunk = 0x8007b502 <default_in_indirect_branch_thunk(gdbarch*, unsigned long long)>, 
  stack_frame_destroyed_p = 0x8007b49e <generic_stack_frame_destroyed_p(gdbarch*, unsigned long long)>, elf_make_msymbol_special = 0x0, 
  coff_make_msymbol_special = 0x8007b4c0 <default_coff_make_msymbol_special(int, minimal_symbol*)>, 
  make_symbol_special = 0x8007b4c2 <default_make_symbol_special(symbol*, objfile*)>, 
  adjust_dwarf2_addr = 0x8007b4c4 <default_adjust_dwarf2_addr(unsigned long long)>, 
  adjust_dwarf2_line = 0x8007b4ce <default_adjust_dwarf2_line(unsigned long long, int)>, cannot_step_breakpoint = 0, have_nonsteppable_watchpoint = 0, 
  address_class_type_flags = 0x0, address_class_type_flags_to_name = 0x0, 
  execute_dwarf_cfa_vendor_op = 0x8007b4d8 <default_execute_dwarf_cfa_vendor_op(gdbarch*, unsigned char, dwarf2_frame_state*)>, 
  address_class_name_to_type_flags = 0x0, 
  register_reggroup_p = 0x80351864 <default_register_reggroup_p(gdbarch*, int, reggroup const*)>, fetch_pointer_argument = 0x0, 
  iterate_over_regset_sections = 0x0, make_corefile_notes = 0x0, 
  find_memory_regions = 0x0, create_memtag_section = 0x0, 
  fill_memtag_section = 0x0, decode_memtag_section = 0x0, 
  core_xfer_shared_libraries = 0x0, core_xfer_shared_libraries_aix = 0x0, 
  core_pid_to_str = 0x0, core_thread_name = 0x0, core_xfer_siginfo = 0x0, 
  gcore_bfd_target = 0x0, vtable_function_descriptors = 0, vbit_in_delta = 0, 
  skip_permanent_breakpoint = 0x80081932 <default_skip_permanent_breakpoint(regcache*)>, max_insn_length = 0, displaced_step_copy_insn = 0x0, 
  displaced_step_hw_singlestep = 0x80083572 <default_displaced_step_hw_singlestep(gdbarch*)>, displaced_step_fixup = 0x0, displaced_step_prepare = 0x0, 
  displaced_step_finish = 0x0, displaced_step_copy_insn_closure_by_addr = 0x0, 
  displaced_step_restore_all_in_ptid = 0x0, relocate_instruction = 0x0, 
  overlay_update = 0x0, core_read_description = 0x0, 
  sofun_address_maybe_missing = 0, process_record = 0x0, 
  process_record_signal = 0x0, gdb_signal_from_target = 0x0, 
  gdb_signal_to_target = 0x0, get_siginfo_type = 0x0, 
  record_special_symbol = 0x0, get_syscall_number = 0x0, 
  xml_syscall_file = 0x0, syscalls_info = 0x0, stap_integer_prefixes = 0x0, 
  stap_integer_suffixes = 0x0, stap_register_prefixes = 0x0, 
  stap_register_suffixes = 0x0, stap_register_indirection_prefixes = 0x0, 
  stap_register_indirection_suffixes = 0x0, stap_gdb_register_prefix = 0x0, 
  stap_gdb_register_suffix = 0x0, stap_is_single_operand = 0x0, 
  stap_parse_special_token = 0x0, stap_adjust_register = 0x0, 
  dtrace_parse_probe_argument = 0x0, dtrace_probe_is_enabled = 0x0, 
  dtrace_enable_probe = 0x0, dtrace_disable_probe = 0x0, 
  has_global_solist = 0, has_global_breakpoints = 0, 
  has_shared_address_space = 0x8007b4e8 <default_has_shared_address_space(gdbarch*)>, 
  fast_tracepoint_valid_at = 0x8007b4ec <default_fast_tracepoint_valid_at(gdbarch*, unsigned long long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)>, 
  guess_tracepoint_registers = 0x8007eb92 <default_guess_tracepoint_registers(gdbarch*, regcache*, unsigned long long)>, 
  auto_charset = 0x800f3e5a <default_auto_charset()>, 
  auto_wide_charset = 0x800f3e74 <default_auto_wide_charset()>, 
  solib_symbols_extension = 0x0, has_dos_based_file_system = 0, 
  gen_return_address = 0x8007b534 <default_gen_return_address(gdbarch*, agent_expr*, axs_value*, unsigned long long)>, info_proc = 0x0, core_info_proc = 0x0, 
  iterate_over_objfiles_in_search_order = 0x802d77dc <default_iterate_over_objfiles_in_search_order(gdbarch*, gdb::function_view<bool (objfile*)>, objfile*)>, 
  ravenscar_ops = 0x0, 
  insn_is_call = 0x8007b760 <default_insn_is_call(gdbarch*, unsigned long long)>, 
  insn_is_ret = 0x8007b764 <default_insn_is_ret(gdbarch*, unsigned long long)>, 
  insn_is_jump = 0x8007b768 <default_insn_is_jump(gdbarch*, unsigned long long)>, 
  program_breakpoint_here_p = 0x800819a2 <default_program_breakpoint_here_p(gdbarch*, unsigned long long)>, auxv_parse = 0x0, 
  print_auxv_entry = 0x80096fda <default_print_auxv_entry(gdbarch*, ui_file*, unsigned long long, unsigned long long)>, 
  vsyscall_range = 0x8007b76c <default_vsyscall_range(gdbarch*, mem_range*)>, 
  infcall_mmap = 0x8007b554 <default_infcall_mmap(unsigned long long, unsigned int)>, 
  infcall_munmap = 0x8007b500 <default_infcall_munmap(unsigned long long, unsigned long long)>, 
  gcc_target_options = 0x8007dbbe <default_gcc_target_options[abi:cxx11](gdbarch*)>, gnu_triplet_regexp = 0x8007ce2e <default_gnu_triplet_regexp(gdbarch*)>, 
  addressable_memory_unit_size = 0x8007ce42 <default_addressable_memory_unit_size(gdbarch*)>, disassembler_options_implicit = 0x0, disassembler_options = 0x0, 
  valid_disassembler_options = 0x0, 
  type_align = 0x8007b506 <default_type_align(gdbarch*, type*)>, 
  get_pc_address_flags = 0x8007b776 <default_get_pc_address_flags[abi:cxx11](frame_info_ptr, unsigned long long)>, 
  read_core_file_mappings = 0x8007b50c <default_read_core_file_mappings(gdbarch*, bfd*, gdb::function_view<void (unsigned long long)>, gdb::function_view<void (int, unsigned long long, unsigned long long, unsigned long long, char const*, bfd_build_id const*)>)>}
(gdb) 
(gdb) 


But it should get initialized in m68k_linux_init_abi()...

https://sources.debian.org/src/gdb/13.1-2/gdb/m68k-linux-tdep.c/?hl=385#L385


  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);

  /* Core file support. */
  set_gdbarch_iterate_over_regset_sections
    (gdbarch, m68k_linux_iterate_over_regset_sections);


Yet somehow iterate_over_regset_sections ends up NULL.

I could not see why that happened so I built the current upstream snapshot 
(at the time), gdb-14.0.50.20230316. That took a few attempts and a couple 
of days of building, but it has the same problem:

# /opt/gdb-14.0.50.20230316/bin/gdb
GNU gdb (GDB) 14.0.50.20230316-git
Copyright (C) 2023 Free Software Foundation, Inc.
...
(gdb) core ~/core.0
"/root/core.0": Core file format not supported
(gdb)

I guess the next step will be a formal bug report.



[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux