Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit842cb9f

Browse files
committed
Refactor dlopen() support
Nowadays, all platforms except Windows and older HP-UX have standarddlopen() support. So having a separate implementation per platformunder src/backend/port/dynloader/ is a bit excessive. Instead, treatdlopen() like other library functions that happen to be missingsometimes and put a replacement implementation under src/port/.Discussion:https://www.postgresql.org/message-id/flat/e11a49cb-570a-60b7-707d-7084c8de0e61%402ndquadrant.com#54e735ae37476a121abb4e33c2549b03
1 parentac27c74 commit842cb9f

37 files changed

+172
-540
lines changed

‎configure

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15060,7 +15060,7 @@ fi
1506015060
LIBS_including_readline="$LIBS"
1506115061
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
1506215062

15063-
for ac_func in cbrt clock_gettimedlopenfdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l
15063+
for ac_func in cbrt clock_gettime fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l
1506415064
do :
1506515065
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
1506615066
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -15252,6 +15252,30 @@ cat >>confdefs.h <<_ACEOF
1525215252
_ACEOF
1525315253

1525415254

15255+
ac_fn_c_check_decl "$LINENO" "RTLD_GLOBAL" "ac_cv_have_decl_RTLD_GLOBAL" "#include <dlfcn.h>
15256+
"
15257+
if test "x$ac_cv_have_decl_RTLD_GLOBAL" = xyes; then :
15258+
ac_have_decl=1
15259+
else
15260+
ac_have_decl=0
15261+
fi
15262+
15263+
cat >>confdefs.h <<_ACEOF
15264+
#define HAVE_DECL_RTLD_GLOBAL $ac_have_decl
15265+
_ACEOF
15266+
ac_fn_c_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include <dlfcn.h>
15267+
"
15268+
if test "x$ac_cv_have_decl_RTLD_NOW" = xyes; then :
15269+
ac_have_decl=1
15270+
else
15271+
ac_have_decl=0
15272+
fi
15273+
15274+
cat >>confdefs.h <<_ACEOF
15275+
#define HAVE_DECL_RTLD_NOW $ac_have_decl
15276+
_ACEOF
15277+
15278+
1525515279
HAVE_IPV6=no
1525615280
ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" "$ac_includes_default
1525715281
#include <netinet/in.h>
@@ -15461,6 +15485,19 @@ esac
1546115485

1546215486
fi
1546315487

15488+
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
15489+
if test "x$ac_cv_func_dlopen" = xyes; then :
15490+
$as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
15491+
15492+
else
15493+
case " $LIBOBJS " in
15494+
*" dlopen.$ac_objext "* ) ;;
15495+
*) LIBOBJS="$LIBOBJS dlopen.$ac_objext"
15496+
;;
15497+
esac
15498+
15499+
fi
15500+
1546415501
ac_fn_c_check_func "$LINENO" "fls" "ac_cv_func_fls"
1546515502
if test "x$ac_cv_func_fls" = xyes; then :
1546615503
$as_echo "#define HAVE_FLS 1" >>confdefs.h
@@ -19016,7 +19053,7 @@ fi
1901619053
ac_config_files="$ac_config_files GNUmakefile src/Makefile.global"
1901719054

1901819055

19019-
ac_config_links="$ac_config_links src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION} src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION} src/include/dynloader.h:src/backend/port/dynloader/${template}.h src/include/pg_config_os.h:src/include/port/${template}.h src/Makefile.port:src/makefiles/Makefile.${template}"
19056+
ac_config_links="$ac_config_links src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION} src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION} src/include/pg_config_os.h:src/include/port/${template}.h src/Makefile.port:src/makefiles/Makefile.${template}"
1902019057

1902119058

1902219059
if test "$PORTNAME" = "win32"; then
@@ -19737,10 +19774,8 @@ do
1973719774
"src/backend/port/tas.s") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/tas.s:src/backend/port/tas/${tas_file}" ;;
1973819775
"GNUmakefile") CONFIG_FILES="$CONFIG_FILES GNUmakefile" ;;
1973919776
"src/Makefile.global") CONFIG_FILES="$CONFIG_FILES src/Makefile.global" ;;
19740-
"src/backend/port/dynloader.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c" ;;
1974119777
"src/backend/port/pg_sema.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}" ;;
1974219778
"src/backend/port/pg_shmem.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}" ;;
19743-
"src/include/dynloader.h") CONFIG_LINKS="$CONFIG_LINKS src/include/dynloader.h:src/backend/port/dynloader/${template}.h" ;;
1974419779
"src/include/pg_config_os.h") CONFIG_LINKS="$CONFIG_LINKS src/include/pg_config_os.h:src/include/port/${template}.h" ;;
1974519780
"src/Makefile.port") CONFIG_LINKS="$CONFIG_LINKS src/Makefile.port:src/makefiles/Makefile.${template}" ;;
1974619781
"check_win32_symlinks") CONFIG_COMMANDS="$CONFIG_COMMANDS check_win32_symlinks" ;;

