diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index fc27ba6..75dae12 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -607,7 +607,7 @@ TARGET_OBS = @TARGET_OBS@
 ALL_64_TARGET_OBS = \
 	aarch64-tdep.o aarch64-linux-tdep.o aarch64-newlib-tdep.o \
 	alphabsd-tdep.o alphafbsd-tdep.o alpha-linux-tdep.o alpha-mdebug-tdep.o \
-	alphanbsd-tdep.o alphaobsd-tdep.o alpha-osf1-tdep.o alpha-tdep.o \
+	alphanbsd-tdep.o alphaobsd-tdep.o alpha-tdep.o \
 	amd64fbsd-tdep.o amd64-darwin-tdep.o amd64-dicos-tdep.o \
 	amd64-linux-tdep.o amd64nbsd-tdep.o \
 	amd64obsd-tdep.o amd64-sol2-tdep.o amd64-tdep.o amd64-windows-tdep.o \
@@ -910,7 +910,7 @@ common/gdb_locale.h arch-utils.h trad-frame.h gnu-nat.h \
 language.h nbsd-tdep.h solib-svr4.h \
 macroexp.h ui-file.h regcache.h tracepoint.h tracefile.h i386-tdep.h \
 inf-child.h p-lang.h event-top.h gdbtypes.h user-regs.h \
-regformats/regdef.h config/alpha/nm-osf3.h  config/i386/nm-i386gnu.h \
+regformats/regdef.h config/i386/nm-i386gnu.h \
 config/i386/nm-fbsd.h \
 config/nm-nto.h config/sparc/nm-sol2.h config/nm-linux.h \
 top.h bsd-kvm.h gdb-stabs.h reggroups.h \
@@ -1602,9 +1602,9 @@ ALLDEPFILES = \
 	aarch64-tdep.c aarch64-linux-tdep.c aarch64-newlib-tdep.c \
 	aarch64-linux-nat.c \
 	aix-thread.c \
-	alpha-nat.c alphabsd-nat.c alpha-linux-nat.c \
+	alphabsd-nat.c alpha-linux-nat.c \
 	alpha-tdep.c alpha-mdebug-tdep.c \
-	alpha-linux-tdep.c alpha-osf1-tdep.c \
+	alpha-linux-tdep.c \
 	alphabsd-tdep.c alphafbsd-tdep.c alphanbsd-tdep.c alphaobsd-tdep.c \
 	amd64-nat.c amd64-tdep.c \
 	amd64bsd-nat.c amd64fbsd-nat.c amd64fbsd-tdep.c \
@@ -1667,7 +1667,6 @@ ALLDEPFILES = \
 	msp430-tdep.c \
 	nios2-tdep.c nios2-linux-tdep.c \
 	nbsd-nat.c nbsd-tdep.c obsd-nat.c obsd-tdep.c \
-	solib-osf.c \
 	somread.c solib-som.c \
 	posix-hdep.c \
 	ppc-sysv-tdep.c ppc-linux-nat.c ppc-linux-tdep.c ppc64-tdep.c \
diff --git a/gdb/NEWS b/gdb/NEWS
index 5de0a33..5a22926 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -49,6 +49,7 @@ queue-signal signal-name-or-number
 
 Support for these obsolete configurations has been removed.
 
+alpha*-*-osf*
 mips-sgi-irix5*
 mips-sgi-irix6*
 
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index 6356cfa..ba3b9d8 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -34,11 +34,7 @@ struct parser_state;
    system and that might consider (confusing) debugging information.
    Each name (a basic regular expression string) is followed by a
    comma.  FIXME: Should be part of a configuration file.  */
-#if defined(__alpha__) && defined(__osf__)
-#define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
-   "^[agis]-.*\\.ad[bs]$", \
-   "/usr/shlib/libpthread\\.so",
-#elif defined (__linux__)
+#if defined (__linux__)
 #define ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS \
    "^[agis]-.*\\.ad[bs]$", \
    "/lib.*/libpthread\\.so[.0-9]*$", "/lib.*/libpthread\\.a$", \
diff --git a/gdb/alpha-nat.c b/gdb/alpha-nat.c
deleted file mode 100644
index 88ff62d..0000000
--- a/gdb/alpha-nat.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* Low level Alpha interface, for GDB when running native.
-   Copyright (C) 1993-2014 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "inferior.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "procfs.h"
-#include "regcache.h"
-
-#include "alpha-tdep.h"
-
-#include <sys/ptrace.h>
-#include <alpha/coreregs.h>
-#include <sys/user.h>
-
-
-/* Extract the register values out of the core file and store
-   them into REGCACHE.
-
-   CORE_REG_SECT points to the register values themselves, read into memory.
-   CORE_REG_SIZE is the size of that area.
-   WHICH says which set of registers we are handling (0 = int, 2 = float
-   on machines where they are discontiguous).
-   REG_ADDR is the offset from u.u_ar0 to the register values relative to
-   core_reg_sect.  This is used with old-fashioned core files to
-   locate the registers in a large upage-plus-stack ".reg" section.
-   Original upage address X is at location core_reg_sect+x+reg_addr.  */
-
-static void
-fetch_osf_core_registers (struct regcache *regcache,
-			  char *core_reg_sect, unsigned core_reg_size,
-			  int which, CORE_ADDR reg_addr)
-{
-  struct gdbarch *gdbarch = get_regcache_arch (regcache);
-  int regno;
-  int addr;
-  int bad_reg = -1;
-
-  /* Table to map a gdb regnum to an index in the core register
-     section.  The floating point register values are garbage in
-     OSF/1.2 core files.  OSF5 uses different names for the register
-     enum list, need to handle two cases.  The actual values are the
-     same.  */
-  static int const core_reg_mapping[ALPHA_NUM_REGS] =
-  {
-#ifdef NCF_REGS
-#define EFL NCF_REGS
-    CF_V0, CF_T0, CF_T1, CF_T2, CF_T3, CF_T4, CF_T5, CF_T6,
-    CF_T7, CF_S0, CF_S1, CF_S2, CF_S3, CF_S4, CF_S5, CF_S6,
-    CF_A0, CF_A1, CF_A2, CF_A3, CF_A4, CF_A5, CF_T8, CF_T9,
-    CF_T10, CF_T11, CF_RA, CF_T12, CF_AT, CF_GP, CF_SP, -1,
-    EFL + 0, EFL + 1, EFL + 2, EFL + 3,
-    EFL + 4, EFL + 5, EFL + 6, EFL + 7,
-    EFL + 8, EFL + 9, EFL + 10, EFL + 11,
-    EFL + 12, EFL + 13, EFL + 14, EFL + 15,
-    EFL + 16, EFL + 17, EFL + 18, EFL + 19,
-    EFL + 20, EFL + 21, EFL + 22, EFL + 23,
-    EFL + 24, EFL + 25, EFL + 26, EFL + 27,
-    EFL + 28, EFL + 29, EFL + 30, EFL + 31,
-    CF_PC, -1, -1
-#else
-#define EFL (EF_SIZE / 8)
-    EF_V0, EF_T0, EF_T1, EF_T2, EF_T3, EF_T4, EF_T5, EF_T6,
-    EF_T7, EF_S0, EF_S1, EF_S2, EF_S3, EF_S4, EF_S5, EF_S6,
-    EF_A0, EF_A1, EF_A2, EF_A3, EF_A4, EF_A5, EF_T8, EF_T9,
-    EF_T10, EF_T11, EF_RA, EF_T12, EF_AT, EF_GP, EF_SP, -1,
-    EFL + 0, EFL + 1, EFL + 2, EFL + 3,
-    EFL + 4, EFL + 5, EFL + 6, EFL + 7,
-    EFL + 8, EFL + 9, EFL + 10, EFL + 11,
-    EFL + 12, EFL + 13, EFL + 14, EFL + 15,
-    EFL + 16, EFL + 17, EFL + 18, EFL + 19,
-    EFL + 20, EFL + 21, EFL + 22, EFL + 23,
-    EFL + 24, EFL + 25, EFL + 26, EFL + 27,
-    EFL + 28, EFL + 29, EFL + 30, EFL + 31,
-    EF_PC, -1, -1
-#endif
-  };
-
-  for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
-    {
-      if (gdbarch_cannot_fetch_register (gdbarch, regno))
-	{
-	  regcache_raw_supply (regcache, regno, NULL);
-	  continue;
-	}
-
-      if (regno == ALPHA_ZERO_REGNUM)
-	{
-	  const gdb_byte zero[8] = { 0 };
-
-	  regcache_raw_supply (regcache, regno, zero);
-	  continue;
-	}
-
-      addr = 8 * core_reg_mapping[regno];
-      if (addr < 0 || addr >= core_reg_size)
-	{
-	  /* ??? UNIQUE is a new addition.  Don't generate an error.  */
-	  if (regno == ALPHA_UNIQUE_REGNUM)
-	    {
-	      regcache_raw_supply (regcache, regno, NULL);
-	      continue;
-	    }
-	  if (bad_reg < 0)
-	    bad_reg = regno;
-	}
-      else
-	{
-	  regcache_raw_supply (regcache, regno, core_reg_sect + addr);
-	}
-    }
-  if (bad_reg >= 0)
-    {
-      error (_("Register %s not found in core file."),
-	     gdbarch_register_name (gdbarch, bad_reg));
-    }
-}
-
-
-#include <sys/procfs.h>
-/* Prototypes for supply_gregset etc.  */
-#include "gregset.h"
-
-/* See the comment in m68k-tdep.c regarding the utility of these
-   functions.  */
-
-void
-supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregsetp)
-{
-  const long *regp = gregsetp->regs;
-
-  /* PC is in slot 32.  */
-  alpha_supply_int_regs (regcache, -1, regp, regp + 31, NULL);
-}
-
-void
-fill_gregset (const struct regcache *regcache,
-	      gdb_gregset_t *gregsetp, int regno)
-{
-  long *regp = gregsetp->regs;
-
-  /* PC is in slot 32.  */
-  alpha_fill_int_regs (regcache, regno, regp, regp + 31, NULL);
-}
-
-/* Now we do the same thing for floating-point registers.
-   Again, see the comments in m68k-tdep.c.  */
-
-void
-supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
-{
-  const long *regp = fpregsetp->regs;
-
-  /* FPCR is in slot 32.  */
-  alpha_supply_fp_regs (regcache, -1, regp, regp + 31);
-}
-
-void
-fill_fpregset (const struct regcache *regcache,
-	       gdb_fpregset_t *fpregsetp, int regno)
-{
-  long *regp = fpregsetp->regs;
-
-  /* FPCR is in slot 32.  */
-  alpha_fill_fp_regs (regcache, regno, regp, regp + 31);
-}
-
-
-/* Register that we are able to handle alpha core file formats.  */
-
-static struct core_fns alpha_osf_core_fns =
-{
-  /* This really is bfd_target_unknown_flavour.  */
-
-  bfd_target_unknown_flavour,		/* core_flavour */
-  default_check_format,			/* check_format */
-  default_core_sniffer,			/* core_sniffer */
-  fetch_osf_core_registers,		/* core_read_registers */
-  NULL					/* next */
-};
-
-/* Provide a prototype to silence -Wmissing-prototypes.  */
-extern initialize_file_ftype _initialize_alpha_nat;
-
-void
-_initialize_alpha_nat (void)
-{
-  struct target_ops *t;
-
-  t = procfs_target ();
-  add_target (t);
-
-  deprecated_add_core_fns (&alpha_osf_core_fns);
-}
diff --git a/gdb/alpha-osf1-tdep.c b/gdb/alpha-osf1-tdep.c
deleted file mode 100644
index c88be62..0000000
--- a/gdb/alpha-osf1-tdep.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Target-dependent code for OSF/1 on Alpha.
-   Copyright (C) 2002-2014 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "frame.h"
-#include "gdbcore.h"
-#include "value.h"
-#include "osabi.h"
-#include "objfiles.h"
-
-#include "alpha-tdep.h"
-
-static int
-alpha_osf1_pc_in_sigtramp (struct gdbarch *gdbarch,
-			   CORE_ADDR pc, const char *func_name)
-{
-  return (func_name != NULL && strcmp ("__sigtramp", func_name) == 0);
-}
-
-static CORE_ADDR
-alpha_osf1_sigcontext_addr (struct frame_info *this_frame)
-{
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct frame_info *next_frame = get_next_frame (this_frame);
-  struct frame_id next_id = null_frame_id;
-  
-  if (next_frame != NULL)
-    next_id = get_frame_id (next_frame);
-
-  return (read_memory_integer (next_id.stack_addr, 8, byte_order));
-}
-
-static void
-alpha_osf1_init_abi (struct gdbarch_info info,
-                     struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  /* Hook into the MDEBUG frame unwinder.  */
-  alpha_mdebug_init_abi (info, gdbarch);
-
-  /* The next/step support via procfs on OSF1 is broken when running
-     on multi-processor machines.  We need to use software single
-     stepping instead.  */
-  set_gdbarch_software_single_step (gdbarch, alpha_software_single_step);
-
-  tdep->sigcontext_addr = alpha_osf1_sigcontext_addr;
-  tdep->pc_in_sigtramp = alpha_osf1_pc_in_sigtramp;
-
-  tdep->jb_pc = 2;
-  tdep->jb_elt_size = 8;
-}
-
-/* Provide a prototype to silence -Wmissing-prototypes.  */
-extern initialize_file_ftype _initialize_alpha_osf1_tdep;
-
-void
-_initialize_alpha_osf1_tdep (void)
-{
-  gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_OSF1,
-			  alpha_osf1_init_abi);
-}
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 9e4a8d8..27fc592 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -1749,14 +1749,6 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   struct gdbarch_tdep *tdep;
   struct gdbarch *gdbarch;
 
-  /* Try to determine the ABI of the object we are loading.  */
-  if (info.abfd != NULL && info.osabi == GDB_OSABI_UNKNOWN)
-    {
-      /* If it's an ECOFF file, assume it's OSF/1.  */
-      if (bfd_get_flavour (info.abfd) == bfd_target_ecoff_flavour)
-	info.osabi = GDB_OSABI_OSF1;
-    }
-
   /* Find a candidate among extant architectures.  */
   arches = gdbarch_list_lookup_by_info (arches, &info);
   if (arches != NULL)
diff --git a/gdb/config/alpha/alpha-osf3.mh b/gdb/config/alpha/alpha-osf3.mh
deleted file mode 100644
index aa63dc4..0000000
--- a/gdb/config/alpha/alpha-osf3.mh
+++ /dev/null
@@ -1,7 +0,0 @@
-# Host: Little-endian Alpha running OSF/1-3.x and higher using procfs
-NAT_FILE= nm-osf3.h
-NATDEPFILES= alpha-nat.o fork-child.o \
-	solib-osf.o procfs.o proc-api.o proc-events.o proc-flags.o \
-	proc-why.o dec-thread.o
-HAVE_NATIVE_GCORE_HOST = 1
-NAT_CLIBS= -lpthreaddebug
diff --git a/gdb/config/alpha/nm-osf3.h b/gdb/config/alpha/nm-osf3.h
deleted file mode 100644
index a171f5d..0000000
--- a/gdb/config/alpha/nm-osf3.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Native definitions for alpha running OSF/1-3.x and higher, using procfs.
-   Copyright (C) 1995-2014 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Number of traps that happen between exec'ing the shell to run an
-   inferior, and when we finally get to the inferior code, not
-   counting the exec for the shell.  This is 1 on most
-   implementations.  */
-#define START_INFERIOR_TRAPS_EXPECTED 2
-
-/* Don't trace faults under OSF/1, rely on the posting of the appropriate
-   signal if fault tracing is disabled.
-   Tracing T_IFAULT under Alpha OSF/1 causes a `floating point enable'
-   fault from which we cannot continue (except by disabling the
-   tracing).
-   And as OSF/1 doesn't provide the standard fault definitions, the
-   mapping of faults to appropriate signals in procfs_wait is difficult.  */
-#define PROCFS_DONT_TRACE_FAULTS
-
-/* Work around some peculiarities in the OSF/1 procfs implementation.  */
-#define PROCFS_NEED_CLEAR_CURSIG_FOR_KILL
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index cbf11c6..5194850 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -132,9 +132,6 @@
 @V@/gdb/armnbsd-nat.c @V@/gdb/armnbd-nat.c
 @V@/gdb/armnbsd-tdep.c @V@/gdb/armnbd-tdep.c
 @V@/gdb/c-exp.tab.c @V@/gdb/c-exp_tab.c
-@V@/gdb/config/alpha/alpha-osf1.mh @V@/gdb/config/alpha/alphosf1.mh
-@V@/gdb/config/alpha/alpha-osf2.mh @V@/gdb/config/alpha/alphosf2.mh
-@V@/gdb/config/alpha/alpha-osf3.mh @V@/gdb/config/alpha/alphosf3.mh
 @V@/gdb/config/alpha/tm-alphalinux.h @V@/gdb/config/alpha/tm-alplinux.h
 @V@/gdb/config/i386/nm-cygwin64.h @V@/gdb/config/i386/nm-cyg64.h
 @V@/gdb/config/i386/nm-linux64.h @V@/gdb/config/i386/nm-lx64.h
diff --git a/gdb/configure b/gdb/configure
index 889103c..1d6d88b 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -7062,33 +7062,6 @@ _ACEOF
 fi
 
 
-# On alpha-osf, it appears that libtermcap and libcurses are not compatible.
-# There is a very specific comment in /usr/include/curses.h explaining that
-# termcap routines built into libcurses must not be used.
-#
-# The symptoms we observed so far is GDB unexpectedly changing
-# the terminal settings when tgetent is called - this is particularly
-# visible as the output is missing carriage returns, and so rapidly
-# becomes very hard to read.
-#
-# The readline configure script has already decided that libtermcap
-# was enough for its purposes, and so decided to build readline using
-# libtermcap.  Since the TUI mode requires curses, building GDB with
-# TUI enabled results in both libraries to be used at the same time,
-# which is not allowed.  This basically means that GDB with TUI is
-# broken on alpha-osf.
-
-case $host_os in
-  osf* )
-    if test x"$enable_tui" = xyes; then
-      as_fn_error "Building GDB with TUI mode is not supported on this host" "$LINENO" 5
-    fi
-    if test x"$enable_tui" = xauto; then
-      enable_tui=no
-    fi
-    ;;
-esac
-
 # For the TUI, we need enhanced curses functionality.
 if test x"$enable_tui" != xno; then
   prefer_curses=yes
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 2b4f5b0..2d73669 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -546,33 +546,6 @@ AS_HELP_STRING([--with-iconv-bin=PATH], [specify where to find the iconv program
  GDB_AC_DEFINE_RELOCATABLE(ICONV_BIN, iconv, ${iconv_bin})
 ])
 
-# On alpha-osf, it appears that libtermcap and libcurses are not compatible.
-# There is a very specific comment in /usr/include/curses.h explaining that
-# termcap routines built into libcurses must not be used.
-#
-# The symptoms we observed so far is GDB unexpectedly changing
-# the terminal settings when tgetent is called - this is particularly
-# visible as the output is missing carriage returns, and so rapidly
-# becomes very hard to read.
-#
-# The readline configure script has already decided that libtermcap
-# was enough for its purposes, and so decided to build readline using
-# libtermcap.  Since the TUI mode requires curses, building GDB with
-# TUI enabled results in both libraries to be used at the same time,
-# which is not allowed.  This basically means that GDB with TUI is
-# broken on alpha-osf.
-
-case $host_os in
-  osf* )
-    if test x"$enable_tui" = xyes; then
-      AC_MSG_ERROR([Building GDB with TUI mode is not supported on this host])
-    fi
-    if test x"$enable_tui" = xauto; then
-      enable_tui=no
-    fi
-    ;;
-esac
-
 # For the TUI, we need enhanced curses functionality.
 if test x"$enable_tui" != xno; then
   prefer_curses=yes
diff --git a/gdb/configure.host b/gdb/configure.host
index 5f77166..43e41fb 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -20,8 +20,7 @@ case $host in
  vax-*-netbsdelf*)
     ;;
  *-*-irix* | \
- alpha*-*-osf1* | \
- alpha*-*-osf2* | \
+ alpha*-*-osf* | \
  arm*-*-netbsd* | \
  hppa*-*-hiux* | \
  i[34567]86-ncr-* | \
@@ -80,7 +79,6 @@ case "${host}" in
 
 aarch64*-*-linux*)	gdb_host=linux ;;
 
-alpha*-*-osf[3456789]*)	gdb_host=alpha-osf3 ;;
 alpha*-*-linux*)	gdb_host=alpha-linux ;;
 alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
 			gdb_host=fbsd ;;
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index d362cd9..b4d0c8f 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -14,6 +14,7 @@
 
 case $targ in
  *-*-irix* | \
+ alpha*-*-osf* | \
  d10v-*-* | \
  hppa*-*-hiux* | \
  i[34567]86-ncr-* | \
@@ -46,10 +47,6 @@ aarch64*-*-linux*)
 	build_gdbserver=yes
 	;;
 
-alpha*-*-osf*)
-	# Target: Little-endian Alpha running OSF/1
-	gdb_target_obs="alpha-tdep.o alpha-osf1-tdep.o alpha-mdebug-tdep.o"
-	;;
 alpha*-*-linux*)
 	# Target: Little-endian Alpha running Linux
 	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-linux-tdep.o \
diff --git a/gdb/dec-thread.c b/gdb/dec-thread.c
deleted file mode 100644
index 080640d..0000000
--- a/gdb/dec-thread.c
+++ /dev/null
@@ -1,741 +0,0 @@
-/* Copyright (C) 2008-2014 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#include "defs.h"
-#include "command.h"
-#include "gdbcmd.h"
-#include "target.h"
-#include "observer.h"
-#include <sys/procfs.h>
-#include "gregset.h"
-#include "regcache.h"
-#include "inferior.h"
-#include "gdbthread.h"
-
-#include <pthread_debug.h>
-
-/* Print debugging traces if set to non-zero.  */
-static int debug_dec_thread = 0;
-
-/* Non-zero if the dec-thread layer is active.  */
-static int dec_thread_active = 0;
-
-/* The pthread_debug context.  */
-pthreadDebugContext_t debug_context;
-
-/* The dec-thread target_ops structure.  */
-static struct target_ops dec_thread_ops;
-
-/* Print a debug trace if DEBUG_DEC_THREAD is set (its value is adjusted
-   by the user using "set debug dec-thread ...").  */
-
-static void
-debug (char *format, ...)
-{
-  if (debug_dec_thread)
-    {
-      va_list args;
-
-      va_start (args, format);
-      printf_unfiltered ("DEC Threads: ");
-      vprintf_unfiltered (format, args);
-      printf_unfiltered ("\n");
-      va_end (args);
-    }
-}
-
-/* pthread debug callbacks.  */
-
-static int
-suspend_clbk (void *caller_context)
-{
-  return ESUCCESS;
-}
-
-static int
-resume_clbk (void *caller_context)
-{
-  return ESUCCESS;
-} 
-
-static int
-hold_clbk (void *caller_context, pthreadDebugKId_t kernel_tid)
-{ 
-  return ESUCCESS;
-}
-
-static int
-unhold_clbk (void *caller_context, pthreadDebugKId_t kernel_tid)
-{
-  return ESUCCESS;
-}
-
-static int
-read_clbk (void *caller_context, void *address, void *buffer,
-           unsigned long size)
-{
-  int status = target_read_memory ((CORE_ADDR) address, buffer, size);
-
-  if (status != 0)
-    return EINVAL;
-
-  return ESUCCESS;
-}
-
-static int
-write_clbk (void *caller_context, void *address, void *buffer,
-            unsigned long size)
-{
-  int status = target_write_memory ((CORE_ADDR) address, buffer, size);
-  
-  if (status != 0)
-    return EINVAL;
-
-  return ESUCCESS;
-}
-
-/* Get integer regs.  */
-
-static int
-get_reg_clbk(void *caller_context, pthreadDebugGetRegRtn_t regs,
-             pthreadDebugKId_t kernel_tid)
-{
-  debug ("get_reg_clbk");
-
-  /* Not sure that we actually need to do anything in this callback.  */
-  return ESUCCESS;
-}
-
-/* Set integer regs.  */
-
-static int
-set_reg_clbk(void *caller_context, const pthreadDebugRegs_t *regs,
-             pthreadDebugKId_t kernel_tid)
-{
-  debug ("set_reg_clbk");
-
-  /* Not sure that we actually need to do anything in this callback.  */
-  return ESUCCESS;
-}
-
-static int
-output_clbk (void *caller_context, char *line)
-{
-  printf_filtered ("%s\n", line);
-  return ESUCCESS;
-}
-
-static int
-error_clbk (void *caller_context, char *line)
-{
-  fprintf_filtered (gdb_stderr, "%s\n", line);
-  return ESUCCESS;
-}
-
-/* Get floating-point regs.  */
-
-static int
-get_fpreg_clbk (void *caller_context, pthreadDebugFregs_p fregs,
-                pthreadDebugKId_t kernel_tid)
-{
-  debug ("get_fpreg_clbk");
-
-  /* Not sure that we actually need to do anything in this callback.  */
-  return ESUCCESS;
-}
-
-/* Set floating-point regs.  */
-
-static int
-set_fpreg_clbk (void *caller_context, const pthreadDebugFregs_t *fregs,
-                pthreadDebugKId_t kernel_tid)
-{
-  debug ("set_fpreg_clbk");
-
-  /* Not sure that we actually need to do anything in this callback.  */
-  return ESUCCESS;
-}
-
-static void *
-malloc_clbk (void *caller_context, size_t size)
-{
-  return xmalloc (size);
-}
-
-static void
-free_clbk (void *caller_context, void *address)
-{
-  xfree (address);
-}
-
-static int
-kthdinfo_clbk (pthreadDebugClient_t caller_context,
-               pthreadDebugKId_t kernel_tid,
-               pthreadDebugKThreadInfo_p thread_info)
-{
-  return ENOTSUP;
-}
-
-static int
-speckthd_clbk (pthreadDebugClient_t caller_context,
-               pthreadDebugSpecialType_t type,
-               pthreadDebugKId_t *kernel_tid)
-{
-  return ENOTSUP;
-}
-
-static pthreadDebugCallbacks_t debug_callbacks =
-{
-  PTHREAD_DEBUG_VERSION,
-  (pthreadDebugGetMemRtn_t) read_clbk,
-  (pthreadDebugSetMemRtn_t) write_clbk,
-  suspend_clbk,
-  resume_clbk,
-  kthdinfo_clbk,
-  hold_clbk,
-  unhold_clbk,
-  (pthreadDebugGetFregRtn_t) get_fpreg_clbk,
-  (pthreadDebugSetFregRtn_t) set_fpreg_clbk,
-  (pthreadDebugGetRegRtn_t) get_reg_clbk,
-  (pthreadDebugSetRegRtn_t) set_reg_clbk,
-  (pthreadDebugOutputRtn_t) output_clbk,
-  (pthreadDebugOutputRtn_t) error_clbk,
-  malloc_clbk,
-  free_clbk,
-  speckthd_clbk
-};
-
-/* Activate thread support if appropriate.  Do nothing if thread
-   support is already active.  */
-
-static void
-enable_dec_thread (void)
-{
-  struct bound_minimal_symbol msym;
-  void* caller_context;
-  int status;
-
-  /* If already active, nothing more to do.  */
-  if (dec_thread_active)
-    return;
-
-  msym = lookup_minimal_symbol ("__pthread_dbg_symtable", NULL, NULL);
-  if (msym.minsym == NULL)
-    {
-      debug ("enable_dec_thread: No __pthread_dbg_symtable");
-      return;
-    }
-
-  status = pthreadDebugContextInit (&caller_context, &debug_callbacks,
-                                    (void *) SYMBOL_VALUE_ADDRESS (msym.minsym),
-                                    &debug_context);
-  if (status != ESUCCESS)
-    {
-      debug ("enable_dec_thread: pthreadDebugContextInit -> %d",
-             status);
-      return;
-    }
-
-  push_target (&dec_thread_ops);
-  dec_thread_active = 1;
-
-  debug ("enable_dec_thread: Thread support enabled.");
-}
-
-/* Deactivate thread support.  Do nothing if thread support is
-   already inactive.  */
-
-static void
-disable_dec_thread (void)
-{
-  if (!dec_thread_active)
-    return;
-
-  pthreadDebugContextDestroy (debug_context);
-  unpush_target (&dec_thread_ops);
-  dec_thread_active = 0;
-}
-
-/* A structure that contains a thread ID and is associated
-   pthreadDebugThreadInfo_t data.  */
-
-struct dec_thread_info
-{
-  pthreadDebugId_t thread;
-  pthreadDebugThreadInfo_t info;
-};
-typedef struct dec_thread_info dec_thread_info_s;
-
-/* The list of user threads.  */
-
-DEF_VEC_O (dec_thread_info_s);
-VEC(dec_thread_info_s) *dec_thread_list;
-
-/* Release the memory used by the given VECP thread list pointer.
-   Then set *VECP to NULL.  */
-
-static void
-free_dec_thread_info_vec (VEC(dec_thread_info_s) **vecp)
-{
-  int i;
-  struct dec_thread_info *item;
-  VEC(dec_thread_info_s) *vec = *vecp;
-
-  for (i = 0; VEC_iterate (dec_thread_info_s, vec, i, item); i++)
-     xfree (item);
-  VEC_free (dec_thread_info_s, vec);
-  *vecp = NULL;
-}
-
-/* Return a thread's ptid given its associated INFO.  */
-
-static ptid_t
-ptid_build_from_info (struct dec_thread_info info)
-{
-  int pid = ptid_get_pid (inferior_ptid);
-
-  return ptid_build (pid, 0, (long) info.thread);
-}
-
-/* Return non-zero if PTID is still alive.
-
-   Assumes that DEC_THREAD_LIST is up to date.  */
-static int
-dec_thread_ptid_is_alive (ptid_t ptid)
-{
-  pthreadDebugId_t tid = ptid_get_tid (ptid);
-  int i;
-  struct dec_thread_info *info;
-
-  if (tid == 0)
-    /* This is the thread corresponding to the process.  This ptid
-       is always alive until the program exits.  */
-    return 1;
-
-  /* Search whether an entry with the same tid exists in the dec-thread
-     list of threads.  If it does, then the thread is still alive.
-     No match found means that the thread must be dead, now.  */
-  for (i = 0; VEC_iterate (dec_thread_info_s, dec_thread_list, i, info); i++)
-    if (info->thread == tid)
-      return 1;
-  return 0;
-}
-
-/* Recompute the list of user threads and store the result in
-   DEC_THREAD_LIST.  */
-
-static void
-update_dec_thread_list (void)
-{
-  pthreadDebugId_t thread;
-  pthreadDebugThreadInfo_t info;
-  int res;
-
-  free_dec_thread_info_vec (&dec_thread_list);
-  res = pthreadDebugThdSeqInit (debug_context, &thread);
-  while (res == ESUCCESS)
-    {
-
-      res = pthreadDebugThdGetInfo (debug_context, thread, &info);
-      if (res != ESUCCESS)
-        warning (_("unable to get thread info, ignoring thread %ld"),
-                   thread);
-      else if (info.kind == PTHREAD_DEBUG_THD_KIND_INITIAL
-               || info.kind == PTHREAD_DEBUG_THD_KIND_NORMAL)
-        {
-          struct dec_thread_info *item = 
-            xmalloc (sizeof (struct dec_thread_info));
-
-          item->thread = thread;
-          item->info = info;
-          VEC_safe_push (dec_thread_info_s, dec_thread_list, item);
-        }
-      res = pthreadDebugThdSeqNext (debug_context, &thread);
-    }
-  pthreadDebugThdSeqDestroy (debug_context);
-}
-
-/* A callback to count the number of threads known to GDB.  */
-
-static int
-dec_thread_count_gdb_threads (struct thread_info *ignored, void *context)
-{
-  int *count = (int *) context;
-
-  *count = *count + 1;
-  return 0;
-}
-
-/* A callback that saves the given thread INFO at the end of an
-   array.  The end of the array is given in the CONTEXT and is
-   incremented once the info has been added.  */
-
-static int
-dec_thread_add_gdb_thread (struct thread_info *info, void *context)
-{
-  struct thread_info ***listp = (struct thread_info ***) context;
-  
-  **listp = info;
-  *listp = *listp + 1;
-  return 0;
-}
-
-/* Implement the find_new_thread target_ops method.  */
-
-static void
-dec_thread_find_new_threads (struct target_ops *ops)
-{
-  int i;
-  struct dec_thread_info *info;
-
-  update_dec_thread_list ();
-  for (i = 0; VEC_iterate (dec_thread_info_s, dec_thread_list, i, info); i++)
-    {
-      ptid_t ptid = ptid_build_from_info (*info);
-
-      if (!in_thread_list (ptid))
-        add_thread (ptid);
-    }
-}
-
-/* Resynchronize the list of threads known by GDB with the actual
-   list of threads reported by libpthread_debug.  */
-
-static void
-resync_thread_list (struct target_ops *ops)
-{
-  int i;
-  int num_gdb_threads = 0;
-  struct thread_info **gdb_thread_list;
-  struct thread_info **next_thread_info;
-
-  /* Add new threads.  */
-  dec_thread_find_new_threads (ops);
-
-  /* Remove threads that no longer exist.  To help with the search,
-     we build an array of GDB threads, and then iterate over this
-     array.  */
-
-  iterate_over_threads (dec_thread_count_gdb_threads,
-                        (void *) &num_gdb_threads);
-  gdb_thread_list = alloca (num_gdb_threads * sizeof (struct thread_info *));
-  next_thread_info = gdb_thread_list;
-  iterate_over_threads (dec_thread_add_gdb_thread, (void *) &next_thread_info);
-
-  for (i = 0; i < num_gdb_threads; i++)
-    if (!dec_thread_ptid_is_alive (gdb_thread_list[i]->ptid))
-      delete_thread (gdb_thread_list[i]->ptid);
-}
-
-/* The "to_detach" method of the dec_thread_ops.  */
-
-static void
-dec_thread_detach (struct target_ops *ops, const char *args, int from_tty)
-{   
-  struct target_ops *beneath = find_target_beneath (ops);
-
-  debug ("dec_thread_detach");
-
-  disable_dec_thread ();
-  beneath->to_detach (beneath, args, from_tty);
-}
-
-/* Return the ptid of the thread that is currently active.  */
-
-static ptid_t
-get_active_ptid (void)
-{
-  int i;
-  struct dec_thread_info *info;
-
-  for (i = 0; VEC_iterate (dec_thread_info_s, dec_thread_list, i, info);
-       i++)
-    if (info->info.state == PTHREAD_DEBUG_STATE_RUNNING)
-      return ptid_build_from_info (*info);
-
-  /* No active thread found.  This can happen when the program
-     has just exited.  */
-  return null_ptid;
-}
-
-/* The "to_wait" method of the dec_thread_ops.  */
-
-static ptid_t
-dec_thread_wait (struct target_ops *ops,
-		 ptid_t ptid, struct target_waitstatus *status, int options)
-{
-  ptid_t active_ptid;
-  struct target_ops *beneath = find_target_beneath (ops);
-
-  debug ("dec_thread_wait");
-
-  ptid = beneath->to_wait (beneath, ptid, status, options);
-
-  /* The ptid returned by the target beneath us is the ptid of the process.
-     We need to find which thread is currently active and return its ptid.  */
-  resync_thread_list (ops);
-  active_ptid = get_active_ptid ();
-  if (ptid_equal (active_ptid, null_ptid))
-    return ptid;
-  return active_ptid;
-}
-
-/* Fetch the general purpose and floating point registers for the given
-   thread TID, and store the result in GREGSET and FPREGSET.  Return
-   zero if successful.  */
-
-static int
-dec_thread_get_regsets (pthreadDebugId_t tid, gdb_gregset_t *gregset,
-                        gdb_fpregset_t *fpregset)
-{
-  int res;
-  pthreadDebugRegs_t regs;
-  pthreadDebugFregs_t fregs;
-
-  res = pthreadDebugThdGetReg (debug_context, tid, &regs);
-  if (res != ESUCCESS)
-    {
-      debug ("dec_thread_get_regsets: pthreadDebugThdGetReg -> %d", res);
-      return -1;
-    }
-  memcpy (gregset->regs, &regs, sizeof (regs));
-
-  res = pthreadDebugThdGetFreg (debug_context, tid, &fregs);
-  if (res != ESUCCESS)
-    {
-      debug ("dec_thread_get_regsets: pthreadDebugThdGetFreg -> %d", res);
-      return -1;
-    }
-  memcpy (fpregset->regs, &fregs, sizeof (fregs));
-
-  return 0;
-}
-
-/* The "to_fetch_registers" method of the dec_thread_ops.
-
-   Because the dec-thread debug API doesn't allow us to fetch
-   only one register, we simply ignore regno and fetch+supply all
-   registers.  */
-
-static void
-dec_thread_fetch_registers (struct target_ops *ops,
-                            struct regcache *regcache, int regno)
-{
-  pthreadDebugId_t tid = ptid_get_tid (inferior_ptid);
-  gregset_t gregset;
-  fpregset_t fpregset;
-  int res;
-
-  debug ("dec_thread_fetch_registers (tid=%ld, regno=%d)", tid, regno);
-
-
-  if (tid == 0 || ptid_equal (inferior_ptid, get_active_ptid ()))
-    {
-      struct target_ops *beneath = find_target_beneath (ops);
-
-      beneath->to_fetch_registers (beneath, regcache, regno);
-      return;
-    }
-
-  res = dec_thread_get_regsets (tid, &gregset, &fpregset);
-  if (res != 0)
-    return;
-
-  supply_gregset (regcache, &gregset);
-  supply_fpregset (regcache, &fpregset);
-}
-
-/* Store the registers given in GREGSET and FPREGSET into the associated
-   general purpose and floating point registers of thread TID.  Return
-   zero if successful.  */
-
-static int
-dec_thread_set_regsets (pthreadDebugId_t tid, gdb_gregset_t gregset,
-                        gdb_fpregset_t fpregset)
-{
-  int res;
-  pthreadDebugRegs_t regs;
-  pthreadDebugFregs_t fregs;
-
-  memcpy (&regs, gregset.regs, sizeof (regs));
-  res = pthreadDebugThdSetReg (debug_context, tid, &regs);
-  if (res != ESUCCESS)
-    {
-      debug ("dec_thread_set_regsets: pthreadDebugThdSetReg -> %d", res);
-      return -1;
-    }
-
-  memcpy (&fregs, fpregset.regs, sizeof (fregs));
-  res = pthreadDebugThdSetFreg (debug_context, tid, &fregs);
-  if (res != ESUCCESS)
-    {
-      debug ("dec_thread_set_regsets: pthreadDebugThdSetFreg -> %d", res);
-      return -1;
-    }
-
-  return 0;
-}
-
-/* The "to_store_registers" method of the dec_thread_ops.
-
-   Because the dec-thread debug API doesn't allow us to store
-   just one register, we store all the registers.  */
-
-static void
-dec_thread_store_registers (struct target_ops *ops,
-                            struct regcache *regcache, int regno)
-{
-  pthreadDebugId_t tid = ptid_get_tid (inferior_ptid);
-  gregset_t gregset;
-  fpregset_t fpregset;
-  int res;
-
-  debug ("dec_thread_store_registers (tid=%ld, regno=%d)", tid, regno);
-
-  if (tid == 0 || ptid_equal (inferior_ptid, get_active_ptid ()))
-    {
-      struct target_ops *beneath = find_target_beneath (ops);
-
-      beneath->to_store_registers (beneath, regcache, regno);
-      return;
-    }
-
-  /* FIXME: brobecker/2008-05-28: I wonder if we could simply check
-     in which register set the register is and then only store the
-     registers for that register set, instead of storing both register
-     sets.  */
-  fill_gregset (regcache, &gregset, -1);
-  fill_fpregset (regcache, &fpregset, -1);
-  
-  res = dec_thread_set_regsets (tid, gregset, fpregset);
-  if (res != 0)
-    warning (_("failed to store registers."));
-}
-
-/* The "to_mourn_inferior" method of the dec_thread_ops.  */
-
-static void
-dec_thread_mourn_inferior (struct target_ops *ops)
-{
-  struct target_ops *beneath = find_target_beneath (ops);
-
-  debug ("dec_thread_mourn_inferior");
-
-  disable_dec_thread ();
-  beneath->to_mourn_inferior (beneath);
-}
-
-/* The "to_thread_alive" method of the dec_thread_ops.  */
-static int
-dec_thread_thread_alive (struct target_ops *ops, ptid_t ptid)
-{
-  debug ("dec_thread_thread_alive (tid=%ld)", ptid_get_tid (ptid));
-
-  /* The thread list maintained by GDB is up to date, since we update
-     it everytime we stop.   So check this list.  */
-  return in_thread_list (ptid);
-}
-
-/* The "to_pid_to_str" method of the dec_thread_ops.  */
-
-static char *
-dec_thread_pid_to_str (struct target_ops *ops, ptid_t ptid)
-{
-  static char *ret = NULL;
-
-  if (ptid_get_tid (ptid) == 0)
-    {
-      struct target_ops *beneath = find_target_beneath (ops);
-
-      return beneath->to_pid_to_str (beneath, ptid);
-    }
-
-  /* Free previous return value; a new one will be allocated by
-     xstrprintf().  */
-  xfree (ret);
-
-  ret = xstrprintf (_("Thread %ld"), ptid_get_tid (ptid));
-  return ret;
-}
-
-/* A "new-objfile" observer.  Used to activate/deactivate dec-thread
-   support.  */
-
-static void
-dec_thread_new_objfile_observer (struct objfile *objfile)
-{
-  if (objfile != NULL)
-     enable_dec_thread ();
-  else
-     disable_dec_thread ();
-}
-
-/* The "to_get_ada_task_ptid" method of the dec_thread_ops.  */
-
-static ptid_t
-dec_thread_get_ada_task_ptid (struct target_ops *self, long lwp, long thread)
-{
-  int i;
-  struct dec_thread_info *info;
-
-  debug ("dec_thread_get_ada_task_ptid (struct target_ops *self,"
-	 " lwp=0x%lx, thread=0x%lx)",
-         lwp, thread);
-
-  for (i = 0; VEC_iterate (dec_thread_info_s, dec_thread_list, i, info);
-       i++)
-    if (info->info.teb == (pthread_t) thread)
-      return ptid_build_from_info (*info);
-
-  warning (_("Could not find thread id from THREAD = 0x%lx"), thread);
-  return inferior_ptid;
-}
-
-static void
-init_dec_thread_ops (void)
-{
-  dec_thread_ops.to_shortname          = "dec-threads";
-  dec_thread_ops.to_longname           = _("DEC threads support");
-  dec_thread_ops.to_doc                = _("DEC threads support");
-  dec_thread_ops.to_detach             = dec_thread_detach;
-  dec_thread_ops.to_wait               = dec_thread_wait;
-  dec_thread_ops.to_fetch_registers    = dec_thread_fetch_registers;
-  dec_thread_ops.to_store_registers    = dec_thread_store_registers;
-  dec_thread_ops.to_mourn_inferior     = dec_thread_mourn_inferior;
-  dec_thread_ops.to_thread_alive       = dec_thread_thread_alive;
-  dec_thread_ops.to_find_new_threads   = dec_thread_find_new_threads;
-  dec_thread_ops.to_pid_to_str         = dec_thread_pid_to_str;
-  dec_thread_ops.to_stratum            = thread_stratum;
-  dec_thread_ops.to_get_ada_task_ptid  = dec_thread_get_ada_task_ptid;
-  dec_thread_ops.to_magic              = OPS_MAGIC;
-}
-
-void
-_initialize_dec_thread (void)
-{
-  init_dec_thread_ops ();
-  complete_target_initialization (&dec_thread_ops);
-
-  observer_attach_new_objfile (dec_thread_new_objfile_observer);
-
-  add_setshow_boolean_cmd ("dec-thread", class_maintenance, &debug_dec_thread,
-                            _("Set debugging of DEC threads module."),
-                            _("Show debugging of DEC threads module."),
-                            _("Enables debugging output (used to debug GDB)."),
-                            NULL, NULL,
-                            &setdebuglist, &showdebuglist);
-}
diff --git a/gdb/defs.h b/gdb/defs.h
index 8914512..1eb43eb 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -514,7 +514,6 @@ enum gdb_osabi
   GDB_OSABI_SVR4,
   GDB_OSABI_HURD,
   GDB_OSABI_SOLARIS,
