aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/darwin/README
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/port/darwin/README')
-rw-r--r--src/backend/port/darwin/README38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/backend/port/darwin/README b/src/backend/port/darwin/README
new file mode 100644
index 00000000000..1a056bd5149
--- /dev/null
+++ b/src/backend/port/darwin/README
@@ -0,0 +1,38 @@
+The file system.c included herein is taken directly from Apple's Darwin
+open-source CVS archives, and is redistributed under the BSD copyright
+notice it bears. (According to Apple's CVS logs, their version is
+identical to the FreeBSD original.) It provides our own implementation of
+the system(3) function, which ought by all rights to be identical to the
+one provided in libc on Darwin machines. Nonetheless, this version works,
+whereas the one that actually ships with Mac OS X 10.1 doesn't. The
+shipped version appears to disconnect the calling process from any shared
+memory segments it is attached to. (The symptom seen in PostgreSQL is
+that a backend attempting to execute CREATE DATABASE core-dumps.) I would
+love to know why there is a discrepancy between the published source and
+the actual behavior --- tgl 7-Nov-2001.
+
+Appropriate bug reports have been filed with Apple --- see
+Radar Bug#s 2767956, 2683531, 2805147. One hopes we can retire this
+kluge in the not too distant future.
+
+
+As of PostgreSQL 7.2 and Mac OS X 10.1, one should expect warnings
+like these while linking the backend:
+
+/usr/bin/ld: warning unused multiple definitions of symbol _system
+port/SUBSYS.o definition of _system in section (__TEXT,__text)
+/usr/lib/libm.dylib(system.o) unused definition of _system
+/usr/bin/ld: warning unused multiple definitions of symbol _semctl
+port/SUBSYS.o definition of _semctl in section (__TEXT,__text)
+/usr/lib/libm.dylib(semctl.o) unused definition of _semctl
+/usr/bin/ld: warning unused multiple definitions of symbol _semget
+port/SUBSYS.o definition of _semget in section (__TEXT,__text)
+/usr/lib/libm.dylib(semget.o) unused definition of _semget
+/usr/bin/ld: warning unused multiple definitions of symbol _semop
+port/SUBSYS.o definition of _semop in section (__TEXT,__text)
+/usr/lib/libm.dylib(semop.o) unused definition of _semop
+
+The first of these shows us overriding system() per the above-described
+hack. The rest show sem.c overriding the nonfunctional semaphore stubs
+in libc. (Perhaps sem.c can also be retired someday, but semget support
+is reportedly not high on Apple's to-do list.)