‎configure.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,7 +1544,7 @@ PGAC_FUNC_WCSTOMBS_L
15441544
LIBS_including_readline="$LIBS"
15451545
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
15461546

1547-
AC_CHECK_FUNCS([cbrt clock_gettimedlopenfdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l])
1547+
AC_CHECK_FUNCS([cbrt clock_gettime fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l])
15481548

15491549
AC_REPLACE_FUNCS(fseeko)
15501550
case $host_os in
@@ -1570,6 +1570,8 @@ AC_CHECK_DECLS([strlcat, strlcpy, strnlen])
15701570
# This is probably only present on macOS, but may as well check always
15711571
AC_CHECK_DECLS(F_FULLFSYNC, [], [], [#include <fcntl.h>])
15721572

1573+
AC_CHECK_DECLS([RTLD_GLOBAL, RTLD_NOW], [], [], [#include <dlfcn.h>])
1574+
15731575
HAVE_IPV6=no
15741576
AC_CHECK_TYPE([struct sockaddr_in6],
15751577
[AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if you have support for IPv6.])
@@ -1658,7 +1660,7 @@ else
16581660
AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break])
16591661
fi
16601662

1661-
AC_REPLACE_FUNCS([crypt fls getopt getrusage inet_aton mkdtemp random rint srandom strerror strlcat strlcpy strnlen])
1663+
AC_REPLACE_FUNCS([cryptdlopenfls getopt getrusage inet_aton mkdtemp random rint srandom strerror strlcat strlcpy strnlen])
16621664

16631665
case $host_os in
16641666

@@ -2382,10 +2384,8 @@ AC_SUBST(vpath_build)
23822384
AC_CONFIG_FILES([GNUmakefile src/Makefile.global])
23832385

23842386
AC_CONFIG_LINKS([
2385-
src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
23862387
src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}
23872388
src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
2388-
src/include/dynloader.h:src/backend/port/dynloader/${template}.h
23892389
src/include/pg_config_os.h:src/include/port/${template}.h
23902390
src/Makefile.port:src/makefiles/Makefile.${template}
23912391
])

‎src/backend/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ ifeq ($(PORTNAME), win32)
293293
endif
294294

295295
distclean: clean
296-
rm -f port/tas.s port/dynloader.c port/pg_sema.c port/pg_shmem.c
296+
rm -f port/tas.s port/pg_sema.c port/pg_shmem.c
297297

298298
maintainer-clean: distclean
299299
$(MAKE) -C catalog$@

‎src/backend/port/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/dynloader.c
21
/pg_sema.c
32
/pg_shmem.c
43
/tas.s

‎src/backend/port/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ subdir = src/backend/port
2121
top_builddir = ../../..
2222
include$(top_builddir)/src/Makefile.global
2323

24-
OBJS = atomics.odynloader.opg_sema.o pg_shmem.o$(TAS)
24+
OBJS = atomics.o pg_sema.o pg_shmem.o$(TAS)
2525

2626
ifeq ($(PORTNAME), win32)
2727
SUBDIRS += win32

‎src/backend/port/dynloader/aix.c

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎src/backend/port/dynloader/aix.h

Lines changed: 0 additions & 39 deletions
This file was deleted.

‎src/backend/port/dynloader/cygwin.c

Lines changed: 0 additions & 3 deletions
This file was deleted.

‎src/backend/port/dynloader/cygwin.h

Lines changed: 0 additions & 36 deletions
This file was deleted.

‎src/backend/port/dynloader/darwin.c

Lines changed: 0 additions & 35 deletions
This file was deleted.

‎src/backend/port/dynloader/darwin.h

Lines changed: 0 additions & 8 deletions
This file was deleted.

‎src/backend/port/dynloader/freebsd.c

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎src/backend/port/dynloader/freebsd.h

Lines changed: 0 additions & 38 deletions
This file was deleted.

‎src/backend/port/dynloader/hpux.c

Lines changed: 0 additions & 68 deletions
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp