summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/port/hpux.h5
-rw-r--r--src/makefiles/Makefile.hpux21
-rw-r--r--src/tools/backend/index.html2
3 files changed, 24 insertions, 4 deletions
diff --git a/src/include/port/hpux.h b/src/include/port/hpux.h
index b78b43fbf8..d1a6451836 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 49f72855bb..eeb10589e6 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 8b74aa4d75..c4b007ac57 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