diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 7f1d083b113af3a07cb15aad126bce94369e15ee..c35bf8d825ba9821466a2ca1e41ec7fe758c99c3 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,7 +6,7 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.6 1999/01/17 06:18:08 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.7 1999/03/14 16:02:57 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -73,7 +73,11 @@ ifeq ($(PORTNAME), bsd)
   ifdef BSD_SHLIB
     install-shlib-dep	:= install-shlib
     shlib		:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
-    LDFLAGS_SL		:= -x -Bshareable -Bforcearchive
+    ifdef ELF_SYSTEM
+      LDFLAGS_SL	:= -x -Bshareable -soname $(shlib)
+    else
+      LDFLAGS_SL	:= -x -Bshareable -Bforcearchive
+    endif
     CFLAGS		+= $(CFLAGS_SL)
   endif
 endif
diff --git a/src/backend/port/dynloader/bsd.c b/src/backend/port/dynloader/bsd.c
index 48d0d3cc413b5956eb06d7999cef04b0f671f67d..c54b2e00237a343d3fe64598169fd016781337d1 100644
--- a/src/backend/port/dynloader/bsd.c
+++ b/src/backend/port/dynloader/bsd.c
@@ -79,6 +79,8 @@ BSD44_derived_dlsym(void *handle, const char *name)
 #if defined(__mips__) || (defined(__NetBSD__) && defined(vax))
 	sprintf(error_message, "dlsym (%s) failed", name);
 	return NULL;
+#elif defined(__ELF__)
+	return dlsym(handle, name);
 #else
 	void	   *vp;
 	char		buf[BUFSIZ];
diff --git a/src/backend/storage/buffer/s_lock.c b/src/backend/storage/buffer/s_lock.c
index 10b649f3ef636d1609d49dbc0eef3798d32fbd7b..788d67dae55cb9c878a74d9d7c42a5fa9b1b954c 100644
--- a/src/backend/storage/buffer/s_lock.c
+++ b/src/backend/storage/buffer/s_lock.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.17 1999/02/13 23:18:02 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/s_lock.c,v 1.18 1999/03/14 16:03:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -118,7 +118,7 @@ _success:			\n\
 
 #endif	 /* __m68k__ */
 
-#if defined(PPC)
+#if defined(__powerpc__)
 /* Note: need a nice gcc constrained asm version so it can be inlined */
 static void
 tas_dummy()
@@ -140,7 +140,7 @@ success:			\n\
 	");
 }
 
-#endif	 /* PPC */
+#endif	 /* __powerpc__ */
 
 #if defined(__mips)
 static void
diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c
index a971e5006e271c194d62e9d09eedee03fc4319d7..84411f26f8a6d59390c7734fcc40ea9ac7234ce1 100644
--- a/src/backend/utils/adt/dt.c
+++ b/src/backend/utils/adt/dt.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.65 1999/02/13 23:19:11 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.66 1999/03/14 16:03:04 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -4533,7 +4533,7 @@ EncodeTimeSpan(struct tm * tm, double fsec, int style, char *str)
 }	/* EncodeTimeSpan() */
 
 
-#if defined(linux) && defined(PPC)
+#if defined(linux) && defined(__powerpc__)
 int
 datetime_is_epoch(double j)
 {
diff --git a/src/config.guess b/src/config.guess
index 0db17eaca2f1a62e1c16b673b4c0b21b08ade414..851ed5f49b6563b17e15ac354ccba06a2e75dcf5 100755
--- a/src/config.guess
+++ b/src/config.guess
@@ -129,6 +129,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     mac68k:OpenBSD:*:*)
 	echo m68k-apple-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    macppc:NetBSD:*:*)
+	echo powerpc-apple-netbsd${UNAME_RELEASE}
+	exit 0;;
     powerpc:machten:*:*)
 	echo powerpc-apple-machten${UNAME_RELEASE}
 	exit 0 ;;
diff --git a/src/configure.in b/src/configure.in
index cf1b969812d4a54c40a862d25d7cdad6ed0e6c29..11f7f1a7485908a82e75f6c8bacb0a90e8588c13 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -22,7 +22,12 @@ case "$host_os" in
     bsdi*) os=bsdi need_tas=no ;;
  freebsd3*|freebsd4*) os=freebsd need_tas=no elf=yes ;;
  freebsd1*|freebsd2*) os=freebsd need_tas=no ;;
-  netbsd*|openbsd*) os=bsd need_tas=no ;;
+  netbsd*)
+	os=bsd need_tas=no
+	case "$host_cpu" in
+	  powerpc) elf=yes ;;
+	esac ;;
+  openbsd*) os=bsd need_tas=no ;;
     dgux*) os=dgux need_tas=no ;;
      aix*) os=aix need_tas=no ;;
 nextstep*) os=nextstep need_tas=no ;;
diff --git a/src/include/port/bsd.h b/src/include/port/bsd.h
index 4e754e77dec81b1e13e138d542a1a0a2c84270a4..cfd0d2811bdc78b4796461ae090e0390411e5954 100644
--- a/src/include/port/bsd.h
+++ b/src/include/port/bsd.h
@@ -24,7 +24,13 @@
 #define HAS_TEST_AND_SET
 #endif
 
+#if defined(__powerpc__)
+#define HAS_TEST_AND_SET
+typedef unsigned int slock_t;
+#endif
 #if defined(__mips__)
 /* #	undef HAS_TEST_AND_SET */
 #endif
+#if !defined(__powerpc__)
 typedef unsigned char slock_t;
+#endif
diff --git a/src/include/port/linux.h b/src/include/port/linux.h
index 81169b2c0c903c412a583645ab25ecb46a9f5479..da57b2b9a3d6c151d1f10024f4c8f7833e7f806f 100644
--- a/src/include/port/linux.h
+++ b/src/include/port/linux.h
@@ -8,7 +8,7 @@
 #define USE_POSIX_TIME
 #define HAS_TEST_AND_SET
 
-#if defined(PPC)
+#if defined(__powerpc__)
 typedef unsigned int slock_t;
 
 #elif defined(__alpha)
@@ -34,6 +34,6 @@ typedef unsigned char slock_t;
 /* #define HAVE_SIGSETJMP 1 */
 #endif
 
-#if defined(PPC)
+#if defined(__powerpc__)
 #undef HAVE_INT_TIMEZONE
 #endif
diff --git a/src/include/utils/dt.h b/src/include/utils/dt.h
index ff3ae468f58f8937836e176e5c91143e9589d182..024acb4c63aba084510aad1e746811b0c6f1792a 100644
--- a/src/include/utils/dt.h
+++ b/src/include/utils/dt.h
@@ -8,7 +8,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: dt.h,v 1.37 1999/03/06 22:58:11 tgl Exp $
+ * $Id: dt.h,v 1.38 1999/03/14 16:03:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -228,7 +228,7 @@ typedef struct
 #define DATETIME_IS_NOEND(j)	(j == DT_NOEND)
 
 #define DATETIME_CURRENT(j)		{j = DT_CURRENT;}
-#if defined(linux) && defined(PPC)
+#if defined(linux) && defined(__powerpc__)
 extern int	datetime_is_current(double j);
 
 #define DATETIME_IS_CURRENT(j)	datetime_is_current(j)
@@ -237,7 +237,7 @@ extern int	datetime_is_current(double j);
 #endif
 
 #define DATETIME_EPOCH(j)		{j = DT_EPOCH;}
-#if defined(linux) && defined(PPC)
+#if defined(linux) && defined(__powerpc__)
 extern int	datetime_is_epoch(double j);
 
 #define DATETIME_IS_EPOCH(j)	datetime_is_epoch(j)
diff --git a/src/makefiles/Makefile.bsd b/src/makefiles/Makefile.bsd
index 1c17504605c97470026a0c514fac0a74f7586ea7..58df0e955d5057053d86e6df651663de7a21aa1b 100644
--- a/src/makefiles/Makefile.bsd
+++ b/src/makefiles/Makefile.bsd
@@ -1,4 +1,10 @@
+ifdef ELF_SYSTEM
+LDFLAGS += -Wl,-E
+endif
 %.so: %.o
+ifdef ELF_SYSTEM
+	$(LD) -x -Bshareable -o $@ $<
+else
 	$(LD) -x -r -o $<.obj $<
 	@echo building shared object $@
 	@rm -f $@.pic
@@ -7,3 +13,4 @@
 	@rm -f $@
 	$(LD) -x -Bshareable -Bforcearchive \
 	  -o $@ $@.pic
+endif
diff --git a/src/test/regress/expected/euc_jp.out b/src/test/regress/expected/euc_jp.out
index f976010e76b7f66948e9e86409ec5d881d7056b5..b0bdfbac9afd341fa4f43442a03b7f92049af5a8 100644
--- a/src/test/regress/expected/euc_jp.out
+++ b/src/test/regress/expected/euc_jp.out
@@ -1,5 +1,5 @@
 QUERY: drop table �׻����Ѹ�;
-ERROR:  Relation �׻����Ѹ� Does Not Exist!
+ERROR:  Relation '�׻����Ѹ�' does not exist
 QUERY: create table �׻����Ѹ� (�Ѹ� text, ʬ�ॳ���� varchar, ����1A���� char(16));
 QUERY: create index �׻����Ѹ�index1 on �׻����Ѹ� using btree (�Ѹ�);
 QUERY: create index �׻����Ѹ�index2 on �׻����Ѹ� using hash (ʬ�ॳ����);