+2020-03-16 Simon Marchi <simon.marchi@efficios.com>
+
+ * osabi.h (enum gdb_osabi): Add GDB_OSABI_WINDOWS.
+ * osabi.c (gdb_osabi_names): Add "Windows".
+ * i386-cygwin-tdep.c (i386_cygwin_osabi_sniffer): Return
+ GDB_OSABI_WINDOWS when the binary's target is "pei-i386".
+ (i386_cygwin_core_osabi_sniffer): New function, extracted from
+ i386_cygwin_osabi_sniffer.
+ (_initialize_i386_cygwin_tdep): Register OS ABI
+ GDB_OSABI_WINDOWS for i386.
+ * amd64-windows-tdep.c (amd64_windows_osabi_sniffer): Return
+ GDB_OSABI_WINDOWS when the binary's target is "pei-x86-64".
+ (_initialize_amd64_windows_tdep): Register OS ABI GDB_OSABI_WINDOWS
+ for x86-64.
+ * configure.tgt: Use GDB_OSABI_WINDOWS as the default OS ABI
+ when the target matches '*-*-mingw*'.
+
2020-03-16 Simon Marchi <simon.marchi@efficios.com>
* defs.h (enum gdb_osabi): Move to...
const char *target_name = bfd_get_target (abfd);
if (strcmp (target_name, "pei-x86-64") == 0)
- return GDB_OSABI_CYGWIN;
+ return GDB_OSABI_WINDOWS;
return GDB_OSABI_UNKNOWN;
}
void
_initialize_amd64_windows_tdep ()
{
+ /* The Cygwin and Windows OS ABIs are currently equivalent. */
+ gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_WINDOWS,
+ amd64_windows_init_abi);
gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_CYGWIN,
amd64_windows_init_abi);
*-*-*-gnu*) ;; # prevent non-GNU kernels to match the Hurd rule below
*-*-gnu*) gdb_osabi=GDB_OSABI_HURD ;;
*-*-mingw32ce*) gdb_osabi=GDB_OSABI_WINCE ;;
-*-*-mingw* | *-*-cygwin*)
- gdb_osabi=GDB_OSABI_CYGWIN ;;
+*-*-mingw*) gdb_osabi=GDB_OSABI_WINDOWS ;;
+*-*-cygwin*) gdb_osabi=GDB_OSABI_CYGWIN ;;
*-*-dicos*) gdb_osabi=GDB_OSABI_DICOS ;;
*-*-symbianelf*)
gdb_osabi=GDB_OSABI_SYMBIAN ;;
const char *target_name = bfd_get_target (abfd);
if (strcmp (target_name, "pei-i386") == 0)
- return GDB_OSABI_CYGWIN;
+ return GDB_OSABI_WINDOWS;
+
+ return GDB_OSABI_UNKNOWN;
+}
+
+static enum gdb_osabi
+i386_cygwin_core_osabi_sniffer (bfd *abfd)
+{
+ const char *target_name = bfd_get_target (abfd);
/* Cygwin uses elf core dumps. Do not claim all ELF executables,
check whether there is a .reg section of proper size. */
if (strcmp (target_name, "elf32-i386") == 0)
{
asection *section = bfd_get_section_by_name (abfd, ".reg");
- if (section
+ if (section != nullptr
&& bfd_section_size (section) == I386_WINDOWS_SIZEOF_GREGSET)
return GDB_OSABI_CYGWIN;
}
/* Cygwin uses elf core dumps. */
gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
- i386_cygwin_osabi_sniffer);
+ i386_cygwin_core_osabi_sniffer);
+ /* The Cygwin and Windows OS ABIs are currently equivalent. */
gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_CYGWIN,
i386_cygwin_init_abi);
+ gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_WINDOWS,
+ i386_cygwin_init_abi);
}
{ "DJGPP", NULL },
{ "QNX-Neutrino", NULL },
{ "Cygwin", NULL },
+ { "Windows", NULL },
{ "AIX", NULL },
{ "DICOS", NULL },
{ "Darwin", NULL },
GDB_OSABI_GO32,
GDB_OSABI_QNXNTO,
GDB_OSABI_CYGWIN,
+ GDB_OSABI_WINDOWS,
GDB_OSABI_AIX,
GDB_OSABI_DICOS,
GDB_OSABI_DARWIN,