1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-19 15:49:24 +03:00

Remove configure probe for dlopen, and refactor.

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 and move the declarations into win32_port.h.

Likewise, the macros RTLD_NOW and RTLD_GLOBAL now only need to be
defined on Windows, since all targeted Unix systems have 'em.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com
This commit is contained in:
Thomas Munro
2022-08-05 09:12:45 +12:00
parent 87e22f675f
commit ca1e85513e
9 changed files with 23 additions and 87 deletions

View File

@@ -16,7 +16,7 @@
#include <sys/stat.h>
#ifdef HAVE_DLOPEN
#ifndef WIN32
#include <dlfcn.h>
/*
@@ -28,7 +28,7 @@
#undef bool
#endif
#endif
#endif /* HAVE_DLOPEN */
#endif /* !WIN32 */
#include "fmgr.h"
#include "lib/stringinfo.h"

View File

@@ -141,14 +141,6 @@
don't. */
#undef HAVE_DECL_PWRITEV
/* Define to 1 if you have the declaration of `RTLD_GLOBAL', and to 0 if you
don't. */
#undef HAVE_DECL_RTLD_GLOBAL
/* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you
don't. */
#undef HAVE_DECL_RTLD_NOW
/* Define to 1 if you have the declaration of `strlcat', and to 0 if you
don't. */
#undef HAVE_DECL_STRLCAT
@@ -169,9 +161,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 <editline/history.h> header file. */
#undef HAVE_EDITLINE_HISTORY_H

View File

@@ -455,29 +455,6 @@ extern int setenv(const char *name, const char *value, int overwrite);
extern int unsetenv(const char *name);
#endif
#ifndef HAVE_DLOPEN
extern void *dlopen(const char *file, int mode);
extern void *dlsym(void *handle, const char *symbol);
extern int dlclose(void *handle);
extern char *dlerror(void);
#endif
/*
* In some older systems, the RTLD_NOW flag isn't defined and the mode
* argument to dlopen must always be 1.
*/
#if !HAVE_DECL_RTLD_NOW
#define RTLD_NOW 1
#endif
/*
* The RTLD_GLOBAL flag is wanted if available, but it doesn't exist
* everywhere. If it doesn't exist, set it to 0 so it has no effect.
*/
#if !HAVE_DECL_RTLD_GLOBAL
#define RTLD_GLOBAL 0
#endif
/* thread.c */
#ifndef WIN32
extern bool pg_get_user_name(uid_t user_id, char *buffer, size_t buflen);

View File

@@ -503,6 +503,15 @@ extern int pgwin32_ReserveSharedMemoryRegion(HANDLE);
/* in backend/port/win32/crashdump.c */
extern void pgwin32_install_crashdump_handler(void);
/* in port/win32dlopen.c */
extern void *dlopen(const char *file, int mode);
extern void *dlsym(void *handle, const char *symbol);
extern int dlclose(void *handle);
extern char *dlerror(void);
#define RTLD_NOW 1
#define RTLD_GLOBAL 0
/* in port/win32error.c */
extern void _dosmaperr(unsigned long);

View File

@@ -1,22 +1,20 @@
/*-------------------------------------------------------------------------
*
* dlopen.c
* dynamic loader for platforms without dlopen()
* win32dlopen.c
* dynamic loader for Windows
*
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* src/port/dlopen.c
* src/port/win32dlopen.c
*
*-------------------------------------------------------------------------
*/
#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

View File

@@ -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);

View File

@@ -244,14 +244,11 @@ sub GenerateFiles
HAVE_DECL_POSIX_FADVISE => 0,
HAVE_DECL_PREADV => 0,
HAVE_DECL_PWRITEV => 0,
HAVE_DECL_RTLD_GLOBAL => 0,
HAVE_DECL_RTLD_NOW => 0,
HAVE_DECL_STRLCAT => 0,
HAVE_DECL_STRLCPY => 0,
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,