diff options
Diffstat (limited to 'gdb/m68k-tdep.c')
-rw-r--r-- | gdb/m68k-tdep.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c index 1b8cc92..94bfddb 100644 --- a/gdb/m68k-tdep.c +++ b/gdb/m68k-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for the Motorola 68000 series. - Copyright (C) 1990-2024 Free Software Foundation, Inc. + Copyright (C) 1990-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -1007,16 +1007,16 @@ m68k_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache, return frame_unwind_got_register (this_frame, regnum, regnum); } -static const struct frame_unwind m68k_frame_unwind = -{ +static const struct frame_unwind_legacy m68k_frame_unwind ( "m68k prologue", NORMAL_FRAME, + FRAME_UNWIND_ARCH, default_frame_unwind_stop_reason, m68k_frame_this_id, m68k_frame_prev_register, NULL, default_frame_sniffer -}; +); static CORE_ADDR m68k_frame_base_address (const frame_info_ptr &this_frame, void **this_cache) @@ -1350,16 +1350,22 @@ static enum gdb_osabi m68k_osabi_sniffer (bfd *abfd) { unsigned int elfosabi = elf_elfheader (abfd)->e_ident[EI_OSABI]; + enum gdb_osabi osabi = GDB_OSABI_UNKNOWN; if (elfosabi == ELFOSABI_NONE) - return GDB_OSABI_SVR4; + { + /* Check note sections. */ + for (asection *sect : gdb_bfd_sections (abfd)) + generic_elf_osabi_sniff_abi_tag_sections (abfd, sect, &osabi); - return GDB_OSABI_UNKNOWN; + if (osabi == GDB_OSABI_UNKNOWN) + osabi = GDB_OSABI_SVR4; + } + + return osabi; } -void _initialize_m68k_tdep (); -void -_initialize_m68k_tdep () +INIT_GDB_FILE (m68k_tdep) { gdbarch_register (bfd_arch_m68k, m68k_gdbarch_init, m68k_dump_tdep); |