On Tue, Jul 5, 2022 at 4:53 PM Tom Lane <t...@sss.pgh.pa.us> wrote:
> Thomas Munro <thomas.mu...@gmail.com> writes:
> > On Mon, Jul 4, 2022 at 12:08 PM Tom Lane <t...@sss.pgh.pa.us> wrote:
> >> I would not stand in the way of dropping HP-UX and IA64 support as of
> >> v16.  (I do still feel that HPPA is of interest, to keep us honest
> >> about spinlock support --- but that dual-stack arrangement that IA64
> >> uses is surely not part of anyone's future.)
>
> > I tried to find everything relating to HP-UX, aCC, ia64 and hppa.  Or
> > do you still want to keep the hppa bits for NetBSD (I wasn't sure if
> > your threat to set up a NetBSD/hppa system was affected by the
> > hardware failure you mentioned)?
>
> No, the hardware failure is that the machine's SCSI controller seems
> to be fried, thus internal drives no longer accessible.  I have a
> working NetBSD-current installation on an external USB drive, and plan
> to commission it as a buildfarm animal once NetBSD 10 is officially
> branched.  It'll be a frankencritter of the first order, because
> USB didn't exist when the machine was built, but hey...

OK, here's a new attempt, this time leaving the hppa bits in.  The
main tricksy bit is where s_lock.h is simplified a bit by moving the
fully inline GCC-only hppa support up a bit (it was handled a bit
weirdly with some #undef jiggery-pokery before to share stuff between
aCC and GCC), making the diff a little hard to follow.  Does this make
sense?  It might also be possible to drop one of __hppa and __hppa__
where they are both tested (not clear to me if that is an aCC/GCC
thing).  I have no idea if this'll actually work (or ever worked) on
NetBSD/hppa... if it comes to it I could try to boot it under
qemu-system-hppa if that's what it takes, but it may be easy for you
to test...
From 58e3974b15ce5a6325630252f5306e77528d2b1f Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.mu...@gmail.com>
Date: Mon, 4 Jul 2022 16:24:16 +1200
Subject: [PATCH v2] Remove HP-UX, aCC and ia64 support.

HP-UX hardware is no longer produced.  This removes support for:

 * HP-UX, the operating system.
 * HP aCC, the compiler.
 * HP/Intel Itanium (ia64), the CPU architecture discontinued in 2021.

Support for HP PA-RISC (hppa), the CPU architecture discontinued in
2008, remains in the tree for now to support potential use on NetBSD.
---
 configure                              |  99 +---------------
 configure.ac                           |   8 --
 doc/src/sgml/dfunc.sgml                |  29 -----
 doc/src/sgml/installation.sgml         |   3 +-
 doc/src/sgml/regress.sgml              |   6 +-
 doc/src/sgml/runtime.sgml              |  19 ---
 src/Makefile.shlib                     |  33 ------
 src/backend/libpq/ifaddr.c             |  12 +-
 src/backend/port/hpux/tas.c.template   |  40 -------
 src/backend/port/tas/hpux_hppa.s       |  28 -----
 src/backend/tcop/postgres.c            |  74 ------------
 src/backend/utils/misc/ps_status.c     |  17 ---
 src/common/sprompt.c                   |   2 +-
 src/include/miscadmin.h                |   8 --
 src/include/pg_config.h.in             |   6 -
 src/include/port/atomics.h             |   4 -
 src/include/port/atomics/arch-ia64.h   |  29 -----
 src/include/port/atomics/fallback.h    |   4 +-
 src/include/port/atomics/generic-acc.h | 106 -----------------
 src/include/port/hpux.h                |   3 -
 src/include/storage/s_lock.h           | 155 ++++---------------------
 src/makefiles/Makefile.hpux            |  47 --------
 src/port/dlopen.c                      |  50 +-------
 src/port/getrusage.c                   |   1 -
 src/template/hpux                      |  34 ------
 src/test/regress/resultmap             |   1 -
 src/tools/msvc/Solution.pm             |   2 -
 src/tools/pginclude/cpluspluscheck     |   2 -
 src/tools/pginclude/headerscheck       |   2 -
 29 files changed, 36 insertions(+), 788 deletions(-)
 delete mode 100644 src/backend/port/hpux/tas.c.template
 delete mode 100644 src/backend/port/tas/hpux_hppa.s
 delete mode 100644 src/include/port/atomics/arch-ia64.h
 delete mode 100644 src/include/port/atomics/generic-acc.h
 delete mode 100644 src/include/port/hpux.h
 delete mode 100644 src/makefiles/Makefile.hpux
 delete mode 100644 src/template/hpux

diff --git a/configure b/configure
index fb07cd27d9..91b7b185f9 100755
--- a/configure
+++ b/configure
@@ -2994,7 +2994,6 @@ case $host_os in
   darwin*) template=darwin ;;
 dragonfly*) template=netbsd ;;
  freebsd*) template=freebsd ;;
-    hpux*) template=hpux ;;
  linux*|gnu*|k*bsd*-gnu)
            template=linux ;;
    mingw*) template=win32 ;;
@@ -6856,100 +6855,6 @@ if test x"$pgac_cv_prog_CXX_cxxflags__qlonglong" = x"yes"; then
 fi
 
 
-elif test "$PORTNAME" = "hpux"; then
-  # On some versions of HP-UX, libm functions do not set errno by default.
-  # Fix that by using +Olibmerrno if the compiler recognizes it.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports +Olibmerrno, for CFLAGS" >&5
-$as_echo_n "checking whether ${CC} supports +Olibmerrno, for CFLAGS... " >&6; }
-if ${pgac_cv_prog_CC_cflags_pOlibmerrno+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  pgac_save_CFLAGS=$CFLAGS
-pgac_save_CC=$CC
-CC=${CC}
-CFLAGS="${CFLAGS} +Olibmerrno"
-ac_save_c_werror_flag=$ac_c_werror_flag
-ac_c_werror_flag=yes
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  pgac_cv_prog_CC_cflags_pOlibmerrno=yes
-else
-  pgac_cv_prog_CC_cflags_pOlibmerrno=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_c_werror_flag=$ac_save_c_werror_flag
-CFLAGS="$pgac_save_CFLAGS"
-CC="$pgac_save_CC"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags_pOlibmerrno" >&5
-$as_echo "$pgac_cv_prog_CC_cflags_pOlibmerrno" >&6; }
-if test x"$pgac_cv_prog_CC_cflags_pOlibmerrno" = x"yes"; then
-  CFLAGS="${CFLAGS} +Olibmerrno"
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CXX} supports +Olibmerrno, for CXXFLAGS" >&5
-$as_echo_n "checking whether ${CXX} supports +Olibmerrno, for CXXFLAGS... " >&6; }
-if ${pgac_cv_prog_CXX_cxxflags_pOlibmerrno+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  pgac_save_CXXFLAGS=$CXXFLAGS
-pgac_save_CXX=$CXX
-CXX=${CXX}
-CXXFLAGS="${CXXFLAGS} +Olibmerrno"
-ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-ac_cxx_werror_flag=yes
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  pgac_cv_prog_CXX_cxxflags_pOlibmerrno=yes
-else
-  pgac_cv_prog_CXX_cxxflags_pOlibmerrno=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-CXXFLAGS="$pgac_save_CXXFLAGS"
-CXX="$pgac_save_CXX"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CXX_cxxflags_pOlibmerrno" >&5
-$as_echo "$pgac_cv_prog_CXX_cxxflags_pOlibmerrno" >&6; }
-if test x"$pgac_cv_prog_CXX_cxxflags_pOlibmerrno" = x"yes"; then
-  CXXFLAGS="${CXXFLAGS} +Olibmerrno"
-fi
-
-
 fi
 
 
@@ -13823,7 +13728,7 @@ $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
 fi
 
 
-for ac_header in atomic.h copyfile.h execinfo.h getopt.h ifaddrs.h langinfo.h mbarrier.h poll.h sys/epoll.h sys/event.h sys/ipc.h sys/personality.h sys/prctl.h sys/procctl.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/signalfd.h sys/sockio.h sys/tas.h sys/uio.h sys/un.h termios.h ucred.h wctype.h
+for ac_header in atomic.h copyfile.h execinfo.h getopt.h ifaddrs.h langinfo.h mbarrier.h poll.h sys/epoll.h sys/event.h sys/ipc.h sys/personality.h sys/prctl.h sys/procctl.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/signalfd.h sys/sockio.h sys/tas.h sys/uio.h sys/un.h termios.h ucred.h wctype.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -15987,7 +15892,7 @@ fi
 LIBS_including_readline="$LIBS"
 LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
 
-for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred getrlimit inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pstat pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
+for ac_func in backtrace_symbols clock_gettime copyfile fdatasync getifaddrs getpeerucred getrlimit inet_pton kqueue mbstowcs_l memset_s poll posix_fallocate ppoll pthread_is_threaded_np readlink readv setproctitle setproctitle_fast setsid shm_open strchrnul strsignal symlink syncfs sync_file_range uselocale wcstombs_l writev
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff --git a/configure.ac b/configure.ac
index 6c6f997ee3..7fbfb6795f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,7 +67,6 @@ case $host_os in
   darwin*) template=darwin ;;
 dragonfly*) template=netbsd ;;
  freebsd*) template=freebsd ;;
-    hpux*) template=hpux ;;
  linux*|gnu*|k*bsd*-gnu)
            template=linux ;;
    mingw*) template=win32 ;;
@@ -570,11 +569,6 @@ elif test "$PORTNAME" = "aix"; then
   PGAC_PROG_CXX_CFLAGS_OPT([-qnoansialias])
   PGAC_PROG_CC_CFLAGS_OPT([-qlonglong])
   PGAC_PROG_CXX_CFLAGS_OPT([-qlonglong])
-elif test "$PORTNAME" = "hpux"; then
-  # On some versions of HP-UX, libm functions do not set errno by default.
-  # Fix that by using +Olibmerrno if the compiler recognizes it.
-  PGAC_PROG_CC_CFLAGS_OPT([+Olibmerrno])
-  PGAC_PROG_CXX_CFLAGS_OPT([+Olibmerrno])
 fi
 
 AC_SUBST(CFLAGS_UNROLL_LOOPS)