-  GDB_OSABI_OSF1,
   GDB_OSABI_LINUX,
   GDB_OSABI_FREEBSD_AOUT,
   GDB_OSABI_FREEBSD_ELF,
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 429c650..a1b8ac7 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -15725,10 +15725,9 @@ When inspecting a core file, as opposed to debugging a live program,
 tasking support may be limited or even unavailable, depending on
 the platform being used.
 For instance, on x86-linux, the list of tasks is available, but task
-switching is not supported.  On Tru64, however, task switching will work
-as usual.
+switching is not supported.
 
-On certain platforms, including Tru64, the debugger needs to perform some
+On certain platforms, the debugger needs to perform some
 memory writes in order to provide Ada tasking support.  When inspecting
 a core file, this means that the core file must be opened with read-write
 privileges, using the command @samp{"set write on"} (@pxref{Patching}).
@@ -19726,8 +19725,7 @@ If @value{GDBN} is configured for an operating system with this
 facility, the command @code{info proc} is available to report
 information about the process running your program, or about any
 process running on your system.  This includes, as of this writing,
-@sc{gnu}/Linux, OSF/1 (Digital Unix), Solaris, and Irix, but
-not HP-UX, for example.
+@sc{gnu}/Linux and Solaris, but not HP-UX, for example.
 
 This command may also work on core files that were created on a system
 that has the @samp{/proc} facility.
diff --git a/gdb/inferior.h b/gdb/inferior.h
index e716005..0129549 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -250,11 +250,9 @@ enum stop_kind
 
 /* Number of traps that happen between exec'ing the shell to run an
    inferior and when we finally get to the inferior code, not counting
-   the exec for the shell.  This is 1 on most implementations.
-   Overridden in nm.h files.  */
-#if !defined(START_INFERIOR_TRAPS_EXPECTED)
+   the exec for the shell.  This is 1 on all supported
+   implementations.  */
 #define START_INFERIOR_TRAPS_EXPECTED	1
-#endif
 
 struct private_inferior;
 
diff --git a/gdb/osabi.c b/gdb/osabi.c
index cdba812..d33ef9c 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -50,7 +50,6 @@ static const char * const gdb_osabi_names[] =
   "SVR4",
   "GNU/Hurd",
   "Solaris",
-  "OSF/1",
   "GNU/Linux",
   "FreeBSD a.out",
   "FreeBSD ELF",
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 15a0409..6b9468f 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -2917,16 +2917,9 @@ procfs_debug_inferior (procinfo *pi)
   sysset_t *traced_syscall_exits;
   int status;
 
-#ifdef PROCFS_DONT_TRACE_FAULTS
-  /* On some systems (OSF), we don't trace hardware faults.
-     Apparently it's enough that we catch them as signals.
-     Wonder why we don't just do that in general?  */
-  premptyset (&traced_faults);		/* don't trace faults.  */
-#else
   /* Register to trace hardware faults in the child.  */
   prfillset (&traced_faults);		/* trace all faults...  */
   gdb_prdelset  (&traced_faults, FLTPAGE);	/* except page fault.  */
-#endif
   if (!proc_set_traced_faults  (pi, &traced_faults))
     return __LINE__;
 
@@ -4227,16 +4220,6 @@ unconditionally_kill_inferior (procinfo *pi)
   int parent_pid;
 
   parent_pid = proc_parent_pid (pi);
