diff options
-rw-r--r-- | gdb/ChangeLog | 17 | ||||
-rw-r--r-- | gdb/amd64-windows-tdep.c | 5 | ||||
-rw-r--r-- | gdb/configure.tgt | 4 | ||||
-rw-r--r-- | gdb/i386-cygwin-tdep.c | 17 | ||||
-rw-r--r-- | gdb/osabi.c | 1 | ||||
-rw-r--r-- | gdb/osabi.h | 1 |
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, |