@@ -1452,7 +1446,6 @@ AC_CHECK_HEADERS(m4_normalize([
 	sys/personality.h
 	sys/prctl.h
 	sys/procctl.h
-	sys/pstat.h
 	sys/resource.h
 	sys/select.h
 	sys/sem.h
@@ -1801,7 +1794,6 @@ AC_CHECK_FUNCS(m4_normalize([
 	poll
 	posix_fallocate
 	ppoll
-	pstat
 	pthread_is_threaded_np
 	readlink
 	readv
diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index a635767621..7bdf7f6070 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -75,35 +75,6 @@ gcc -shared -o foo.so foo.o
     </listitem>
    </varlistentry>
 
-   <varlistentry>
-    <term>
-     <systemitem class="osname">HP-UX</systemitem>
-     <indexterm><primary>HP-UX</primary><secondary>shared library</secondary></indexterm>
-    </term>
-    <listitem>
-     <para>
-      The compiler flag of the system compiler to create
-      <acronym>PIC</acronym> is <option>+z</option>.  When using
-      <application>GCC</application> it's <option>-fPIC</option>. The
-      linker flag for shared libraries is <option>-b</option>.  So:
-<programlisting>
-cc +z -c foo.c
-</programlisting>
-      or:
-<programlisting>
-gcc -fPIC -c foo.c
-</programlisting>
-      and then:
-<programlisting>
-ld -b -o foo.sl foo.o
-</programlisting>
-      <systemitem class="osname">HP-UX</systemitem> uses the extension
-      <filename>.sl</filename> for shared libraries, unlike most other
-      systems.
-     </para>
-    </listitem>
-   </varlistentry>
-
    <varlistentry>
     <term>
      <systemitem class="osname">Linux</systemitem>
diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml
index c585078029..6ab3a65e48 100644
--- a/doc/src/sgml/installation.sgml
+++ b/doc/src/sgml/installation.sgml
@@ -1974,7 +1974,6 @@ build-postgresql:
     shared libraries.  The systems on which this is
     <emphasis>not</emphasis> necessary include
     <systemitem class="osname">FreeBSD</systemitem>,
-    <systemitem class="osname">HP-UX</systemitem>,
     <systemitem class="osname">Linux</systemitem>,
     <systemitem class="osname">NetBSD</systemitem>, <systemitem
     class="osname">OpenBSD</systemitem>, and
@@ -2137,7 +2136,7 @@ export MANPATH
   <para>
    <productname>PostgreSQL</productname> can be expected to work on these operating
    systems: Linux (all recent distributions), Windows (XP and later),
-   FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX, and Solaris.
+   FreeBSD, OpenBSD, NetBSD, macOS, AIX, and Solaris.
    Other Unix-like systems may also work but are not currently
    being tested.  In most cases, all CPU architectures supported by
    a given operating system will work.  Look in
diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml
index 952139fc60..8f032c4e7a 100644
--- a/doc/src/sgml/regress.sgml
+++ b/doc/src/sgml/regress.sgml
@@ -689,13 +689,13 @@ testname:output:platformpattern=comparisonfilename
     Therefore, we provide a variant comparison file,
     <filename>float4-misrounded-input.out</filename>, which includes
     the results to be expected on these systems.  To silence the bogus
-    <quote>failure</quote> message on <systemitem>HP-UX 10</systemitem>
+    <quote>failure</quote> message on <systemitem>Cygwin</systemitem>
     platforms, <filename>resultmap</filename> includes:
 <programlisting>
-float4:out:hppa.*-hp-hpux10.*=float4-misrounded-input.out
+float4:out:.*-.*-cygwin.*=float4-misrounded-input.out
 </programlisting>
     which will trigger on any machine where the output of
-    <command>config.guess</command> matches <literal>hppa.*-hp-hpux10.*</literal>.
+    <command>config.guess</command> matches <literal>.*-.*-cygwin.*</literal>.
     Other lines in <filename>resultmap</filename> select the variant comparison
     file for other platforms where it's appropriate.
    </para>
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 2352389ab6..92a1ea87d8 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1018,25 +1018,6 @@ psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such
       </listitem>
      </varlistentry>
 
-     <varlistentry>
-      <term><systemitem class="osname">HP-UX</systemitem>
-      <indexterm><primary>HP-UX</primary><secondary>IPC configuration</secondary></indexterm>
-      </term>
-      <listitem>
-       <para>
-        The default settings tend to suffice for normal installations.
-       </para>
-       <para>
-        <acronym>IPC</acronym> parameters can be set in the <application>System
-        Administration Manager</application> (<acronym>SAM</acronym>) under
-        <menuchoice><guimenu>Kernel
-        Configuration</guimenu><guimenuitem>Configurable Parameters</guimenuitem></menuchoice>. Choose
-        <guibutton>Create A New Kernel</guibutton> when you're done.
-       </para>
-      </listitem>
-     </varlistentry>
-
-
      <varlistentry>
       <term><systemitem class="osname">Linux</systemitem>
       <indexterm><primary>Linux</primary><secondary>IPC configuration</secondary></indexterm>
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 551023c6fb..a7606bc5d9 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -177,39 +177,6 @@ ifeq ($(PORTNAME), netbsd)
   endif
 endif
 
-ifeq ($(PORTNAME), hpux)
-  ifdef SO_MAJOR_VERSION
-    shlib			= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-  endif
-  ifeq ($(with_gnu_ld), yes)
-    LINK.shared		= $(CC) -shared -Wl,-Bsymbolic
-    ifdef soname
-      LINK.shared	+= -Wl,-h -Wl,$(soname)
-    endif
-  else
-    LINK.shared		= $(LD) -b -Bsymbolic
-    ifdef soname
-      LINK.shared	+= +h $(soname)
-    endif
-    # can't use the CC-syntax rpath pattern here, so instead:
-    rpath =
-    ifeq ($(enable_rpath), yes)
-      LINK.shared	+= +s +b '$(rpathdir)'
-    endif
-    # On HPUX platforms, gcc is usually configured to search for libraries
-    # in /usr/local/lib, but ld won't do so.  Add an explicit -L switch so
-    # ld can find the same libraries gcc does.  Make sure it goes after any
-    # -L switches provided explicitly.
-    ifeq ($(GCC), yes)
-      SHLIB_LINK	+= -L/usr/local/lib
-    endif
-  endif
-  # And we need to link with libgcc, too
-  ifeq ($(GCC), yes)
-    SHLIB_LINK		+= `$(CC) $(LDFLAGS) -print-libgcc-file-name`
-  endif
-endif
-
 ifeq ($(PORTNAME), linux)
   LINK.shared		= $(COMPILER) -shared
   ifdef soname
diff --git a/src/backend/libpq/ifaddr.c b/src/backend/libpq/ifaddr.c
index a41808aff0..5494c9b303 100644
--- a/src/backend/libpq/ifaddr.c
+++ b/src/backend/libpq/ifaddr.c
@@ -333,17 +333,11 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
 #endif
 
 /*
- * SIOCGIFCONF does not return IPv6 addresses on Solaris
- * and HP/UX. So we prefer SIOCGLIFCONF if it's available.
- *
- * On HP/UX, however, it *only* returns IPv6 addresses,
- * and the structs are named slightly differently too.
- * We'd have to do another call with SIOCGIFCONF to get the
- * IPv4 addresses as well. We don't currently bother, just
- * fall back to SIOCGIFCONF on HP/UX.
+ * SIOCGIFCONF does not return IPv6 addresses on Solaris.
+ * So we prefer SIOCGLIFCONF if it's available.
  */
 
-#if defined(SIOCGLIFCONF) && !defined(__hpux)
+#if defined(SIOCGLIFCONF)
 
 /*
  * Enumerate the system's network interface addresses and call the callback
diff --git a/src/backend/port/hpux/tas.c.template b/src/backend/port/hpux/tas.c.template
deleted file mode 100644
index 5ccbbcde9a..0000000000
--- a/src/backend/port/hpux/tas.c.template
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * tas() for HPPA.
- *
- * To generate tas.s using this template:
- *	1. cc +O2 -S -c tas.c
- *	2. edit tas.s:
- *		- replace the LDW with LDCWX
- *	3. install as src/backend/port/tas/hpux_hppa.s.
- *
- * For details about the LDCWX instruction, see the "Precision
- * Architecture and Instruction Reference Manual" (09740-90014 of June
- * 1987), p. 5-38.
- */
-
-int
-tas(lock)
-    int *lock;	/* LDCWX is a word instruction */
-{
-    /*
-     * LDCWX requires that we align the "semaphore" to a 16-byte
-     * boundary.  The actual datum is a single word (4 bytes).
-     */
-    lock = ((uintptr_t) lock + 15) & ~15;
-
-    /*
-     * The LDCWX instruction atomically clears the target word and
-     * returns the previous value.  Hence, if the instruction returns
-     * 0, someone else has already acquired the lock before we tested
-     * it (i.e., we have failed).
-     *
-     * Notice that this means that we actually clear the word to set
-     * the lock and set the word to clear the lock.  This is the
-     * opposite behavior from the SPARC LDSTUB instruction.  For some
-     * reason everything that H-P does is rather baroque...
-     */
-    if (*lock) {	/* this generates the LDW */
-	return(0);	/* success */
-    }
-    return(1);    	/* failure */
-}
diff --git a/src/backend/port/tas/hpux_hppa.s b/src/backend/port/tas/hpux_hppa.s
deleted file mode 100644
index d978a7cb03..0000000000
--- a/src/backend/port/tas/hpux_hppa.s
+++ /dev/null
@@ -1,28 +0,0 @@
-
-        .SPACE  $TEXT$,SORT=8
-        .SUBSPA $CODE$,QUAD=0,ALIGN=4,ACCESS=44,CODE_ONLY,SORT=24
-tas
-        .PROC
-        .CALLINFO CALLER,FRAME=0,ENTRY_SR=3
-        .ENTRY
-        LDO     15(%r26),%r31   ;offset 0x0
-        DEPI    0,31,4,%r31     ;offset 0x4
-        LDCWX   0(0,%r31),%r23  ;offset 0x8
-        COMICLR,=       0,%r23,%r0      ;offset 0xc
-        DEP,TR  %r0,31,32,%r28  ;offset 0x10
-$00000001
-        LDI     1,%r28  ;offset 0x14
-$L0
-        .EXIT
-        BV,N    %r0(%r2)        ;offset 0x18
-        .PROCEND ;in=26;out=28;
-
-
-        .SPACE  $TEXT$
-        .SUBSPA $CODE$
-        .SPACE  $PRIVATE$,SORT=16
-        .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31,SORT=16
-        .SPACE  $TEXT$
-        .SUBSPA $CODE$
-        .EXPORT tas,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
-        .END
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 5ab91c2c58..dcf339adbb 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -132,13 +132,6 @@ static long max_stack_depth_bytes = 100 * 1024L;
  */
 static char *stack_base_ptr = NULL;
 
-/*
- * On IA64 we also have to remember the register stack base.
- */
-#if defined(__ia64__) || defined(__ia64)
-static char *register_stack_base_ptr = NULL;
-#endif
-
 /*
  * Flag to keep track of whether we have started a transaction.
  * For extended query protocol this has to be remembered across messages.
@@ -3393,44 +3386,6 @@ ProcessInterrupts(void)
 }
 
 
-/*
- * IA64-specific code to fetch the AR.BSP register for stack depth checks.
- *
- * We currently support gcc, icc, and HP-UX's native compiler here.
- *
- * Note: while icc accepts gcc asm blocks on x86[_64], this is not true on
- * ia64 (at least not in icc versions before 12.x).  So we have to carry a
- * separate implementation for it.
- */
-#if defined(__ia64__) || defined(__ia64)
-
-#if defined(__hpux) && !defined(__GNUC__) && !defined(__INTEL_COMPILER)
-/* Assume it's HP-UX native compiler */
-#include <ia64/sys/inline.h>
-#define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE)))
-#elif defined(__INTEL_COMPILER)
-/* icc */
-#include <asm/ia64regs.h>
-#define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP))
-#else
-/* gcc */
-static __inline__ char *
-ia64_get_bsp(void)
-{
-	char	   *ret;
-
-	/* the ;; is a "stop", seems to be required before fetching BSP */
-	__asm__ __volatile__(
-						 ";;\n"
-						 "	mov	%0=ar.bsp	\n"
-:						 "=r"(ret));
-
-	return ret;
-}
-#endif
-#endif							/* IA64 */
-
-
 /*
  * set_stack_base: set up reference point for stack depth checking
  *
@@ -3444,12 +3399,7 @@ set_stack_base(void)
 #endif
 	pg_stack_base_t old;
 
-#if defined(__ia64__) || defined(__ia64)
-	old.stack_base_ptr = stack_base_ptr;
-	old.register_stack_base_ptr = register_stack_base_ptr;
-#else
 	old = stack_base_ptr;
-#endif
 
 	/*
 	 * Set up reference point for stack depth checking.  On recent gcc we use
@@ -3461,9 +3411,6 @@ set_stack_base(void)
 #else
 	stack_base_ptr = &stack_base;
 #endif
-#if defined(__ia64__) || defined(__ia64)
-	register_stack_base_ptr = ia64_get_bsp();
-#endif
 
 	return old;
 }
@@ -3480,12 +3427,7 @@ set_stack_base(void)
 void
 restore_stack_base(pg_stack_base_t base)
 {
-#if defined(__ia64__) || defined(__ia64)
-	stack_base_ptr = base.stack_base_ptr;
-	register_stack_base_ptr = base.register_stack_base_ptr;
-#else
 	stack_base_ptr = base;
-#endif
 }
 
 /*
@@ -3542,22 +3484,6 @@ stack_is_too_deep(void)
 		stack_base_ptr != NULL)
 		return true;
 
-	/*
-	 * On IA64 there is a separate "register" stack that requires its own
-	 * independent check.  For this, we have to measure the change in the
-	 * "BSP" pointer from PostgresMain to here.  Logic is just as above,
-	 * except that we know IA64's register stack grows up.
-	 *
-	 * Note we assume that the same max_stack_depth applies to both stacks.
-	 */
-#if defined(__ia64__) || defined(__ia64)
-	stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
-
-	if (stack_depth > max_stack_depth_bytes &&
-		register_stack_base_ptr != NULL)
-		return true;
-#endif							/* IA64 */
-
 	return false;
 }
 
diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c
index ec314c03f5..8520ce76bb 100644
--- a/src/backend/utils/misc/ps_status.c
+++ b/src/backend/utils/misc/ps_status.c
@@ -15,9 +15,6 @@
 #include "postgres.h"
 
 #include <unistd.h>
-#ifdef HAVE_SYS_PSTAT_H
-#include <sys/pstat.h>			/* for HP-UX */
-#endif
 #ifdef HAVE_PS_STRINGS
 #include <machine/vmparam.h>	/* for old BSD */
 #include <sys/exec.h>
@@ -45,9 +42,6 @@ bool		update_process_title = true;
  * PS_USE_SETPROCTITLE
  *	   use the function setproctitle(const char *, ...)
  *	   (newer BSD systems)
- * PS_USE_PSTAT
- *	   use the pstat(PSTAT_SETCMD, )
- *	   (HPUX)
  * PS_USE_PS_STRINGS
  *	   assign PS_STRINGS->ps_argvstr = "string"
  *	   (some BSD systems)
@@ -67,8 +61,6 @@ bool		update_process_title = true;
 #define PS_USE_SETPROCTITLE_FAST
 #elif defined(HAVE_SETPROCTITLE)
 #define PS_USE_SETPROCTITLE
-#elif defined(HAVE_PSTAT) && defined(PSTAT_SETCMD)
-#define PS_USE_PSTAT
 #elif defined(HAVE_PS_STRINGS)
 #define PS_USE_PS_STRINGS
 #elif (defined(BSD) || defined(__hurd__)) && !defined(__darwin__)
@@ -376,15 +368,6 @@ set_ps_display(const char *activity)
 	setproctitle_fast("%s", ps_buffer);
 #endif
 
-#ifdef PS_USE_PSTAT
-	{
-		union pstun pst;
-
-		pst.pst_command = ps_buffer;
-		pstat(PSTAT_SETCMD, pst, ps_buffer_cur_len, 0, 0);
-	}
-#endif							/* PS_USE_PSTAT */
-
 #ifdef PS_USE_PS_STRINGS
 	PS_STRINGS->ps_nargvstr = 1;
 	PS_STRINGS->ps_argvstr = ps_buffer;
diff --git a/src/common/sprompt.c b/src/common/sprompt.c
index 8b836846e3..5ad90f59bb 100644
--- a/src/common/sprompt.c
+++ b/src/common/sprompt.c
@@ -90,7 +90,7 @@ simple_prompt_extended(const char *prompt, bool echo,
 
 	/*
 	 * Do not try to collapse these into one "w+" mode file. Doesn't work on
-	 * some platforms (eg, HPUX 10.20).
+	 * some platforms.
 	 */
 	termin = fopen("/dev/tty", "r");
 	termout = fopen("/dev/tty", "w");
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index 0af130fbc5..ea9a56d395 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -279,15 +279,7 @@ extern PGDLLIMPORT bool VacuumCostActive;
 
 /* in tcop/postgres.c */
 
-#if defined(__ia64__) || defined(__ia64)
-typedef struct
-{
-	char	   *stack_base_ptr;
-	char	   *register_stack_base_ptr;
-} pg_stack_base_t;
-#else
 typedef char *pg_stack_base_t;
-#endif
 
 extern pg_stack_base_t set_stack_base(void);
 extern void restore_stack_base(pg_stack_base_t base);
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index cdd742cb55..7133c3dc66 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -430,9 +430,6 @@
 /* Define to 1 if you have the `pread' function. */
 #undef HAVE_PREAD
 
-/* Define to 1 if you have the `pstat' function. */
-#undef HAVE_PSTAT
-
 /* Define to 1 if the PS_STRINGS thing exists. */
 #undef HAVE_PS_STRINGS
 
@@ -625,9 +622,6 @@
 /* Define to 1 if you have the <sys/procctl.h> header file. */
 #undef HAVE_SYS_PROCCTL_H
 
-/* Define to 1 if you have the <sys/pstat.h> header file. */
-#undef HAVE_SYS_PSTAT_H
-
 /* Define to 1 if you have the <sys/resource.h> header file. */
 #undef HAVE_SYS_RESOURCE_H
 
diff --git a/src/include/port/atomics.h b/src/include/port/atomics.h
index 9550e04aaa..f7cd0f6f20 100644
--- a/src/include/port/atomics.h
+++ b/src/include/port/atomics.h
@@ -68,8 +68,6 @@
 #include "port/atomics/arch-arm.h"
 #elif defined(__i386__) || defined(__i386) || defined(__x86_64__)
 #include "port/atomics/arch-x86.h"
-#elif defined(__ia64__) || defined(__ia64)
-#include "port/atomics/arch-ia64.h"
 #elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
 #include "port/atomics/arch-ppc.h"
 #elif defined(__hppa) || defined(__hppa__)
@@ -95,8 +93,6 @@
 #include "port/atomics/generic-gcc.h"
 #elif defined(_MSC_VER)
 #include "port/atomics/generic-msvc.h"
-#elif defined(__hpux) && defined(__ia64) && !defined(__GNUC__)
-#include "port/atomics/generic-acc.h"
 #elif defined(__SUNPRO_C) && !defined(__GNUC__)
 #include "port/atomics/generic-sunpro.h"
 #else
diff --git a/src/include/port/atomics/arch-ia64.h b/src/include/port/atomics/arch-ia64.h
deleted file mode 100644
index 771bac1f3e..0000000000
--- a/src/include/port/atomics/arch-ia64.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * arch-ia64.h
- *	  Atomic operations considerations specific to intel itanium
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * NOTES:
- *
- * src/include/port/atomics/arch-ia64.h
- *
- *-------------------------------------------------------------------------
- */
-
-/*
- * Itanium is weakly ordered, so read and write barriers require a full
- * fence.
- */
-#if defined(__INTEL_COMPILER)
-#	define pg_memory_barrier_impl()		__mf()
-#elif defined(__GNUC__)
-#	define pg_memory_barrier_impl()		__asm__ __volatile__ ("mf" : : : "memory")
-#elif defined(__hpux)
-#	define pg_memory_barrier_impl()		_Asm_mf()
-#endif
-
-/* per architecture manual doubleword accesses have single copy atomicity */
-#define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY
diff --git a/src/include/port/atomics/fallback.h b/src/include/port/atomics/fallback.h
index 1cdef5f2f6..91a9be4828 100644
--- a/src/include/port/atomics/fallback.h
+++ b/src/include/port/atomics/fallback.h
@@ -93,7 +93,7 @@ typedef struct pg_atomic_flag
 typedef struct pg_atomic_uint32
 {
 	/* Check pg_atomic_flag's definition above for an explanation */
-#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC, GCC and HP compilers */
+#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC */
 	int			sema[4];
 #else
 	int			sema;
@@ -111,7 +111,7 @@ typedef struct pg_atomic_uint32
 typedef struct pg_atomic_uint64
 {
 	/* Check pg_atomic_flag's definition above for an explanation */
-#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC, GCC and HP compilers */
+#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC */
 	int			sema[4];
 #else
 	int			sema;
diff --git a/src/include/port/atomics/generic-acc.h b/src/include/port/atomics/generic-acc.h
deleted file mode 100644
index 842b2dec6e..0000000000
--- a/src/include/port/atomics/generic-acc.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * generic-acc.h
- *	  Atomic operations support when using HPs acc on HPUX
- *
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * NOTES:
- *
- * Documentation:
- * * inline assembly for Itanium-based HP-UX:
- *   http://h21007.www2.hp.com/portal/download/files/unprot/Itanium/inline_assem_ERS.pdf
- * * Implementing Spinlocks on the Intel (R) Itanium (R) Architecture and PA-RISC
- *   http://h21007.www2.hp.com/portal/download/files/unprot/itanium/spinlocks.pdf
- *
- * Itanium only supports a small set of numbers (6, -8, -4, -1, 1, 4, 8, 16)
- * for atomic add/sub, so we just implement everything but compare_exchange
- * via the compare_exchange fallbacks in atomics/generic.h.
- *
- * src/include/port/atomics/generic-acc.h
- *
- * -------------------------------------------------------------------------
- */
-
-#include <machine/sys/inline.h>
-
-#define pg_compiler_barrier_impl()	_Asm_sched_fence()
-
-#if defined(HAVE_ATOMICS)
-
-/* IA64 always has 32/64 bit atomics */
-
-#define PG_HAVE_ATOMIC_U32_SUPPORT
-typedef struct pg_atomic_uint32
-{
-	volatile uint32 value;
-} pg_atomic_uint32;
-
-#define PG_HAVE_ATOMIC_U64_SUPPORT
-typedef struct pg_atomic_uint64
-{
-	/*
-	 * Alignment is guaranteed to be 64bit. Search for "Well-behaved
-	 * application restrictions" => "Data alignment and data sharing" on HP's
-	 * website. Unfortunately the URL doesn't seem to stable enough to
-	 * include.
-	 */
-	volatile uint64 value;
-} pg_atomic_uint64;
-
-
-#define MINOR_FENCE (_Asm_fence) (_UP_CALL_FENCE | _UP_SYS_FENCE | \
-								 _DOWN_CALL_FENCE | _DOWN_SYS_FENCE )
-
-#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32
-static inline bool
-pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
-									uint32 *expected, uint32 newval)
-{
-	bool	ret;
-	uint32	current;
-
-	_Asm_mov_to_ar(_AREG_CCV, *expected, MINOR_FENCE);
-	/*
-	 * We want a barrier, not just release/acquire semantics.
-	 */
-	_Asm_mf();
-	/*
-	 * Notes:
-	 * _DOWN_MEM_FENCE | _UP_MEM_FENCE prevents reordering by the compiler
-	 */
-	current =  _Asm_cmpxchg(_SZ_W, /* word */
-							_SEM_REL,
-							&ptr->value,
-							newval, _LDHINT_NONE,
-							_DOWN_MEM_FENCE | _UP_MEM_FENCE);
-	ret = current == *expected;
-	*expected = current;
-	return ret;
-}
-
-
-#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64
-static inline bool
-pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
-									uint64 *expected, uint64 newval)
-{
-	bool	ret;
-	uint64	current;
-
-	_Asm_mov_to_ar(_AREG_CCV, *expected, MINOR_FENCE);
-	_Asm_mf();
-	current =  _Asm_cmpxchg(_SZ_D, /* doubleword */
-							_SEM_REL,
-							&ptr->value,
-							newval, _LDHINT_NONE,
-							_DOWN_MEM_FENCE | _UP_MEM_FENCE);
-	ret = current == *expected;
-	*expected = current;
-	return ret;
-}
-
-#undef MINOR_FENCE
-
-#endif /* defined(HAVE_ATOMICS) */
diff --git a/src/include/port/hpux.h b/src/include/port/hpux.h
deleted file mode 100644
index 4d1dcea70c..0000000000
--- a/src/include/port/hpux.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* src/include/port/hpux.h */
-
-/* nothing needed */
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index 98b4d718d2..a7ab0da156 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -250,71 +250,6 @@ spin_delay(void)
 #endif	 /* __x86_64__ */
 
 
-#if defined(__ia64__) || defined(__ia64)
-/*
- * Intel Itanium, gcc or Intel's compiler.
- *
- * Itanium has weak memory ordering, but we rely on the compiler to enforce
- * strict ordering of accesses to volatile data.  In particular, while the
- * xchg instruction implicitly acts as a memory barrier with 'acquire'
- * semantics, we do not have an explicit memory fence instruction in the
- * S_UNLOCK macro.  We use a regular assignment to clear the spinlock, and
- * trust that the compiler marks the generated store instruction with the
- * ".rel" opcode.
- *
- * Testing shows that assumption to hold on gcc, although I could not find
- * any explicit statement on that in the gcc manual.  In Intel's compiler,
- * the -m[no-]serialize-volatile option controls that, and testing shows that
- * it is enabled by default.
- *
- * While icc accepts gcc asm blocks on x86[_64], this is not true on ia64
- * (at least not in icc versions before 12.x).  So we have to carry a separate
- * compiler-intrinsic-based implementation for it.
- */
-#define HAS_TEST_AND_SET
-
-typedef unsigned int slock_t;
-
-#define TAS(lock) tas(lock)
-
-/* On IA64, it's a win to use a non-locking test before the xchg proper */
-#define TAS_SPIN(lock)	(*(lock) ? 1 : TAS(lock))
-
-#ifndef __INTEL_COMPILER
-
-static __inline__ int
-tas(volatile slock_t *lock)
-{
-	long int	ret;
-
-	__asm__ __volatile__(
-		"	xchg4 	%0=%1,%2	\n"
-:		"=r"(ret), "+m"(*lock)
-:		"r"(1)
-:		"memory");
-	return (int) ret;
-}
-
-#else /* __INTEL_COMPILER */
-
-static __inline__ int
-tas(volatile slock_t *lock)
-{
-	int		ret;
-
-	ret = _InterlockedExchange(lock,1);	/* this is a xchg asm macro */
-
-	return ret;
-}
-
-/* icc can't use the regular gcc S_UNLOCK() macro either in this case */
-#define S_UNLOCK(lock)	\
-	do { __memory_barrier(); *(lock) = 0; } while (0)
-
-#endif /* __INTEL_COMPILER */
-#endif	 /* __ia64__ || __ia64 */
-
-
 /*
  * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available.
  *
@@ -765,44 +700,14 @@ tas(volatile slock_t *lock)
 typedef unsigned char slock_t;
 #endif
 
-/*
- * Default implementation of S_UNLOCK() for gcc/icc.
- *
- * Note that this implementation is unsafe for any platform that can reorder
- * a memory access (either load or store) after a following store.  That
- * happens not to be possible on x86 and most legacy architectures (some are
- * single-processor!), but many modern systems have weaker memory ordering.
- * Those that do must define their own version of S_UNLOCK() rather than
- * relying on this one.
- */
-#if !defined(S_UNLOCK)
-#define S_UNLOCK(lock)	\
-	do { __asm__ __volatile__("" : : : "memory");  *(lock) = 0; } while (0)
-#endif
-
-#endif	/* defined(__GNUC__) || defined(__INTEL_COMPILER) */
-
-
 
-/*
- * ---------------------------------------------------------------------
- * Platforms that use non-gcc inline assembly:
- * ---------------------------------------------------------------------
- */
-
-#if !defined(HAS_TEST_AND_SET)	/* We didn't trigger above, let's try here */
-
-
-#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC, GCC and HP compilers */
+#if defined(__hppa) || defined(__hppa__)	/* HP PA-RISC */
 /*
  * HP's PA-RISC
  *
- * See src/backend/port/hpux/tas.c.template for details about LDCWX.  Because
- * LDCWX requires a 16-byte-aligned address, we declare slock_t as a 16-byte
- * struct.  The active word in the struct is whichever has the aligned address;
- * the other three words just sit at -1.
- *
- * When using gcc, we can inline the required assembly code.
+ * Because LDCWX requires a 16-byte-aligned address, we declare slock_t as a
+ * 16-byte struct.  The active word in the struct is whichever has the aligned
+ * address; the other three words just sit at -1.
  */
 #define HAS_TEST_AND_SET
 
@@ -813,8 +718,6 @@ typedef struct
 
 #define TAS_ACTIVE_WORD(lock)	((volatile int *) (((uintptr_t) (lock) + 15) & ~15))
 
-#if defined(__GNUC__)
-
 static __inline__ int
 tas(volatile slock_t *lock)
 {
@@ -829,23 +732,12 @@ tas(volatile slock_t *lock)
 	return (lockval == 0);
 }
 
-/*
- * The hppa implementation doesn't follow the rules of this files and provides
- * a gcc specific implementation outside of the above defined(__GNUC__). It
- * does so to avoid duplication between the HP compiler and gcc. So undefine
- * the generic fallback S_UNLOCK from above.
- */
-#ifdef S_UNLOCK
-#undef S_UNLOCK
-#endif
 #define S_UNLOCK(lock)	\
 	do { \
 		__asm__ __volatile__("" : : : "memory"); \
 		*TAS_ACTIVE_WORD(lock) = -1; \
 	} while (0)
 
-#endif /* __GNUC__ */
-
 #define S_INIT_LOCK(lock) \
 	do { \
 		volatile slock_t *lock_ = (lock); \
@@ -860,32 +752,31 @@ tas(volatile slock_t *lock)
 #endif	 /* __hppa || __hppa__ */
 
 
-#if defined(__hpux) && defined(__ia64) && !defined(__GNUC__)
 /*
- * HP-UX on Itanium, non-gcc/icc compiler
- *
- * We assume that the compiler enforces strict ordering of loads/stores on
- * volatile data (see comments on the gcc-version earlier in this file).
- * Note that this assumption does *not* hold if you use the
- * +Ovolatile=__unordered option on the HP-UX compiler, so don't do that.
+ * Default implementation of S_UNLOCK() for gcc/icc.
  *
- * See also Implementing Spinlocks on the Intel Itanium Architecture and
- * PA-RISC, by Tor Ekqvist and David Graves, for more information.  As of
- * this writing, version 1.0 of the manual is available at:
- * http://h21007.www2.hp.com/portal/download/files/unprot/itanium/spinlocks.pdf
+ * Note that this implementation is unsafe for any platform that can reorder
+ * a memory access (either load or store) after a following store.  That
+ * happens not to be possible on x86 and most legacy architectures (some are
+ * single-processor!), but many modern systems have weaker memory ordering.
+ * Those that do must define their own version of S_UNLOCK() rather than
+ * relying on this one.
  */
-#define HAS_TEST_AND_SET
+#if !defined(S_UNLOCK)
+#define S_UNLOCK(lock)	\
+	do { __asm__ __volatile__("" : : : "memory");  *(lock) = 0; } while (0)
+#endif
 
-typedef unsigned int slock_t;
+#endif	/* defined(__GNUC__) || defined(__INTEL_COMPILER) */
 
-#include <ia64/sys/inline.h>
-#define TAS(lock) _Asm_xchg(_SZ_W, lock, 1, _LDHINT_NONE)
-/* On IA64, it's a win to use a non-locking test before the xchg proper */
-#define TAS_SPIN(lock)	(*(lock) ? 1 : TAS(lock))
-#define S_UNLOCK(lock)	\
-	do { _Asm_mf(); (*(lock)) = 0; } while (0)
 
-#endif	/* HPUX on IA64, non gcc/icc */
+/*
+ * ---------------------------------------------------------------------
+ * Platforms that use non-gcc inline assembly:
+ * ---------------------------------------------------------------------
+ */
+
+#if !defined(HAS_TEST_AND_SET)	/* We didn't trigger above, let's try here */
 
 #if defined(_AIX)	/* AIX */
 /*
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
deleted file mode 100644
index 25e036bd8d..0000000000
--- a/src/makefiles/Makefile.hpux
+++ /dev/null
@@ -1,47 +0,0 @@
-# Using X/Open Networking Interfaces requires to link with libxnet.
-# Without specifying this, bind(), getpeername() and so on don't work
-# correctly in the LP64 data model.
-LIBS := -lxnet $(LIBS)
-
-# Set up rpath so that the executables don't need SHLIB_PATH to be set.
-# (Note: --disable-rpath is a really bad idea on this platform...)
-ifeq ($(with_gnu_ld), yes)
-   rpath = -Wl,-rpath -Wl,'$(rpathdir)'
-else
-   rpath = -Wl,+b -Wl,'$(rpathdir)'
-endif
-
-# catch null pointer dereferences
-ifeq ($(with_gnu_ld), yes)
-# XXX what to put here?
-else
-   LDFLAGS_EX += -Wl,-z
-endif
-
-# set up appropriate options for shared library builds
-export_dynamic = -Wl,-E
-
-INSTALL_SHLIB_OPTS = -m 555
-
-AROPT = crs
-
-# env var name to use in place of LD_LIBRARY_PATH
-ld_library_path_var = SHLIB_PATH
-
-# Rule for building a shared library from a single .o file
-%$(DLSUFFIX): %.o
-ifeq ($(GCC), yes)
-  ifeq ($(with_gnu_ld), yes)
-	$(CC) $(CFLAGS) $< $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ `$(CC) $(LDFLAGS) -print-libgcc-file-name`
-  else
-	$(LD) -b -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
-  endif
-else
-  ifeq ($(with_gnu_ld), yes)
-	$(CC) $(CFLAGS) $< $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@
-  else
-	$(LD) -b -o $@ $<
-  endif
-endif
-
-sqlmansect = 5
diff --git a/src/port/dlopen.c b/src/port/dlopen.c
index d441dc8196..6ff9f4bf64 100644
--- a/src/port/dlopen.c
+++ b/src/port/dlopen.c
@@ -15,55 +15,7 @@
 
 #include "c.h"
 
-#if defined(__hpux)
-
-/* System includes */
-#include <a.out.h>
-#include <dl.h>
-
-void *
-dlopen(const char *file, int mode)
-{
-	int			flags = 0;
-
-	if (mode & RTLD_NOW)
-		flags |= BIND_IMMEDIATE;
-#ifdef NOT_USED
-	if (mode & RTLD_LAZY)
-		flags |= BIND_DEFERRED;
-#endif
-
-	return shl_load(file, flags | BIND_VERBOSE, 0L);
-}
-
-void *
-dlsym(void *handle, const char *symbol)
-{
-	void	   *value;
-
-	if (shl_findsym((shl_t *) & handle, symbol, TYPE_PROCEDURE, &value) == -1)
-		return NULL;
-	return value;
-}
-
-int
-dlclose(void *handle)
-{
-	return shl_unload((shl_t) handle);
-}
-
-char *
-dlerror(void)
-{
-	static char errmsg[] = "shl_load failed";
-
-	if (errno)
-		return strerror(errno);
-
-	return errmsg;
-}
-
-#elif defined(WIN32)
+#if defined(WIN32)
 
 static char last_dyn_error[512];
 
diff --git a/src/port/getrusage.c b/src/port/getrusage.c
index 8369fd2793..02665f4032 100644
--- a/src/port/getrusage.c
+++ b/src/port/getrusage.c
@@ -20,7 +20,6 @@
 /* This code works on:
  *		solaris_i386
  *		solaris_sparc
- *		hpux 9.*
  *		win32
  * which currently is all the supported platforms that don't have a
  * native version of getrusage().  So, if configure decides to compile
diff --git a/src/template/hpux b/src/template/hpux
deleted file mode 100644
index 5105a74c78..0000000000
--- a/src/template/hpux
+++ /dev/null
@@ -1,34 +0,0 @@
-# src/template/hpux
-
-# Need this for access to many modern library features
-CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
-
-# HP's compiler likes the spelling +O2 not -O2, so adjust default CFLAGS
-if test "$GCC" != yes ; then
-  CFLAGS="+O2"
-fi
-
-# Extra CFLAGS for code that will go into a shared library
-if test "$GCC" = yes ; then
-  CFLAGS_SL="-fPIC"
-else
-  CFLAGS_SL="+Z"
-fi
-
-# Pick right test-and-set (TAS) code.  We need out-of-line assembler
-# when not using gcc.
-case $host in
-  hppa*-*-hpux*)
-	if test "$GCC" != yes ; then
-		need_tas=yes
-		tas_file=hpux_hppa.s
-	fi
-    ;;
-esac
-
-case $host_cpu in
-  ia64)
-    DLSUFFIX=".so";;
-  *)
-    DLSUFFIX=".sl";;
-esac
diff --git a/src/test/regress/resultmap b/src/test/regress/resultmap
index c766d03df2..8a3ed50585 100644
--- a/src/test/regress/resultmap
+++ b/src/test/regress/resultmap
@@ -1,3 +1,2 @@
 float4:out:.*-.*-cygwin.*=float4-misrounded-input.out
 float4:out:.*-.*-mingw.*=float4-misrounded-input.out
-float4:out:hppa.*-hp-hpux10.*=float4-misrounded-input.out
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index d30e8fcb11..52ff56ba83 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -337,7 +337,6 @@ sub GenerateFiles
 		HAVE_PPC_LWARX_MUTEX_HINT   => undef,
 		HAVE_PPOLL                  => undef,
 		HAVE_PREAD                  => undef,
-		HAVE_PSTAT                  => undef,
 		HAVE_PS_STRINGS             => undef,
 		HAVE_PTHREAD                => undef,
 		HAVE_PTHREAD_BARRIER_WAIT   => undef,
@@ -401,7 +400,6 @@ sub GenerateFiles
 		HAVE_SYS_PERSONALITY_H                   => undef,
 		HAVE_SYS_PRCTL_H                         => undef,
 		HAVE_SYS_PROCCTL_H                       => undef,
-		HAVE_SYS_PSTAT_H                         => undef,
 		HAVE_SYS_RESOURCE_H                      => undef,
 		HAVE_SYS_SELECT_H                        => undef,
 		HAVE_SYS_SEM_H                           => undef,
diff --git a/src/tools/pginclude/cpluspluscheck b/src/tools/pginclude/cpluspluscheck
index 42688fff53..3137cddf11 100755
--- a/src/tools/pginclude/cpluspluscheck
+++ b/src/tools/pginclude/cpluspluscheck
@@ -63,7 +63,6 @@ do
 	test "$f" = src/include/port/cygwin.h && continue
 	test "$f" = src/include/port/darwin.h && continue
 	test "$f" = src/include/port/freebsd.h && continue
-	test "$f" = src/include/port/hpux.h && continue
 	test "$f" = src/include/port/linux.h && continue
 	test "$f" = src/include/port/netbsd.h && continue
 	test "$f" = src/include/port/openbsd.h && continue
@@ -82,7 +81,6 @@ do
 	# relevant to our platform will be included by atomics.h.
 	test "$f" = src/include/port/atomics/arch-arm.h && continue
 	test "$f" = src/include/port/atomics/arch-hppa.h && continue
-	test "$f" = src/include/port/atomics/arch-ia64.h && continue
 	test "$f" = src/include/port/atomics/arch-ppc.h && continue
 	test "$f" = src/include/port/atomics/arch-x86.h && continue
 	test "$f" = src/include/port/atomics/fallback.h && continue
diff --git a/src/tools/pginclude/headerscheck b/src/tools/pginclude/headerscheck
index f8b0674a66..ee4e593263 100755
--- a/src/tools/pginclude/headerscheck
+++ b/src/tools/pginclude/headerscheck
@@ -59,7 +59,6 @@ do
 	test "$f" = src/include/port/cygwin.h && continue
 	test "$f" = src/include/port/darwin.h && continue
 	test "$f" = src/include/port/freebsd.h && continue
-	test "$f" = src/include/port/hpux.h && continue
 	test "$f" = src/include/port/linux.h && continue
 	test "$f" = src/include/port/netbsd.h && continue
 	test "$f" = src/include/port/openbsd.h && continue
@@ -78,7 +77,6 @@ do
 	# relevant to our platform will be included by atomics.h.
 	test "$f" = src/include/port/atomics/arch-arm.h && continue
 	test "$f" = src/include/port/atomics/arch-hppa.h && continue
-	test "$f" = src/include/port/atomics/arch-ia64.h && continue
 	test "$f" = src/include/port/atomics/arch-ppc.h && continue
 	test "$f" = src/include/port/atomics/arch-x86.h && continue
 	test "$f" = src/include/port/atomics/fallback.h && continue
-- 
2.36.1

Reply via email to