From 9f6feda7c467953af4aafeaf573a7035169baced Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Tue, 19 Jul 2022 18:07:51 +1200 Subject: [PATCH v2 01/13] Remove configure probe for dlopen. dlopen() is in SUSv2 and all targeted Unix systems have it. We still need replacement functions for Windows, but we don't need a configure probe for that. Since it's no longer needed by other operating systems, rename dlopen.c to win32dlopen.c. Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com --- configure | 19 ++++++------------- configure.ac | 2 +- src/backend/utils/fmgr/dfmgr.c | 4 ++-- src/include/pg_config.h.in | 3 --- src/include/port.h | 3 ++- src/port/{dlopen.c => win32dlopen.c} | 6 +----- src/tools/msvc/Mkvcbuild.pm | 3 ++- src/tools/msvc/Solution.pm | 1 - 8 files changed, 14 insertions(+), 27 deletions(-) rename src/port/{dlopen.c => win32dlopen.c} (95%) diff --git a/configure b/configure index c5bc382395..dbff2028a5 100755 --- a/configure +++ b/configure @@ -16687,19 +16687,6 @@ $as_echo "#define HAVE_PS_STRINGS 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - $as_echo "#define HAVE_DLOPEN 1" >>confdefs.h - -else - case " $LIBOBJS " in - *" dlopen.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS dlopen.$ac_objext" - ;; -esac - -fi - ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" if test "x$ac_cv_func_explicit_bzero" = xyes; then : $as_echo "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h @@ -17078,6 +17065,12 @@ esac ;; esac + case " $LIBOBJS " in + *" win32dlopen.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS win32dlopen.$ac_objext" + ;; +esac + case " $LIBOBJS " in *" win32env.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS win32env.$ac_objext" diff --git a/configure.ac b/configure.ac index 61d0dd5d58..68ef649258 100644 --- a/configure.ac +++ b/configure.ac @@ -1880,7 +1880,6 @@ if test "$pgac_cv_var_PS_STRINGS" = yes ; then fi AC_REPLACE_FUNCS(m4_normalize([ - dlopen explicit_bzero getopt getpeereid @@ -1962,6 +1961,7 @@ if test "$PORTNAME" = "win32"; then AC_LIBOBJ(kill) AC_LIBOBJ(open) AC_LIBOBJ(system) + AC_LIBOBJ(win32dlopen) AC_LIBOBJ(win32env) AC_LIBOBJ(win32error) AC_LIBOBJ(win32ntdll) diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c index 7f9ea97280..08fd7e1264 100644 --- a/src/backend/utils/fmgr/dfmgr.c +++ b/src/backend/utils/fmgr/dfmgr.c @@ -16,7 +16,7 @@ #include -#ifdef HAVE_DLOPEN +#ifndef WIN32 #include /* @@ -28,7 +28,7 @@ #undef bool #endif #endif -#endif /* HAVE_DLOPEN */ +#endif /* !WIN32 */ #include "fmgr.h" #include "lib/stringinfo.h" diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index f9618e1986..c213f31273 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -169,9 +169,6 @@ don't. */ #undef HAVE_DECL_STRTOULL -/* Define to 1 if you have the `dlopen' function. */ -#undef HAVE_DLOPEN - /* Define to 1 if you have the header file. */ #undef HAVE_EDITLINE_HISTORY_H diff --git a/src/include/port.h b/src/include/port.h index d39b04141f..27189cd12b 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -455,7 +455,8 @@ extern int setenv(const char *name, const char *value, int overwrite); extern int unsetenv(const char *name); #endif -#ifndef HAVE_DLOPEN +#ifdef WIN32 +/* src/port/win32dlopen.c */ extern void *dlopen(const char *file, int mode); extern void *dlsym(void *handle, const char *symbol); extern int dlclose(void *handle); diff --git a/src/port/dlopen.c b/src/port/win32dlopen.c similarity index 95% rename from src/port/dlopen.c rename to src/port/win32dlopen.c index 6ff9f4bf64..48aa37129d 100644 --- a/src/port/dlopen.c +++ b/src/port/win32dlopen.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * dlopen.c - * dynamic loader for platforms without dlopen() + * dynamic loader for Windows * * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -15,8 +15,6 @@ #include "c.h" -#if defined(WIN32) - static char last_dyn_error[512]; static void @@ -93,5 +91,3 @@ dlopen(const char *file, int mode) last_dyn_error[0] = 0; return (void *) h; } - -#endif diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index c935f776e5..266f98e2ed 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -103,11 +103,12 @@ sub mkvcbuild getpeereid.c getrusage.c inet_aton.c getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c - dirent.c dlopen.c getopt.c getopt_long.c link.c + dirent.c getopt.c getopt_long.c link.c pread.c preadv.c pwrite.c pwritev.c pg_bitutils.c pg_strong_random.c pgcheckdir.c pgmkdirp.c pgsleep.c pgstrcasecmp.c pqsignal.c mkdtemp.c qsort.c qsort_arg.c bsearch_arg.c quotes.c system.c strerror.c tar.c + win32dlopen.c win32env.c win32error.c win32ntdll.c win32security.c win32setlocale.c win32stat.c); diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index b09872e018..ce56b23bba 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -251,7 +251,6 @@ sub GenerateFiles HAVE_DECL_STRNLEN => 1, HAVE_DECL_STRTOLL => 1, HAVE_DECL_STRTOULL => 1, - HAVE_DLOPEN => undef, HAVE_EDITLINE_HISTORY_H => undef, HAVE_EDITLINE_READLINE_H => undef, HAVE_EXECINFO_H => undef, -- 2.35.1