aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2022-07-08 11:17:47 +1200
committerThomas Munro <tmunro@postgresql.org>2022-07-08 14:05:05 +1200
commit9db300ce6e38411144f1e36dba345a5f91bbdee4 (patch)
tree711b9ce24674f12515da778ca22a9891177f61da /src
parent3c633f32b9c712cc0b4c8d946f0eeae04a3ff51a (diff)
downloadpostgresql-9db300ce6e38411144f1e36dba345a5f91bbdee4.tar.gz
postgresql-9db300ce6e38411144f1e36dba345a5f91bbdee4.zip
Remove HP-UX port.
HP-UX hardware is no longer produced, build farm coverage recently ended, and there are no known active maintainers targeting this OS. Since there is a major rewrite of the build system in the pipeline for PostgreSQL 16, and that requires development, testing and maintainance for each OS and tool chain, it seems like a good time to drop support for: * HP-UX, the operating system. * HP aCC, the HP-UX native compiler. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Peter Eisentraut <peter.eisentraut@enterprisedb.com> Discussion: https://postgr.es/m/1415825.1656893299%40sss.pgh.pa.us
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.shlib33
-rw-r--r--src/backend/libpq/ifaddr.c12
-rw-r--r--src/backend/port/hpux/tas.c.template40
-rw-r--r--src/backend/port/tas/hpux_hppa.s28
-rw-r--r--src/backend/tcop/postgres.c8
-rw-r--r--src/backend/utils/misc/ps_status.c17
-rw-r--r--src/include/pg_config.h.in6
-rw-r--r--src/include/port/atomics.h2
-rw-r--r--src/include/port/atomics/arch-ia64.h2
-rw-r--r--src/include/port/atomics/fallback.h4
-rw-r--r--src/include/port/atomics/generic-acc.h106
-rw-r--r--src/include/port/hpux.h3
-rw-r--r--src/include/storage/s_lock.h105
-rw-r--r--src/makefiles/Makefile.hpux47
-rw-r--r--src/pl/plperl/ppport.h2
-rw-r--r--src/port/dlopen.c50
-rw-r--r--src/port/getrusage.c1
-rw-r--r--src/template/hpux34
-rw-r--r--src/test/regress/resultmap1
-rw-r--r--src/tools/msvc/Solution.pm2
-rwxr-xr-xsrc/tools/pginclude/cpluspluscheck1
-rwxr-xr-xsrc/tools/pginclude/headerscheck1
22 files changed, 47 insertions, 458 deletions
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 82b336fff3e..6df96c634b6 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -175,39 +175,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 a41808aff0a..5494c9b3032 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 5ccbbcde9aa..00000000000
--- 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 d978a7cb030..00000000000
--- 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 5ab91c2c581..cbb0ec606f9 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3396,7 +3396,7 @@ 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.
+ * We currently support gcc and icc 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
@@ -3404,11 +3404,7 @@ ProcessInterrupts(void)
*/
#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)
+#if defined(__INTEL_COMPILER)
/* icc */
#include <asm/ia64regs.h>
#define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP))
diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c
index ec314c03f54..8520ce76bbd 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/include/pg_config.h.in b/src/include/pg_config.h.in
index cdd742cb55b..7133c3dc66b 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 9550e04aaa5..33b7fd6042c 100644
--- a/src/include/port/atomics.h
+++ b/src/include/port/atomics.h
@@ -95,8 +95,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
index 771bac1f3ee..264d2316b97 100644
--- a/src/include/port/atomics/arch-ia64.h
+++ b/src/include/port/atomics/arch-ia64.h
@@ -21,8 +21,6 @@
# 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 */
diff --git a/src/include/port/atomics/fallback.h b/src/include/port/atomics/fallback.h
index 1cdef5f2f6f..91a9be48288 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 842b2dec6ed..00000000000
--- 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 4d1dcea70c8..00000000000
--- 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 98b4d718d29..1e1eb324b43 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -765,44 +765,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,14 +783,27 @@ 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)
{
volatile int *lockword = TAS_ACTIVE_WORD(lock);
register int lockval;
+ /*
+ * 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...
+ *
+ * For details about the LDCWX instruction, see the "Precision
+ * Architecture and Instruction Reference Manual" (09740-90014 of June
+ * 1987), p. 5-38.
+ */
__asm__ __volatile__(
" ldcwx 0(0,%2),%0 \n"
: "=r"(lockval), "+m"(*lockword)
@@ -829,23 +812,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 +832,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 25e036bd8d5..00000000000
--- 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/pl/plperl/ppport.h b/src/pl/plperl/ppport.h
index 1f6cf465df6..762dd362b35 100644
--- a/src/pl/plperl/ppport.h
+++ b/src/pl/plperl/ppport.h
@@ -12160,7 +12160,7 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
STMT_START { \
ASSUME(!"UNREACHABLE"); __builtin_unreachable(); \
} STMT_END
-# elif ! defined(__GNUC__) && (defined(__sun) || defined(__hpux))
+# elif ! defined(__GNUC__) && defined(__sun)
# define NOT_REACHED
# else
# define NOT_REACHED ASSUME(!"UNREACHABLE")
diff --git a/src/port/dlopen.c b/src/port/dlopen.c
index d441dc8196a..6ff9f4bf64f 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 8369fd27938..02665f4032d 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 5105a74c78f..00000000000
--- 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 c766d03df23..8a3ed50585e 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 d30e8fcb117..52ff56ba835 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 42688fff53a..7b547261751 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
diff --git a/src/tools/pginclude/headerscheck b/src/tools/pginclude/headerscheck
index f8b0674a661..225224a9bc8 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