summaryrefslogtreecommitdiff
path: root/libpq/libpq
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2021-10-26 13:41:36 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-10-27 10:46:38 +0300
commitef7aa9649a7ac9b1b13bb75db89a3cca929fe559 (patch)
tree33a236148b1f2b7745442136ed7f44ac7d8575bc /libpq/libpq
parentc73d294857fa5dd52794b037343e12222181f0a0 (diff)
Upgrade to 14.0
Diffstat (limited to 'libpq/libpq')
-rw-r--r--libpq/libpq/buildfile45
l---------libpq/libpq/common/cryptohash_openssl.c1
l---------libpq/libpq/common/encnames.c1
l---------libpq/libpq/common/hmac_openssl.c1
l---------libpq/libpq/common/md5_common.c1
l---------libpq/libpq/common/md5_int.h1
l---------libpq/libpq/common/sha2_openssl.c1
l---------libpq/libpq/common/string.c1
l---------libpq/libpq/common/wchar.c1
-rw-r--r--libpq/libpq/libpqdll.def10
-rw-r--r--libpq/libpq/libpqdll.map10
l---------libpq/libpq/mb/encnames.c1
l---------libpq/libpq/mb/wchar.c1
-rw-r--r--libpq/libpq/pg_config.h120
l---------libpq/libpq/pg_config.h.win32.orig1
-rw-r--r--libpq/libpq/pg_config_ext.h4
l---------libpq/libpq/pg_config_ext.h.win32.orig1
l---------libpq/libpq/port/explicit_bzero.c1
l---------libpq/libpq/port/gettimeofday.c1
l---------libpq/libpq/port/win32stat.c1
20 files changed, 116 insertions, 88 deletions
diff --git a/libpq/libpq/buildfile b/libpq/libpq/buildfile
index bf7f844..010be7b 100644
--- a/libpq/libpq/buildfile
+++ b/libpq/libpq/buildfile
@@ -1,6 +1,8 @@
# file : libpq/buildfile
# license : PostgreSQL Licene; see accompanying COPYRIGHT file
+# Note that libz is only used in the backend server.
+#
import imp_libs = libssl%lib{ssl}
import imp_libs += libcrypto%lib{crypto}
@@ -10,15 +12,20 @@ import imp_libs += libcrypto%lib{crypto}
# libpqdll.map and libpqdll.def on the fly from pq/exports.txt applying
# regex replace to its lines and adding prologue/epilogue.
#
-lib{pq}: {h }{* -version} \
- {h }{ version} \
- pq/{h c}{* -fe-gssapi-common -fe-secure-gssapi -*win32*} \
- mb/{ c}{* } \
- port/{h c}{* -strlcpy -getaddrinfo -inet_aton -*win32*} \
- common/{ c}{* } \
- include/{h }{** } \
- {def }{libpqdll } \
- pq/{file}{pg_service.conf.sample } \
+lib{pq}: {h }{* -version} \
+ {h }{ version} \
+ pq/{h c}{* -fe-gssapi-common \
+ -fe-secure-gssapi \
+ -*win32*} \
+ port/{h c}{* -explicit_bzero \
+ -getaddrinfo \
+ -gettimeofday \
+ -inet_aton \
+ -strlcpy \
+ -*win32*} \
+ common/{h c}{* } \
+ include/{h }{** } \
+ pq/{file}{pg_service.conf.sample} \
$imp_libs
tclass = $c.target.class
@@ -29,12 +36,24 @@ bsd = ($tclass == 'bsd')
macos = ($tclass == 'macos')
windows = ($tclass == 'windows')
-lib{pq}: file{libpqdll.map}: include = ($linux || $bsd ? adhoc : false)
-lib{pq}: port/c{strlcpy}: include = (!$bsd && !$macos)
+# Note that upstream also uses native explicit_bzero() on Linux for glibc
+# versions equal or greater than 2.25. It's, however, not easy to check the
+# glibc's version in the buildfile, so we always fallback to the custom
+# explicit_bzero() implementation on Linux.
+#
+# Also note that linking the native explicit_bzero() would prevent us running
+# against older glibc versions.
+#
+lib{pq}: port/c{explicit_bzero}: include = (!$bsd)
+lib{pq}: port/c{gettimeofday}: include = ($tsys == 'win32-msvc')
+lib{pq}: port/c{strlcpy}: include = (!$bsd && !$macos)
lib{pq}: pq/{h c}{*win32* } \
port/{h c}{*win32* +getaddrinfo +inet_aton}: include = $windows
+libs{pq}: file{libpqdll.map}: include = ($linux || $bsd ? adhoc : false)
+libs{pq}: def{libpqdll}: include = $windows
+
# The version file is an internal one (it is only included from pg_config.h)
# so we don't distribute nor install it (see below).
#
@@ -80,7 +99,7 @@ switch $tclass, $tsys
case 'windows', 'mingw32'
{
- c.poptions += -DBUILDING_DLL -DEXEC_BACKEND
+ c.poptions += -DBUILDING_DLL
c.poptions =+ "-I$src_base/include/port/win32"
}
case 'windows'
@@ -88,7 +107,7 @@ switch $tclass, $tsys
# Probably some of the *WIN* macro definitions are not really required,
# but let's keep all of them for good measure.
#
- c.poptions += -DEXEC_BACKEND -D_WINDLL -D__WINDOWS__ -D__WIN32__ -D_MBCS \
+ c.poptions += -D_WINDLL -D__WINDOWS__ -D__WIN32__ -D_MBCS \
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
c.poptions =+ "-I$src_base/include/port/win32_msvc" \
diff --git a/libpq/libpq/common/cryptohash_openssl.c b/libpq/libpq/common/cryptohash_openssl.c
new file mode 120000
index 0000000..8a03d82
--- /dev/null
+++ b/libpq/libpq/common/cryptohash_openssl.c
@@ -0,0 +1 @@
+../../../upstream/src/common/cryptohash_openssl.c \ No newline at end of file
diff --git a/libpq/libpq/common/encnames.c b/libpq/libpq/common/encnames.c
new file mode 120000
index 0000000..36b2bb4
--- /dev/null
+++ b/libpq/libpq/common/encnames.c
@@ -0,0 +1 @@
+../../../upstream/src/common/encnames.c \ No newline at end of file
diff --git a/libpq/libpq/common/hmac_openssl.c b/libpq/libpq/common/hmac_openssl.c
new file mode 120000
index 0000000..70fd6d7
--- /dev/null
+++ b/libpq/libpq/common/hmac_openssl.c
@@ -0,0 +1 @@
+../../../upstream/src/common/hmac_openssl.c \ No newline at end of file
diff --git a/libpq/libpq/common/md5_common.c b/libpq/libpq/common/md5_common.c
new file mode 120000
index 0000000..4ceb269
--- /dev/null
+++ b/libpq/libpq/common/md5_common.c
@@ -0,0 +1 @@
+../../../upstream/src/common/md5_common.c \ No newline at end of file
diff --git a/libpq/libpq/common/md5_int.h b/libpq/libpq/common/md5_int.h
new file mode 120000
index 0000000..24576cb
--- /dev/null
+++ b/libpq/libpq/common/md5_int.h
@@ -0,0 +1 @@
+../../../upstream/src/common/md5_int.h \ No newline at end of file
diff --git a/libpq/libpq/common/sha2_openssl.c b/libpq/libpq/common/sha2_openssl.c
deleted file mode 120000
index 4d52df2..0000000
--- a/libpq/libpq/common/sha2_openssl.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../upstream/src/common/sha2_openssl.c \ No newline at end of file
diff --git a/libpq/libpq/common/string.c b/libpq/libpq/common/string.c
new file mode 120000
index 0000000..1887054
--- /dev/null
+++ b/libpq/libpq/common/string.c
@@ -0,0 +1 @@
+../../../upstream/src/common/string.c \ No newline at end of file
diff --git a/libpq/libpq/common/wchar.c b/libpq/libpq/common/wchar.c
new file mode 120000
index 0000000..e929657
--- /dev/null
+++ b/libpq/libpq/common/wchar.c
@@ -0,0 +1 @@
+../../../upstream/src/common/wchar.c \ No newline at end of file
diff --git a/libpq/libpq/libpqdll.def b/libpq/libpq/libpqdll.def
index eb2d1c7..049ca06 100644
--- a/libpq/libpq/libpqdll.def
+++ b/libpq/libpq/libpqdll.def
@@ -176,3 +176,13 @@ EXPORTS
PQhostaddr @ 174
PQgssEncInUse @ 175
PQgetgssctx @ 176
+ PQsetSSLKeyPassHook_OpenSSL @ 177
+ PQgetSSLKeyPassHook_OpenSSL @ 178
+ PQdefaultSSLKeyPassHook_OpenSSL @ 179
+ PQenterPipelineMode @ 180
+ PQexitPipelineMode @ 181
+ PQpipelineSync @ 182
+ PQpipelineStatus @ 183
+ PQsetTraceFlags @ 184
+ PQmblenBounded @ 185
+ PQsendFlushRequest @ 186
diff --git a/libpq/libpq/libpqdll.map b/libpq/libpq/libpqdll.map
index 893dc86..4fc401e 100644
--- a/libpq/libpq/libpqdll.map
+++ b/libpq/libpq/libpqdll.map
@@ -175,4 +175,14 @@ PQresultMemorySize;
PQhostaddr;
PQgssEncInUse;
PQgetgssctx;
+PQsetSSLKeyPassHook_OpenSSL;
+PQgetSSLKeyPassHook_OpenSSL;
+PQdefaultSSLKeyPassHook_OpenSSL;
+PQenterPipelineMode;
+PQexitPipelineMode;
+PQpipelineSync;
+PQpipelineStatus;
+PQsetTraceFlags;
+PQmblenBounded;
+PQsendFlushRequest;
local: *; };
diff --git a/libpq/libpq/mb/encnames.c b/libpq/libpq/mb/encnames.c
deleted file mode 120000
index c4e83b6..0000000
--- a/libpq/libpq/mb/encnames.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../upstream/src/backend/utils/mb/encnames.c \ No newline at end of file
diff --git a/libpq/libpq/mb/wchar.c b/libpq/libpq/mb/wchar.c
deleted file mode 120000
index fdacab3..0000000
--- a/libpq/libpq/mb/wchar.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../upstream/src/backend/utils/mb/wchar.c \ No newline at end of file
diff --git a/libpq/libpq/pg_config.h b/libpq/libpq/pg_config.h
index fcea042..c524ca9 100644
--- a/libpq/libpq/pg_config.h
+++ b/libpq/libpq/pg_config.h
@@ -3,8 +3,8 @@
*/
/*
- * For the semantics of the following macros refer to pg_config.h.in.orig,
- * pg_config.h.win32.orig, and the upstream's configure.in.
+ * For the semantics of the following macros refer to pg_config.h.in.orig and
+ * the upstream's configure.in.
*
* Note that we will explicitly undefine macros that are present in the libpq
* source code but should not be defined. While this is not technically
@@ -71,47 +71,55 @@
*/
#ifndef _WIN32
# if __SIZEOF_LONG__ == 8
-# define HAVE_LONG_INT_64 1
+# define HAVE_LONG_INT_64 1
# endif
# ifdef __SIZEOF_LONG_LONG__
-# define HAVE_LONG_LONG_INT 1
+# define HAVE_LONG_LONG_INT 1
# endif
# if __SIZEOF_LONG_LONG__ == 8
-# define HAVE_LONG_LONG_INT_64 1
+# define HAVE_LONG_LONG_INT_64 1
# endif
# if __SIZEOF_LONG_LONG__ > __SIZEOF_DOUBLE__
-# define MAXIMUM_ALIGNOF __SIZEOF_LONG_LONG__
+# define MAXIMUM_ALIGNOF __SIZEOF_LONG_LONG__
# else
-# define MAXIMUM_ALIGNOF __SIZEOF_DOUBLE__
+# define MAXIMUM_ALIGNOF __SIZEOF_DOUBLE__
# endif
# ifdef __SIZEOF_INT128__
# define PG_INT128_TYPE __int128
# define ALIGNOF_PG_INT128_TYPE 16
# endif
-# define PG_INT64_TYPE __INT64_TYPE__
-# define ACCEPT_TYPE_ARG3 socklen_t
-# define SIZEOF_SIZE_T __SIZEOF_SIZE_T__
+# define PG_INT64_TYPE __INT64_TYPE__
+# define ACCEPT_TYPE_ARG3 socklen_t
+# define SIZEOF_SIZE_T __SIZEOF_SIZE_T__
+# define SIZEOF_VOID_P __SIZEOF_POINTER__
#else
-# define HAVE_LONG_LONG_INT 1
-# define HAVE_LONG_LONG_INT_64 1
-# define MAXIMUM_ALIGNOF 8
-# define PG_INT64_TYPE long long int
-# define ACCEPT_TYPE_ARG3 int
+# define HAVE_LONG_LONG_INT 1
+# define HAVE_LONG_LONG_INT_64 1
+# define MAXIMUM_ALIGNOF 8
+# define PG_INT64_TYPE long long int
+# define ACCEPT_TYPE_ARG3 int
# ifdef _WIN64
-# define SIZEOF_SIZE_T 8
+# define SIZEOF_SIZE_T 8
+# define SIZEOF_VOID_P 8
# else
-# define SIZEOF_SIZE_T 4
+# define SIZEOF_SIZE_T 4
+# define SIZEOF_VOID_P 4
# endif
#endif
#define INT64_MODIFIER "ll"
-#define SIZEOF_BOOL 1
/*
* Specific for FreeBSD.
*/
#ifdef __FreeBSD__
# define HAVE_STRUCT_CMSGCRED 1
+
+/*
+ * Note that upstream also defines this macro for newer glibc versions (see
+ * buildfile for details).
+ */
+# define HAVE_EXPLICIT_BZERO 1
#endif
/*
@@ -143,7 +151,6 @@
# define HAVE_STRTOUQ 1
# define HAVE_STRUCT_SOCKADDR_SA_LEN 1
# define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
-# define HAVE_SYS_SOCKIO_H 1
# define HAVE_SYS_UCRED_H 1
# define HAVE_UNION_SEMUN 1
#else
@@ -155,39 +162,33 @@
* Specific for POSIX.
*/
#ifndef _WIN32
-# define HAVE_CRYPT 1
# define HAVE_DECL_FDATASYNC 1
# define HAVE_DECL_RTLD_GLOBAL 1
# define HAVE_DECL_RTLD_NOW 1
# define HAVE_FDATASYNC 1
# define HAVE_GETADDRINFO 1
-# define HAVE_GETIFADDRS 1
-# define HAVE_IFADDRS_H 1
# define HAVE_GETPWUID_R 1
# define HAVE_INET_ATON 1
# define HAVE_LANGINFO_H 1
# define HAVE_MKDTEMP 1
# define HAVE_NETINET_TCP_H 1
-# define HAVE_NET_IF_H 1
# define HAVE_DECL_POSIX_FADVISE 1
# define HAVE_POSIX_FADVISE 1
# define HAVE_RANDOM 1
# define HAVE_SRANDOM 1
# define HAVE_STRERROR_R 1
# define HAVE_STRINGS_H 1
-# define HAVE_SYS_IOCTL_H 1
# define HAVE_POLL 1
# define HAVE_POLL_H 1
-# define HAVE_SYS_POLL_H 1
# define HAVE_SYS_SELECT_H 1
# define HAVE_SYS_UN_H 1
# define HAVE_TERMIOS_H 1
-# define HAVE_UNIX_SOCKETS 1
# define HAVE_UNSETENV 1
-# define USE_INTEGER_DATETIMES 1
# define HAVE_DLOPEN 1
# define HAVE_PREAD 1
# define HAVE_PWRITE 1
+# define HAVE_LINK 1
+# define HAVE_STRUCT_SOCKADDR_UN 1
/*
* Specific for Windows.
@@ -197,14 +198,11 @@
# define HAVE_DECL_RTLD_GLOBAL 0
# define HAVE_DECL_RTLD_NOW 0
# define HAVE_DECL_POSIX_FADVISE 0
-# define HAVE_ISINF 1
# define HAVE_FUNCNAME__FUNCTION 1
-# define USE_REPL_SNPRINTF 1
-/*
- * This is not a mistake, the macro is defined opposite to the norm.
- */
-# define HAVE_GETTIMEOFDAY 1
+# ifdef __MINGW32__
+# define HAVE_GETTIMEOFDAY 1
+# endif
#endif
/*
@@ -224,52 +222,48 @@
# define HAVE__BUILTIN_BSWAP32 1
# define HAVE__BUILTIN_BSWAP64 1
# define HAVE__BUILTIN_OP_OVERFLOW 1
+# define HAVE_SETENV 1
+
+/*
+ * _Static_assert() was introduced in C11. However, all the latest major
+ * compilers, except for MSVC, support it for C99 as well.
+ */
+# define HAVE__STATIC_ASSERT 1
#endif
/*
* Relates to the enabled OpenSSL.
*/
-#define USE_OPENSSL 1
-#define HAVE_OPENSSL_INIT_SSL 1
-#define HAVE_ASN1_STRING_GET0_DATA 1
-#define HAVE_BIO_GET_DATA 1
-#define HAVE_BIO_METH_NEW 1
-#define HAVE_SSL_CLEAR_OPTIONS 1
-
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
-# define HAVE_CRYPTO_LOCK 1
+#define USE_OPENSSL 1
+#define HAVE_OPENSSL_INIT_SSL 1
+#define HAVE_ASN1_STRING_GET0_DATA 1
+#define HAVE_BIO_GET_DATA 1
+#define HAVE_BIO_METH_NEW 1
+
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+# define HAVE_HMAC_CTX_FREE 1
+# define HAVE_HMAC_CTX_NEW 1
+#else
+# define HAVE_CRYPTO_LOCK 1
#endif
#if OPENSSL_VERSION_NUMBER >= 0x10002000L
# define HAVE_X509_GET_SIGNATURE_NID 1
#endif
-#define USE_OPENSSL_RANDOM 1
-#undef USE_DEV_URANDOM
-#undef USE_WIN32_RANDOM
-
/*
* Common for all supported OSes/compilers.
*/
#define ENABLE_THREAD_SAFETY 1
-#define HAVE_MEMMOVE 1
-#define HAVE_RINT 1
-#define HAVE_DECL_SNPRINTF 1
-#define HAVE_DECL_VSNPRINTF 1
+#define PG_USE_STDBOOL 1
#define HAVE_DECL_STRNLEN 1
#define HAVE_DECL_STRTOLL 1
#define HAVE_DECL_STRTOULL 1
-#define HAVE_FSEEKO 1
#define HAVE_FUNCNAME__FUNC 1
#define HAVE_IPV6 1
-#define HAVE_STDINT_H 1
-#define HAVE_STDBOOL_H 1
#define HAVE_STRTOLL 1
#define HAVE_STRTOULL 1
#define HAVE_STRTOF 1
-#define HAVE_TOWLOWER 1
-#define HAVE_WCSTOMBS 1
-#define HAVE_SSL_GET_CURRENT_COMPRESSION 1
#define HAVE_STRUCT_ADDRINFO 1
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
@@ -277,18 +271,11 @@
#define XLOG_BLCKSZ 8192
#define PG_KRB_SRVNAM "postgres"
#define PG_PRINTF_ATTRIBUTE printf
-#define FLEXIBLE_ARRAY_MEMBER
#define MEMSET_LOOP_LIMIT 1024
#define DEF_PGPORT 5432
#define DEF_PGPORT_STR "5432"
/*
- * _Static_assert() was introduced in C11. However, all the latest major
- * compilers support it for C99 as well.
- */
-#define HAVE__STATIC_ASSERT 1
-
-/*
* Undefined macros.
*/
@@ -314,11 +301,6 @@
#undef HAVE_GSSAPI_H
/*
- * Integer literal LL suffix is optional for C99.
- */
-#undef HAVE_LL_CONSTANTS
-
-/*
* Windows-specific. <crtdefs.h> is included for the latest (>= 1400) VC
* unconditionally.
*/
@@ -371,3 +353,5 @@
*/
#undef HAVE___STRTOLL
#undef HAVE___STRTOULL
+
+#define pg_restrict __restrict
diff --git a/libpq/libpq/pg_config.h.win32.orig b/libpq/libpq/pg_config.h.win32.orig
deleted file mode 120000
index 9c4d1e1..0000000
--- a/libpq/libpq/pg_config.h.win32.orig
+++ /dev/null
@@ -1 +0,0 @@
-../../upstream/src/include/pg_config.h.win32 \ No newline at end of file
diff --git a/libpq/libpq/pg_config_ext.h b/libpq/libpq/pg_config_ext.h
index 22ec6d9..48d9e15 100644
--- a/libpq/libpq/pg_config_ext.h
+++ b/libpq/libpq/pg_config_ext.h
@@ -3,8 +3,8 @@
*/
/*
- * For the semantics of the following macros refer to pg_config_ext.h.in.orig,
- * pg_config_ext.h.win32.orig, and the upstream's configure.in.
+ * For the semantics of the following macros refer to pg_config_ext.h.in.orig
+ * and the upstream's configure.in.
*/
/*
diff --git a/libpq/libpq/pg_config_ext.h.win32.orig b/libpq/libpq/pg_config_ext.h.win32.orig
deleted file mode 120000
index e401e39..0000000
--- a/libpq/libpq/pg_config_ext.h.win32.orig
+++ /dev/null
@@ -1 +0,0 @@
-../../upstream/src/include/pg_config_ext.h.win32 \ No newline at end of file
diff --git a/libpq/libpq/port/explicit_bzero.c b/libpq/libpq/port/explicit_bzero.c
new file mode 120000
index 0000000..94fd116
--- /dev/null
+++ b/libpq/libpq/port/explicit_bzero.c
@@ -0,0 +1 @@
+../../../upstream/src/port/explicit_bzero.c \ No newline at end of file
diff --git a/libpq/libpq/port/gettimeofday.c b/libpq/libpq/port/gettimeofday.c
new file mode 120000
index 0000000..335ecce
--- /dev/null
+++ b/libpq/libpq/port/gettimeofday.c
@@ -0,0 +1 @@
+../../../upstream/src/port/gettimeofday.c \ No newline at end of file
diff --git a/libpq/libpq/port/win32stat.c b/libpq/libpq/port/win32stat.c
new file mode 120000
index 0000000..0041ec4
--- /dev/null
+++ b/libpq/libpq/port/win32stat.c
@@ -0,0 +1 @@
+../../../upstream/src/port/win32stat.c \ No newline at end of file