From f8a47462082a30fc78fc6480833de4c074b4b7dc Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 6 Jul 1998 20:28:09 +0000
Subject: [PATCH] Patches HPUX applied for Tom Lane.

---
 src/include/port/hpux.h      |  5 +++++
 src/makefiles/Makefile.hpux  | 21 ++++++++++++++++++---
 src/tools/backend/index.html |  2 +-
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/include/port/hpux.h b/src/include/port/hpux.h
index b78b43fbf85..d1a6451836f 100644
--- a/src/include/port/hpux.h
+++ b/src/include/port/hpux.h
@@ -1,6 +1,11 @@
 #define JMP_BUF
 #define USE_POSIX_TIME
+/* HPUX 10 has full POSIX signal functionality.
+ * On HPUX 9, we rely on BSD-compatible signal() in libBSD.
+ */
+#ifdef HPUX_10
 #define USE_POSIX_SIGNALS
+#endif
 #define HAS_TEST_AND_SET
 typedef struct
 {
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
index 49f72855bbd..eeb10589e69 100644
--- a/src/makefiles/Makefile.hpux
+++ b/src/makefiles/Makefile.hpux
@@ -1,14 +1,29 @@
 HPUX_MAJOR= $(shell uname -r|sed 's/^[^.]*\.\([^.]*\).*/\1/')
+# Distinguish HPUX 10 (and later) from HPUX 9
+ifneq ($(HPUX_MAJOR), 09)
+   CFLAGS+= -DHPUX_10
+endif
+
 # HP-UX 10 has a select() in libcurses, so we need to get the libc version first
-ifeq ($(HPUX_MAJOR), 10)
+# We also want to be sure we get the POSIX signal routines in libc,
+# not the BSD-like ones in libBSD.
+ifneq ($(HPUX_MAJOR), 09)
    LDFLAGS:= -Wl,-E -lc $(LDFLAGS)
 endif
 
-# HP-UX 09 needs libc before libPW, so we need to get the libc version first
+# HP-UX 09 provides rint() only in PA1.1 version of libm, so add -L command
+# to get that version. (CAUTION: you need PHSS_4630 to have a working version
+# of rint()!)  Also, libPW exists on this platform but is not helpful, so
+# delete it from LDFLAGS.
+# NOTE: libBSD must be loaded before libc to get BSD signal() semantics.
 ifeq ($(HPUX_MAJOR), 09)
-   LDFLAGS:= -Wl,-E $(LDFLAGS:-lPW=-lc -lPW)
+   LDFLAGS:= -Wl,-E -L /lib/pa1.1 $(LDFLAGS:-lPW=)
 endif
 
+# On all HPUX versions, embed LIBDIR as the shared library search path
+# so that the executables don't need SHLIB_PATH to be set.
+LDFLAGS+= -Wl,+b -Wl,$(LIBDIR)
+
 # Does anyone use this stuff?
 #ifdef ENFORCE_ALIGNMENT
 #   CFLAGS+= -DNOFIXADE
diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html
index 8b74aa4d759..c4b007ac571 100644
--- a/src/tools/backend/index.html
+++ b/src/tools/backend/index.html
@@ -123,7 +123,7 @@ HREF="../../include/storage/lock.h">LOCKMETHODCTL</A>).
 HREF="../../include/storage/lock.h">LOCK</A> structure, looked up using
 relation, database object ids(<A
 HREF="../../include/storage/lock.h">LOCKTAG)</A>.  The lock table structure contains the
-lock modes(read, write) and circular linked list of backends (<A
+lock modes(read/write or shared/exclusive) and circular linked list of backends (<A
 HREF="../../include/storage/proc.h">PROC</A> structure pointers) waiting
 on the lock.
 <LI>MultiLevelLockTable (xid hash) - lookup of LOCK structure address
-- 
GitLab