aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog17
-rw-r--r--gdb/amd64-windows-tdep.c5
-rw-r--r--gdb/configure.tgt4
-rw-r--r--gdb/i386-cygwin-tdep.c17
-rw-r--r--gdb/osabi.c1
-rw-r--r--gdb/osabi.h1
6 files changed, 39 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 06c6343d..441029a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,22 @@
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...
* osabi.h (enum gdb_osabi): ... here.
* gdbarch.sh: Include osabi.h in gdbarch.h.
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index 2ca9795..88ff794 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -1250,7 +1250,7 @@ amd64_windows_osabi_sniffer (bfd *abfd)
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;
}
@@ -1259,6 +1259,9 @@ void _initialize_amd64_windows_tdep ();
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);
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 755187d..6ebd324 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -771,8 +771,8 @@ m68*-*-openbsd* | m88*-*-openbsd* | vax-*-openbsd*) ;;
*-*-*-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 ;;
diff --git a/gdb/i386-cygwin-tdep.c b/gdb/i386-cygwin-tdep.c
index cb66632..b9a959d 100644
--- a/gdb/i386-cygwin-tdep.c
+++ b/gdb/i386-cygwin-tdep.c
@@ -232,14 +232,22 @@ i386_cygwin_osabi_sniffer (bfd *abfd)
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;
}
@@ -256,8 +264,11 @@ _initialize_i386_cygwin_tdep ()
/* 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);
}
diff --git a/gdb/osabi.c b/gdb/osabi.c
index b9a8687..627b9d9 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -72,6 +72,7 @@ static const struct osabi_names gdb_osabi_names[] =
{ "DJGPP", NULL },
{ "QNX-Neutrino", NULL },
{ "Cygwin", NULL },
+ { "Windows", NULL },
{ "AIX", NULL },
{ "DICOS", NULL },
{ "Darwin", NULL },
diff --git a/gdb/osabi.h b/gdb/osabi.h
index ff63db4..a7e6a10 100644
--- a/gdb/osabi.h
+++ b/gdb/osabi.h
@@ -37,6 +37,7 @@ enum gdb_osabi
GDB_OSABI_GO32,
GDB_OSABI_QNXNTO,
GDB_OSABI_CYGWIN,
+ GDB_OSABI_WINDOWS,
GDB_OSABI_AIX,
GDB_OSABI_DICOS,
GDB_OSABI_DARWIN,