-#ifdef PROCFS_NEED_CLEAR_CURSIG_FOR_KILL
-  /* FIXME: use access functions.  */
-  /* Alpha OSF/1-3.x procfs needs a clear of the current signal
-     before the PIOCKILL, otherwise it might generate a corrupted core
-     file for the inferior.  */
-  if (ioctl (pi->ctl_fd, PIOCSSIG, NULL) < 0)
-    {
-      printf_filtered ("unconditionally_kill: SSIG failed!\n");
-    }
-#endif
 #ifdef PROCFS_NEED_PIOCSSIG_FOR_KILL
   /* Alpha OSF/1-2.x procfs needs a PIOCSSIG call with a SIGKILL signal
      to kill the inferior, otherwise it might remain stopped with a
diff --git a/gdb/solib-osf.c b/gdb/solib-osf.c
deleted file mode 100644
index 24915cb..0000000
--- a/gdb/solib-osf.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/* Handle OSF/1, Digital UNIX, and Tru64 shared libraries
-   for GDB, the GNU Debugger.
-   Copyright (C) 1993-2014 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* When handling shared libraries, GDB has to find out the pathnames
-   of all shared libraries that are currently loaded (to read in their
-   symbols) and where the shared libraries are loaded in memory
-   (to relocate them properly from their prelinked addresses to the
-   current load address).
-
-   Under OSF/1 there are two possibilities to get at this information:
-
-   1) Peek around in the runtime loader structures.
-   These are not documented, and they are not defined in the system
-   header files.  The definitions below were obtained by experimentation,
-   but they seem stable enough.
-
-   2) Use the libxproc.a library, which contains the equivalent ldr_*
-   routines.  The library is documented in Tru64 5.x, but as of 5.1, it
-   only allows a process to examine itself.  On earlier versions, it
-   may require that the GDB executable be dynamically linked and that
-   NAT_CLIBS include -lxproc -Wl,-expect_unresolved,ldr_process_context
-   for GDB and all applications that are using libgdb.
-
-   We will use the peeking approach until libxproc.a works for other
-   processes.  */
-
-#include "defs.h"
-
-#include <sys/types.h>
-#include <signal.h>
-#include "bfd.h"
-#include "symtab.h"
-#include "symfile.h"
-#include "objfiles.h"
-#include "target.h"
-#include "inferior.h"
-#include "infrun.h"
-#include "gdbthread.h"
-#include "solist.h"
-#include "solib.h"
-
-#ifdef USE_LDR_ROUTINES
-# include <loader.h>
-#endif
-
-#ifndef USE_LDR_ROUTINES
-/* Definition of runtime loader structures, found by experimentation.  */
-#define RLD_CONTEXT_ADDRESS	0x3ffc0000000
-
-/* Per-module information structure referenced by ldr_context_t.head.  */
-
-typedef struct
-  {
-    CORE_ADDR next;
-    CORE_ADDR previous;
-    CORE_ADDR unknown1;
-    CORE_ADDR module_name;
-    CORE_ADDR modinfo_addr;	/* Used by next_link_map_member() to detect
-				   the end of the shared module list.  */
-    long module_id;
-    CORE_ADDR unknown2;
-    CORE_ADDR unknown3;
-    long region_count;
-    CORE_ADDR regioninfo_addr;
-  }
-ldr_module_info_t;
-
-/* Per-region structure referenced by ldr_module_info_t.regioninfo_addr.  */
-
-typedef struct
-  {
-    long unknown1;
-    CORE_ADDR regionname_addr;
-    long protection;
-    CORE_ADDR vaddr;
-    CORE_ADDR mapaddr;
-    long size;
-    long unknown2[5];
-  }
-ldr_region_info_t;
-
-/* Structure at RLD_CONTEXT_ADDRESS specifying the start and finish addresses
-   of the shared module list.  */
-
-typedef struct
-  {
-    CORE_ADDR unknown1;
-    CORE_ADDR unknown2;
-    CORE_ADDR head;
-    CORE_ADDR tail;
-  }
-ldr_context_t;
-#endif   /* !USE_LDR_ROUTINES */
-
-/* Per-section information, stored in struct lm_info.secs.  */
-
-struct lm_sec
-  {
-    CORE_ADDR offset;		/* difference between default and actual
-				   virtual addresses of section .name */
-    CORE_ADDR nameaddr;		/* address in inferior of section name */
-    const char *name;		/* name of section, null if not fetched */
-  };
-
-/* Per-module information, stored in struct so_list.lm_info.  */
-
-struct lm_info
-  {
-    int isloader;		/* whether the module is /sbin/loader */
-    int nsecs;			/* length of .secs */
-    struct lm_sec secs[1];	/* variable-length array of sections, sorted
-				   by name */
-  };
-
-/* Context for iterating through the inferior's shared module list.  */
-
-struct read_map_ctxt
-  {
-#ifdef USE_LDR_ROUTINES
-    ldr_process_t proc;
-    ldr_module_t next;
-#else
-    CORE_ADDR next;		/* next element in module list */
-    CORE_ADDR tail;		/* last element in module list */
-#endif
-  };
-
-/* Forward declaration for this module's autoinit function.  */
-
-extern void _initialize_osf_solib (void);
-
-#ifdef USE_LDR_ROUTINES
-# if 0
-/* This routine is intended to be called by ldr_* routines to read memory from
-   the current target.  Usage:
-
-     ldr_process = ldr_core_process ();
-     ldr_set_core_reader (ldr_read_memory);
-     ldr_xdetach (ldr_process);
-     ldr_xattach (ldr_process);
-
-   ldr_core_process() and ldr_read_memory() are neither documented nor
-   declared in system header files.  They work with OSF/1 2.x, and they might
-   work with later versions as well.  */
-
-static int
-ldr_read_memory (CORE_ADDR memaddr, char *myaddr, int len, int readstring)
-{
-  int result;
-  char *buffer;
-
-  if (readstring)
-    {
-      target_read_string (memaddr, &buffer, len, &result);
-      if (result == 0)
-	strcpy (myaddr, buffer);
-      xfree (buffer);
-    }
-  else
-    result = target_read_memory (memaddr, myaddr, len);
-
-  if (result != 0)
-    result = -result;
-  return result;
-}
-# endif   /* 0 */
-#endif   /* USE_LDR_ROUTINES */
-
-/* Comparison for qsort() and bsearch(): return -1, 0, or 1 according to
-   whether lm_sec *P1's name is lexically less than, equal to, or greater
-   than that of *P2.  */
-
-static int
-lm_sec_cmp (const void *p1, const void *p2)
-{
-  const struct lm_sec *lms1 = p1, *lms2 = p2;
-
-  return strcmp (lms1->name, lms2->name);
-}
-
-/* Sort LMI->secs so that osf_relocate_section_addresses() can binary-search
-   it.  */
-
-static void
-lm_secs_sort (struct lm_info *lmi)
-{
-  qsort (lmi->secs, lmi->nsecs, sizeof *lmi->secs, lm_sec_cmp);
-}
-
-/* Populate name fields of LMI->secs.  */
-
-static void
-fetch_sec_names (struct lm_info *lmi)
-{
-#ifndef USE_LDR_ROUTINES
-  int i, errcode;
-  struct lm_sec *lms;
-  char *name;
-
-  for (i = 0; i < lmi->nsecs; i++)
-    {
-      lms = lmi->secs + i;
-      target_read_string (lms->nameaddr, &name, PATH_MAX, &errcode);
-      if (errcode != 0)
-	{
-	  warning (_("unable to read shared sec name at 0x%lx"),
-		   lms->nameaddr);
-	  name = xstrdup ("");
-	}
-      lms->name = name;
-    }
-  lm_secs_sort (lmi);
-#endif
-}
-
-/* target_so_ops callback.  Adjust SEC's addresses after it's been mapped into
-   the process.  */
-
-static void
-osf_relocate_section_addresses (struct so_list *so,
-				struct target_section *sec)
-{
-  struct lm_info *lmi;
-  struct lm_sec lms_key, *lms;
-
-  /* Fetch SO's section names if we haven't done so already.  */
-  lmi = so->lm_info;
-  if (lmi->nsecs && !lmi->secs[0].name)
-    fetch_sec_names (lmi);
-
-  /* Binary-search for offset information corresponding to SEC.  */
-  lms_key.name = sec->the_bfd_section->name;
-  lms = bsearch (&lms_key, lmi->secs, lmi->nsecs, sizeof *lms, lm_sec_cmp);
-  if (lms)
-    {
-      sec->addr += lms->offset;
-      sec->endaddr += lms->offset;
-    }
-}
-
-/* target_so_ops callback.  Free parts of SO allocated by this file.  */
-
-static void
-osf_free_so (struct so_list *so)
-{
-  int i;
-  const char *name;
-
-  for (i = 0; i < so->lm_info->nsecs; i++)
-    {
-      name = so->lm_info->secs[i].name;
-      if (name)
-	xfree ((void *) name);
-    }
-  xfree (so->lm_info);
-}
-
-/* target_so_ops callback.  Discard information accumulated by this file and
-   not freed by osf_free_so().  */
-
-static void
-osf_clear_solib (void)
-{
-  return;
-}
-
-/* target_so_ops callback.  Prepare to handle shared libraries after the
-   inferior process has been created but before it's executed any
-   instructions.
-
-   For a statically bound executable, the inferior's first instruction is the
-   one at "_start", or a similar text label.  No further processing is needed
-   in that case.
-
-   For a dynamically bound executable, this first instruction is somewhere
-   in the rld, and the actual user executable is not yet mapped in.
-   We continue the inferior again, rld then maps in the actual user
-   executable and any needed shared libraries and then sends
-   itself a SIGTRAP.
-
-   At that point we discover the names of all shared libraries and
-   read their symbols in.
-
-   FIXME
-
-   This code does not properly handle hitting breakpoints which the
-   user might have set in the rld itself.  Proper handling would have
-   to check if the SIGTRAP happened due to a kill call.
-
-   Also, what if child has exit()ed?  Must exit loop somehow.  */
-
-static void
-osf_solib_create_inferior_hook (int from_tty)
-{
-  struct inferior *inf;
-  struct thread_info *tp;
-
-  inf = current_inferior ();
-
-  /* If we are attaching to the inferior, the shared libraries
-     have already been mapped, so nothing more to do.  */
-  if (inf->attach_flag)
-    return;
-
-  /* Nothing to do for statically bound executables.  */
-
-  if (symfile_objfile == NULL
-      || symfile_objfile->obfd == NULL
-      || ((bfd_get_file_flags (symfile_objfile->obfd) & DYNAMIC) == 0))
-    return;
-
-  /* Now run the target.  It will eventually get a SIGTRAP, at
-     which point all of the libraries will have been mapped in and we
-     can go groveling around in the rld structures to find
-     out what we need to know about them.
-     
-     If debugging from a core file, we cannot resume the execution
-     of the inferior.  But this is actually not an issue, because
-     shared libraries have already been mapped anyways, which means
-     we have nothing more to do.  */
-  if (!target_can_run (&current_target))
-    return;
-
-  tp = inferior_thread ();
-  clear_proceed_status (0);
-  inf->control.stop_soon = STOP_QUIETLY;
-  tp->suspend.stop_signal = GDB_SIGNAL_0;
-  do
-    {
-      target_resume (minus_one_ptid, 0, tp->suspend.stop_signal);
-      wait_for_inferior ();
-    }
-  while (tp->suspend.stop_signal != GDB_SIGNAL_TRAP);
-
-  /*  solib_add will call reinit_frame_cache.
-     But we are stopped in the runtime loader and we do not have symbols
-     for the runtime loader.  So heuristic_proc_start will be called
-     and will put out an annoying warning.
-     Delaying the resetting of stop_soon until after symbol loading
-     suppresses the warning.  */
-  solib_add ((char *) 0, 0, (struct target_ops *) 0, auto_solib_add);
-  inf->control.stop_soon = NO_STOP_QUIETLY;
-}
-
-/* target_so_ops callback.  Do additional symbol handling, lookup, etc. after
-   symbols for a shared object have been loaded.  */
-
-static void
-osf_special_symbol_handling (void)
-{
-  return;
-}
-
-/* Initialize CTXT in preparation for iterating through the inferior's module
-   list using read_map().  Return success.  */
-
-static int
-open_map (struct read_map_ctxt *ctxt)
-{
-#ifdef USE_LDR_ROUTINES
-  /* Note: As originally written, ldr_my_process() was used to obtain
-     the value for ctxt->proc.  This is incorrect, however, since
-     ldr_my_process() retrieves the "unique identifier" associated
-     with the current process (i.e. GDB) and not the one being
-     debugged.  Presumably, the pid of the process being debugged is
-     compatible with the "unique identifier" used by the ldr_
-     routines, so we use that.  */
-  ctxt->proc = ptid_get_pid (inferior_ptid);
-  if (ldr_xattach (ctxt->proc) != 0)
-    return 0;
-  ctxt->next = LDR_NULL_MODULE;
-#else
-  CORE_ADDR ldr_context_addr, prev, next;
-  ldr_context_t ldr_context;
-
-  if (target_read_memory ((CORE_ADDR) RLD_CONTEXT_ADDRESS,
-			  (char *) &ldr_context_addr,
-			  sizeof (CORE_ADDR)) != 0)
-    return 0;
-  if (target_read_memory (ldr_context_addr,
-			  (char *) &ldr_context,
-			  sizeof (ldr_context_t)) != 0)
-    return 0;
-  ctxt->next = ldr_context.head;
-  ctxt->tail = ldr_context.tail;
-#endif
-  return 1;
-}
-
-/* Initialize SO to have module NAME, /sbin/loader indicator ISLOADR, and
-   space for NSECS sections.  */
-
-static void
-init_so (struct so_list *so, char *name, int isloader, int nsecs)
-{
-  int namelen, i;
-
-  /* solib.c requires various fields to be initialized to 0.  */
-  memset (so, 0, sizeof *so);
-
-  /* Copy the name.  */
-  namelen = strlen (name);
-  if (namelen >= SO_NAME_MAX_PATH_SIZE)
-    namelen = SO_NAME_MAX_PATH_SIZE - 1;
-
-  memcpy (so->so_original_name, name, namelen);
-  so->so_original_name[namelen] = '\0';
-  memcpy (so->so_name, so->so_original_name, namelen + 1);
-
-  /* Allocate section space.  */
-  so->lm_info = xmalloc (sizeof (struct lm_info)
-                         + (nsecs - 1) * sizeof (struct lm_sec));
-  so->lm_info->isloader = isloader;
-  so->lm_info->nsecs = nsecs;
-  for (i = 0; i < nsecs; i++)
-    so->lm_info->secs[i].name = NULL;
-}
-
-/* Initialize SO's section SECIDX with name address NAMEADDR, name string
-   NAME, default virtual address VADDR, and actual virtual address
-   MAPADDR.  */
-
-static void
-init_sec (struct so_list *so, int secidx, CORE_ADDR nameaddr,
-	  const char *name, CORE_ADDR vaddr, CORE_ADDR mapaddr)
-{
-  struct lm_sec *lms;
-
-  lms = so->lm_info->secs + secidx;
-  lms->nameaddr = nameaddr;
-  lms->name = name;
-  lms->offset = mapaddr - vaddr;
-}
-
-/* If there are more elements starting at CTXT in inferior's module list,
-   store the next element in SO, advance CTXT to the next element, and return
-   1, else return 0.  */
-
-static int
-read_map (struct read_map_ctxt *ctxt, struct so_list *so)
-{
-  ldr_module_info_t minf;
-  ldr_region_info_t rinf;
-
-#ifdef USE_LDR_ROUTINES
-  size_t size;
-  ldr_region_t i;
-
-  /* Retrieve the next element.  */
-  if (ldr_next_module (ctxt->proc, &ctxt->next) != 0)
-    return 0;
-  if (ctxt->next == LDR_NULL_MODULE)
-    return 0;
-  if (ldr_inq_module (ctxt->proc, ctxt->next, &minf, sizeof minf, &size) != 0)
-    return 0;
-
-  /* Initialize the module name and section count.  */
-  init_so (so, minf.lmi_name, 0, minf.lmi_nregion);
-
-  /* Retrieve section names and offsets.  */
-  for (i = 0; i < minf.lmi_nregion; i++)
-    {
-      if (ldr_inq_region (ctxt->proc, ctxt->next, i, &rinf,
-			  sizeof rinf, &size) != 0)
-	goto err;
-      init_sec (so, (int) i, 0, xstrdup (rinf.lri_name),
-		(CORE_ADDR) rinf.lri_vaddr, (CORE_ADDR) rinf.lri_mapaddr);
-    }
-  lm_secs_sort (so->lm_info);
-#else
-  char *name;
-  int errcode, i;
-
-  /* Retrieve the next element.  */
-  if (!ctxt->next)
-    return 0;
-  if (target_read_memory (ctxt->next, (char *) &minf, sizeof minf) != 0)
-    return 0;
-  if (ctxt->next == ctxt->tail)
-    ctxt->next = 0;
-  else
-    ctxt->next = minf.next;
-
-  /* Initialize the module name and section count.  */
-  target_read_string (minf.module_name, &name, PATH_MAX, &errcode);
-  if (errcode != 0)
-    return 0;
-  init_so (so, name, !minf.modinfo_addr, minf.region_count);
-  xfree (name);
-
-  /* Retrieve section names and offsets.  */
-  for (i = 0; i < minf.region_count; i++)
-    {
-      if (target_read_memory (minf.regioninfo_addr + i * sizeof rinf,
-			      (char *) &rinf, sizeof rinf) != 0)
-	goto err;
-      init_sec (so, i, rinf.regionname_addr, NULL, rinf.vaddr, rinf.mapaddr);
-    }
-#endif   /* !USE_LDR_ROUTINES */
-  return 1;
-
- err:
-  osf_free_so (so);
-  return 0;
-}
-
-/* Free resources allocated by open_map (CTXT).  */
-
-static void
-close_map (struct read_map_ctxt *ctxt)
-{
-#ifdef USE_LDR_ROUTINES
-  ldr_xdetach (ctxt->proc);
-#endif
-}
-
-/* target_so_ops callback.  Return a list of shared objects currently loaded
-   in the inferior.  */
-
-static struct so_list *
-osf_current_sos (void)
-{
-  struct so_list *head = NULL, *tail = NULL, *newtail, so;
-  struct read_map_ctxt ctxt;
-  int skipped_main;
-
-  if (!open_map (&ctxt))
-    return NULL;
-
-  /* Read subsequent elements.  */
-  for (skipped_main = 0;;)
-    {
-      if (!read_map (&ctxt, &so))
-	break;
-
-      /* Skip the main program module, which is first in the list after
-         /sbin/loader.  */
-      if (!so.lm_info->isloader && !skipped_main)
-	{
-	  osf_free_so (&so);
-	  skipped_main = 1;
-	  continue;
-	}
-
-      newtail = xmalloc (sizeof *newtail);
-      if (!head)
-	head = newtail;
-      else
-	tail->next = newtail;
-      tail = newtail;
-
-      memcpy (tail, &so, sizeof so);
-      tail->next = NULL;
-    }
-
-  close_map (&ctxt);
-  return head;
-}
-
-/* target_so_ops callback.  Attempt to locate and open the main symbol
-   file.  */
-
-static int
-osf_open_symbol_file_object (void *from_ttyp)
-{
-  struct read_map_ctxt ctxt;
-  struct so_list so;
-  int found;
-
-  if (symfile_objfile)
-    if (!query (_("Attempt to reload symbols from process? ")))
-      return 0;
-
-  /* The first module after /sbin/loader is the main program.  */
-  if (!open_map (&ctxt))
-    return 0;
-  for (found = 0; !found;)
-    {
-      if (!read_map (&ctxt, &so))
-	break;
-      found = !so.lm_info->isloader;
-      osf_free_so (&so);
-    }
-  close_map (&ctxt);
-
-  if (found)
-    symbol_file_add_main (so.so_name, *(int *) from_ttyp);
-  return found;
-}
-
-/* target_so_ops callback.  Return whether PC is in the dynamic linker.  */
-
-static int
-osf_in_dynsym_resolve_code (CORE_ADDR pc)
-{
-  /* This function currently always return False.  This is a temporary
-     solution which only consequence is to introduce a minor incovenience
-     for the user: When stepping inside a subprogram located in a shared
-     library, gdb might stop inside the dynamic loader code instead of
-     inside the subprogram itself.  See the explanations in infrun.c about
-     the in_solib_dynsym_resolve_code() function for more details.  */
-  return 0;
-}
-
-static struct target_so_ops osf_so_ops;
-
-void
-_initialize_osf_solib (void)
-{
-  osf_so_ops.relocate_section_addresses = osf_relocate_section_addresses;
-  osf_so_ops.free_so = osf_free_so;
-  osf_so_ops.clear_solib = osf_clear_solib;
-  osf_so_ops.solib_create_inferior_hook = osf_solib_create_inferior_hook;
-  osf_so_ops.special_symbol_handling = osf_special_symbol_handling;
-  osf_so_ops.current_sos = osf_current_sos;
-  osf_so_ops.open_symbol_file_object = osf_open_symbol_file_object;
-  osf_so_ops.in_dynsym_resolve_code = osf_in_dynsym_resolve_code;
-  osf_so_ops.bfd_open = solib_bfd_open;
-
-  /* FIXME: Don't do this here.  *_gdbarch_init() should set so_ops.  */
-  current_target_so_ops = &osf_so_ops;
-}
diff --git a/gdb/testsuite/gdb.base/callfuncs.exp b/gdb/testsuite/gdb.base/callfuncs.exp
index a8c8241..cff8bd0 100644
--- a/gdb/testsuite/gdb.base/callfuncs.exp
+++ b/gdb/testsuite/gdb.base/callfuncs.exp
@@ -122,7 +122,7 @@ proc do_function_calls {} {
 	if $prototypes then {
 	    setup_xfail "sparc-*-*" "mips*-*-*" 5318
 	    if { ! [test_compiler_info gcc-*-*] } then {
-		setup_xfail "alpha-dec-osf2*" "i*86-*-sysv4*" 5318
+		setup_xfail "i*86-*-sysv4*" 5318
 	    }
 	}
         
diff --git a/gdb/testsuite/gdb.base/sigall.exp b/gdb/testsuite/gdb.base/sigall.exp
index 7a4007f..42927b6 100644
--- a/gdb/testsuite/gdb.base/sigall.exp
+++ b/gdb/testsuite/gdb.base/sigall.exp
@@ -54,17 +54,6 @@ proc test_one_sig {nextsig} {
 	    "Continuing.*Program received signal SIG$esig.*" \
 		"get signal $esig"
     }
-    if [ istarget "alpha-dec-osf3*" ] then {
-	# OSF/1-3.x is unable to continue with a job control stop signal.
-	# The inferior remains stopped without an event of interest
-	# and GDB waits forever for the inferior to stop on an event
-	# of interest. Work around the kernel bug.
-	if { $thissig == "TSTP" || $thissig == "TTIN" || $thissig == "TTOU" } {
-	    setup_xfail "alpha-dec-osf3*"
-	    fail "cannot continue from signal $thissig"
-	    set need_another_continue 0
-	}
-    }
 
     if $need_another_continue then {
 	if { $thissig == "URG" } {
diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp
index 91142fe..cd066f4 100644
--- a/gdb/testsuite/gdb.gdb/selftest.exp
+++ b/gdb/testsuite/gdb.gdb/selftest.exp
@@ -459,15 +459,6 @@ proc test_with_self { executable } {
 	-re "#0.*(read|poll).*in main \\(.*\\) at .*gdb\\.c.*$gdb_prompt $" {
 	    pass "$description"
 	}
-	-re ".*$gdb_prompt $" {
-	    # On the alpha, we hit the infamous problem about gdb
-	    # being unable to get the frame pointer (mentioned in
-	    # gdb/README).  As it is intermittent, there is no way to
-	    # XFAIL it which will give us an XPASS if the problem goes
-	    # away.
-	    setup_xfail "alpha*-*-osf*"
-	    fail "$description"
-	}
     }
 
 
diff --git a/gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp b/gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp
index 75d25c8..a7f0ed4 100644
--- a/gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp
+++ b/gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp
@@ -208,7 +208,7 @@ proc do_function_calls {} {
 	if $prototypes then {
 	    setup_xfail "sparc-*-*" "mips*-*-*" 5318
 	    if {!$gcc_compiled} then {
-		setup_xfail "alpha-dec-osf2*" "i*86-*-sysv4*" 5318
+		setup_xfail "i*86-*-sysv4*" 5318
 	    }
 	}
 	gdb_test "p t_float_values2(3.14159,float_val2)" " = 1"
diff --git a/gdb/testsuite/gdb.mi/non-stop.c b/gdb/testsuite/gdb.mi/non-stop.c
index 67b68aa..79ec562 100644
--- a/gdb/testsuite/gdb.mi/non-stop.c
+++ b/gdb/testsuite/gdb.mi/non-stop.c
@@ -20,11 +20,11 @@
 #include <stdlib.h>
 #include <pthread.h>
 
-/* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
+/* Under HPUX 10, the second arg of pthread_create
    is prototyped to be just a "pthread_attr_t", while under Solaris it
    is a "pthread_attr_t *".  Arg! */
 
-#if defined (__osf__) || defined (__hpux__)
+#if defined (__hpux__)
 #define PTHREAD_CREATE_ARG2(arg) arg
 #define PTHREAD_CREATE_NULL_ARG2 null_attr
 static pthread_attr_t null_attr;
diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c
index d6cb897..933b31a 100644
--- a/gdb/testsuite/gdb.mi/pthreads.c
+++ b/gdb/testsuite/gdb.mi/pthreads.c
@@ -24,11 +24,11 @@
 #include <stdlib.h>
 #include <pthread.h>
 
-/* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
+/* Under HPUX 10, the second arg of pthread_create
    is prototyped to be just a "pthread_attr_t", while under Solaris it
    is a "pthread_attr_t *".  Arg! */
 
-#if defined (__osf__) || defined (__hpux__)
+#if defined (__hpux__)
 #define PTHREAD_CREATE_ARG2(arg) arg
 #define PTHREAD_CREATE_NULL_ARG2 null_attr
 static pthread_attr_t null_attr;
diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
index 4a4695e..dcae868 100644
--- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
@@ -65,17 +65,6 @@ proc test_one_sig {nextsig} {
 	    }
 	}
     }
-    if [ istarget "alpha-dec-osf3*" ] then {
-	# OSF/1-3.x is unable to continue with a job control stop signal.
-	# The inferior remains stopped without an event of interest
-	# and GDB waits forever for the inferior to stop on an event
-	# of interest. Work around the kernel bug.
-	if { $thissig == "TSTP" || $thissig == "TTIN" || $thissig == "TTOU" } {
-	    setup_xfail "alpha-dec-osf3*"
-	    fail "cannot continue from signal $thissig"
-	    set need_another_continue 0
-	}
-    }
 
     if $need_another_continue then {
 	if { $thissig == "URG" } {
diff --git a/gdb/testsuite/gdb.reverse/sigall-reverse.exp b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
index fffc94e..0194ba4 100644
--- a/gdb/testsuite/gdb.reverse/sigall-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
@@ -64,17 +64,6 @@ proc test_one_sig {nextsig} {
 	    }
 	}
     }
-    if [ istarget "alpha-dec-osf3*" ] then {
-	# OSF/1-3.x is unable to continue with a job control stop signal.
-	# The inferior remains stopped without an event of interest
-	# and GDB waits forever for the inferior to stop on an event
-	# of interest. Work around the kernel bug.
-	if { $thissig == "TSTP" || $thissig == "TTIN" || $thissig == "TTOU" } {
-	    setup_xfail "alpha-dec-osf3*"
-	    fail "cannot continue from signal $thissig"
-	    set need_another_continue 0
-	}
-    }
 
     if $need_another_continue then {
 	if { $thissig == "URG" } {
diff --git a/gdb/testsuite/gdb.threads/pthreads.c b/gdb/testsuite/gdb.threads/pthreads.c
index 0bfc618..ac0f133 100644
--- a/gdb/testsuite/gdb.threads/pthreads.c
+++ b/gdb/testsuite/gdb.threads/pthreads.c
@@ -23,11 +23,11 @@
 #include <stdlib.h>
 #include <pthread.h>
 
-/* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
+/* Under HPUX 10, the second arg of pthread_create
    is prototyped to be just a "pthread_attr_t", while under Solaris it
    is a "pthread_attr_t *".  Arg! */
 
-#if defined (__osf__) || defined (__hpux__)
+#if defined (__hpux__)
 #define PTHREAD_CREATE_ARG2(arg) arg
 #define PTHREAD_CREATE_NULL_ARG2 null_attr
 static pthread_attr_t null_attr;
@@ -124,13 +124,11 @@ main(argc, argv)
 
   foo (1, 2, 3);
 
-#ifndef __osf__
   if (pthread_attr_init (&attr))
     {
       perror ("pthread_attr_init 1");
       exit (1);
     }
-#endif
 
 #ifdef PTHREAD_SCOPE_SYSTEM
   if (pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM))
diff --git a/gdb/testsuite/gdb.threads/pthreads.exp b/gdb/testsuite/gdb.threads/pthreads.exp
index 4900e14..990dfaa 100644
--- a/gdb/testsuite/gdb.threads/pthreads.exp
+++ b/gdb/testsuite/gdb.threads/pthreads.exp
@@ -266,9 +266,7 @@ proc check_backtraces {} {
     }
 }
 
-setup_xfail "alpha-*-osf*"
 if [runto_main] then {
-    clear_xfail "alpha-*-osf*"
     if [test_startup] then {
 	if [check_control_c] then {
 	    warning "Could not stop child with ^C; skipping rest of tests.\n"
@@ -277,4 +275,3 @@ if [runto_main] then {
 	check_backtraces
     }
 }
-clear_xfail "alpha-*-osf*"
