From c87bc779d4e9f109e92f8b8f1dfad5d6739f8e97 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Mon, 14 May 2001 21:45:53 +0000 Subject: [PATCH] Use RTLD_GLOBAL flag for dlopen-style dynamic loaders. --- src/backend/port/dynloader/aix.h | 4 ++-- src/backend/port/dynloader/bsdi.c | 4 ++-- src/backend/port/dynloader/bsdi.h | 16 ++++++++-------- src/backend/port/dynloader/dgux.h | 4 ++-- src/backend/port/dynloader/freebsd.h | 4 ++-- src/backend/port/dynloader/irix5.h | 2 +- src/backend/port/dynloader/linux.h | 21 ++++++++++----------- src/backend/port/dynloader/netbsd.h | 4 ++-- src/backend/port/dynloader/openbsd.h | 4 ++-- src/backend/port/dynloader/osf.h | 4 ++-- src/backend/port/dynloader/sco.h | 4 ++-- src/backend/port/dynloader/solaris.h | 4 ++-- src/backend/port/dynloader/sunos4.h | 4 ++-- src/backend/port/dynloader/svr4.h | 4 ++-- src/backend/port/dynloader/univel.h | 2 +- src/backend/port/dynloader/unixware.h | 2 +- src/backend/port/dynloader/win.h | 2 +- src/template/bsdi | 4 ---- 18 files changed, 44 insertions(+), 49 deletions(-) diff --git a/src/backend/port/dynloader/aix.h b/src/backend/port/dynloader/aix.h index f34d07b065..a0320727f3 100644 --- a/src/backend/port/dynloader/aix.h +++ b/src/backend/port/dynloader/aix.h @@ -1,5 +1,5 @@ /* - * $Id: aix.h,v 1.5 2001/03/22 03:59:42 momjian Exp $ + * $Id: aix.h,v 1.6 2001/05/14 21:45:53 petere Exp $ * * @(#)dlfcn.h 1.4 revision of 95/04/25 09:36:52 * This is an unpublished work copyright (c) 1992 HELIOS Software GmbH @@ -58,7 +58,7 @@ extern "C" #include "utils/dynamic_loader.h" -#define pg_dlopen(f) dlopen(f, RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/bsdi.c b/src/backend/port/dynloader/bsdi.c index bbedee3d0c..e974330e58 100644 --- a/src/backend/port/dynloader/bsdi.c +++ b/src/backend/port/dynloader/bsdi.c @@ -15,7 +15,7 @@ * *------------------------------------------------------------------------- */ -#ifdef PRE_BSDI_2_1 +#ifndef HAVE_DLOPEN #include "postgres.h" extern char pg_pathname[]; @@ -95,4 +95,4 @@ pg_dlerror() return dld_strerror(dld_errno); } -#endif +#endif /* not HAVE_DLOPEN */ diff --git a/src/backend/port/dynloader/bsdi.h b/src/backend/port/dynloader/bsdi.h index 56f3443665..834dff0d70 100644 --- a/src/backend/port/dynloader/bsdi.h +++ b/src/backend/port/dynloader/bsdi.h @@ -1,7 +1,6 @@ /*------------------------------------------------------------------------- * - * port_protos.h - * port-specific prototypes for SunOS 4 + * Dynamic loader interface for BSD/OS * * * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group @@ -16,19 +15,20 @@ #include "utils/dynamic_loader.h" -/* dynloader.c */ -#ifndef PRE_BSDI_2_1 +#ifdef HAVE_DLOPEN + #include -#define pg_dlopen(f) dlopen(f, RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror -#else + +#else /* not HAVE_DLOPEN */ + #define pg_dlsym(handle, funcname) ((PGFunction) dld_get_func((funcname))) #define pg_dlclose(handle) ({ dld_unlink_by_file(handle, 1); free(handle); }) -#endif -/* port.c */ +#endif /* not HAVE_DLOPEN */ #endif /* PORT_PROTOS_H */ diff --git a/src/backend/port/dynloader/dgux.h b/src/backend/port/dynloader/dgux.h index 7eb676687d..15fb78a90b 100644 --- a/src/backend/port/dynloader/dgux.h +++ b/src/backend/port/dynloader/dgux.h @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: dgux.h,v 1.9 2001/02/10 02:31:26 tgl Exp $ + * $Id: dgux.h,v 1.10 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/freebsd.h b/src/backend/port/dynloader/freebsd.h index 4b66585834..fe75a47f0c 100644 --- a/src/backend/port/dynloader/freebsd.h +++ b/src/backend/port/dynloader/freebsd.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: freebsd.h,v 1.8 2001/02/10 02:31:26 tgl Exp $ + * $Id: freebsd.h,v 1.9 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,7 @@ * begin with an underscore is fairly tricky, and some versions of * NetBSD (like 1.0, and 1.0A pre June 1995) have no dlerror.) */ -#define pg_dlopen(f) BSD44_derived_dlopen(f, 1) +#define pg_dlopen(f) BSD44_derived_dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym BSD44_derived_dlsym #define pg_dlclose BSD44_derived_dlclose #define pg_dlerror BSD44_derived_dlerror diff --git a/src/backend/port/dynloader/irix5.h b/src/backend/port/dynloader/irix5.h index 355ce1b87d..a4a5d134b6 100644 --- a/src/backend/port/dynloader/irix5.h +++ b/src/backend/port/dynloader/irix5.h @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/linux.h b/src/backend/port/dynloader/linux.h index 64807b036f..d6873763b4 100644 --- a/src/backend/port/dynloader/linux.h +++ b/src/backend/port/dynloader/linux.h @@ -1,13 +1,12 @@ /*------------------------------------------------------------------------- * - * port_protos.h - * port-specific prototypes for Linux + * Dynamic loader interface for Linux * * * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: linux.h,v 1.11 2001/02/10 02:31:26 tgl Exp $ + * $Id: linux.h,v 1.12 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -15,13 +14,13 @@ #define PORT_PROTOS_H #include "utils/dynamic_loader.h" -#ifdef __ELF__ +#ifdef HAVE_DLOPEN #include #endif -/* dynloader.c */ -#ifndef __ELF__ +#ifndef HAVE_DLOPEN + #ifndef HAVE_DLD_H #define pg_dlsym(handle, funcname) (NULL) #define pg_dlclose(handle) ({}) @@ -29,14 +28,14 @@ #define pg_dlsym(handle, funcname) ((PGFunction) dld_get_func((funcname))) #define pg_dlclose(handle) ({ dld_unlink_by_file(handle, 1); free(handle); }) #endif -#else -/* #define pg_dlopen(f) dlopen(f, 1) */ -#define pg_dlopen(f) dlopen(f, 2) + +#else /* HAVE_DLOPEN */ + +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror -#endif -/* port.c */ +#endif /* HAVE_DLOPEN */ #endif /* PORT_PROTOS_H */ diff --git a/src/backend/port/dynloader/netbsd.h b/src/backend/port/dynloader/netbsd.h index a4c13b322c..21b434e872 100644 --- a/src/backend/port/dynloader/netbsd.h +++ b/src/backend/port/dynloader/netbsd.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: netbsd.h,v 1.3 2001/02/10 02:31:26 tgl Exp $ + * $Id: netbsd.h,v 1.4 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,7 @@ * begin with an underscore is fairly tricky, and some versions of * NetBSD (like 1.0, and 1.0A pre June 1995) have no dlerror.) */ -#define pg_dlopen(f) BSD44_derived_dlopen(f, 1) +#define pg_dlopen(f) BSD44_derived_dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym BSD44_derived_dlsym #define pg_dlclose BSD44_derived_dlclose #define pg_dlerror BSD44_derived_dlerror diff --git a/src/backend/port/dynloader/openbsd.h b/src/backend/port/dynloader/openbsd.h index 307edf97cc..155600e697 100644 --- a/src/backend/port/dynloader/openbsd.h +++ b/src/backend/port/dynloader/openbsd.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: openbsd.h,v 1.3 2001/02/10 02:31:26 tgl Exp $ + * $Id: openbsd.h,v 1.4 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -33,7 +33,7 @@ * begin with an underscore is fairly tricky, and some versions of * NetBSD (like 1.0, and 1.0A pre June 1995) have no dlerror.) */ -#define pg_dlopen(f) BSD44_derived_dlopen(f, 1) +#define pg_dlopen(f) BSD44_derived_dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym BSD44_derived_dlsym #define pg_dlclose BSD44_derived_dlclose #define pg_dlerror BSD44_derived_dlerror diff --git a/src/backend/port/dynloader/osf.h b/src/backend/port/dynloader/osf.h index 9f5cdd5c58..61961b02d6 100644 --- a/src/backend/port/dynloader/osf.h +++ b/src/backend/port/dynloader/osf.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: osf.h,v 1.2 2001/01/24 19:43:04 momjian Exp $ + * $Id: osf.h,v 1.3 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -28,7 +28,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f, RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym(h, f) ((PGFunction) dlsym(h, f)) #define pg_dlclose(h) dlclose(h) #define pg_dlerror() dlerror() diff --git a/src/backend/port/dynloader/sco.h b/src/backend/port/dynloader/sco.h index 584799f52b..70ead4fa8d 100644 --- a/src/backend/port/dynloader/sco.h +++ b/src/backend/port/dynloader/sco.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: sco.h,v 1.7 2001/02/10 02:31:26 tgl Exp $ + * $Id: sco.h,v 1.8 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/solaris.h b/src/backend/port/dynloader/solaris.h index c5f6ec1874..e4b81f435f 100644 --- a/src/backend/port/dynloader/solaris.h +++ b/src/backend/port/dynloader/solaris.h @@ -1,4 +1,4 @@ -/* $Header: /cvsroot/pgsql/src/backend/port/dynloader/solaris.h,v 1.3 2001/03/22 03:59:43 momjian Exp $ */ +/* $Header: /cvsroot/pgsql/src/backend/port/dynloader/solaris.h,v 1.4 2001/05/14 21:45:53 petere Exp $ */ #ifndef DYNLOADER_SOLARIS_H #define DYNLOADER_SOLARIS_H @@ -6,7 +6,7 @@ #include #include "utils/dynamic_loader.h" -#define pg_dlopen(f) dlopen(f,1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/sunos4.h b/src/backend/port/dynloader/sunos4.h index e915a85086..49040c1dea 100644 --- a/src/backend/port/dynloader/sunos4.h +++ b/src/backend/port/dynloader/sunos4.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: sunos4.h,v 1.7 2001/02/10 02:31:26 tgl Exp $ + * $Id: sunos4.h,v 1.8 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f, 1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/svr4.h b/src/backend/port/dynloader/svr4.h index 6e151d2e49..96c39ea2ec 100644 --- a/src/backend/port/dynloader/svr4.h +++ b/src/backend/port/dynloader/svr4.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: svr4.h,v 1.7 2001/02/10 02:31:26 tgl Exp $ + * $Id: svr4.h,v 1.8 2001/05/14 21:45:53 petere Exp $ * *------------------------------------------------------------------------- */ @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/univel.h b/src/backend/port/dynloader/univel.h index d490e25e6b..83f0e2c82a 100644 --- a/src/backend/port/dynloader/univel.h +++ b/src/backend/port/dynloader/univel.h @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/unixware.h b/src/backend/port/dynloader/unixware.h index d52842cede..5c1b04cc69 100644 --- a/src/backend/port/dynloader/unixware.h +++ b/src/backend/port/dynloader/unixware.h @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,RTLD_LAZY) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/backend/port/dynloader/win.h b/src/backend/port/dynloader/win.h index 5cabfab3fa..d0d33189b7 100644 --- a/src/backend/port/dynloader/win.h +++ b/src/backend/port/dynloader/win.h @@ -26,7 +26,7 @@ * library as the file to be dynamically loaded. * */ -#define pg_dlopen(f) dlopen(f,1) +#define pg_dlopen(f) dlopen((f), RTLD_LAZY | RTLD_GLOBAL) #define pg_dlsym dlsym #define pg_dlclose dlclose #define pg_dlerror dlerror diff --git a/src/template/bsdi b/src/template/bsdi index d6698e7772..967d055a54 100644 --- a/src/template/bsdi +++ b/src/template/bsdi @@ -4,10 +4,6 @@ case $host_cpu in i?86) CFLAGS="$CFLAGS -m486";; esac -case $host_os in - bsdi2.0) CFLAGS="$CFLAGS -DPRE_BSDI_2_1";; -esac - case $host_os in bsdi2.0 | bsdi2.1 | bsdi3*) CC=gcc2