diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 889f24b832..a569b73cc3 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.8 1999/04/30 02:04:49 momjian Exp $ +# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.9 1999/05/17 04:13:24 scrappy Exp $ # #------------------------------------------------------------------------- @@ -59,10 +59,11 @@ install-shlib-dep := ifeq ($(PORTNAME), freebsd) ifdef BSD_SHLIB install-shlib-dep := install-shlib - shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) ifdef ELF_SYSTEM - LDFLAGS_SL := -x -Bshareable + shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION) + LDFLAGS_SL := -x -shared -soname $(shlib) else + shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) LDFLAGS_SL := -x -Bshareable -Bforcearchive endif CFLAGS += $(CFLAGS_SL) diff --git a/src/backend/port/dynloader/freebsd.c b/src/backend/port/dynloader/freebsd.c index 51ad3d99a6..14d21fb61f 100644 --- a/src/backend/port/dynloader/freebsd.c +++ b/src/backend/port/dynloader/freebsd.c @@ -83,11 +83,13 @@ BSD44_derived_dlsym(void *handle, const char *name) void *vp; char buf[BUFSIZ]; +#ifndef __ELF__ if (*name != '_') { sprintf(buf, "_%s", name); name = buf; } +#endif if ((vp = dlsym(handle, (char *) name)) == (void *) NULL) sprintf(error_message, "dlsym (%s) failed", name); return vp; diff --git a/src/configure b/src/configure index ad220cc1b0..8fe5f429f3 100755 --- a/src/configure +++ b/src/configure @@ -625,8 +625,8 @@ case "$host_os" in aux*) os=aux need_tas=no ;; linux*) os=linux need_tas=no ;; bsdi*) os=bsdi need_tas=no ;; - freebsd3*|freebsd4*) os=freebsd need_tas=no elf=yes ;; freebsd1*|freebsd2*) os=freebsd need_tas=no ;; + freebsd*) os=freebsd need_tas=no elf=yes ;; netbsd*) os=bsd need_tas=no case "$host_cpu" in diff --git a/src/configure.in b/src/configure.in index 792af606df..e4762d2bae 100644 --- a/src/configure.in +++ b/src/configure.in @@ -20,8 +20,8 @@ case "$host_os" in aux*) os=aux need_tas=no ;; linux*) os=linux need_tas=no ;; bsdi*) os=bsdi need_tas=no ;; - freebsd3*|freebsd4*) os=freebsd need_tas=no elf=yes ;; freebsd1*|freebsd2*) os=freebsd need_tas=no ;; + freebsd*) os=freebsd need_tas=no elf=yes ;; netbsd*) os=bsd need_tas=no case "$host_cpu" in diff --git a/src/makefiles/Makefile.freebsd b/src/makefiles/Makefile.freebsd index fcbcd84de4..7bf4258816 100644 --- a/src/makefiles/Makefile.freebsd +++ b/src/makefiles/Makefile.freebsd @@ -1,13 +1,17 @@ +ifdef ELF_SYSTEM +LDFLAGS+= -export-dynamic +endif + %.so: %.o +ifdef ELF_SYSTEM + $(LD) -x -shared -o $@ $< +else $(LD) -x -r -o $<.obj $< @echo building shared object $@ @rm -f $@.pic @${AR} cq $@.pic `lorder $<.obj | tsort` ${RANLIB} $@.pic @rm -f $@ -ifdef ELF_SYSTEM - $(LD) -x -Bshareable -o $@ $@.pic -else $(LD) -x -Bshareable -Bforcearchive -o $@ $@.pic endif