From 32a7deb2a02bc3c81d61eeb943b03ed2010eaac9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 3 Dec 2024 12:44:43 -0500 Subject: [PATCH] Define _POSIX_C_SOURCE as 200112L on Solaris. This is an attempt to suppress some compiler warnings that appeared in the wake of commit 7f798aca1: it seems that by default Solaris/illumos declares shmdt() to take "char *" not "void *". We'd like the system headers to provide modern POSIX APIs, and POSIX 2001 seems to be as modern as is available there. illumos' standards(7) man page suggests that we might also need to define __EXTENSIONS__, but let's see what happens with just this. Discussion: https://postgr.es/m/1654508.1733162761@sss.pgh.pa.us --- configure | 6 +++--- configure.ac | 6 +++--- meson.build | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/configure b/configure index ff59f1422d8..7029e036269 100755 --- a/configure +++ b/configure @@ -7590,10 +7590,10 @@ $as_echo "#define PROFILE_PID_DIR 1" >>confdefs.h fi fi -# On Solaris, we need this #define to get POSIX-conforming versions -# of many interfaces (sigwait, getpwuid_r, ...). +# On Solaris, we need these #defines to get POSIX-conforming versions +# of many interfaces (sigwait, getpwuid_r, shmdt, ...). if test "$PORTNAME" = "solaris"; then - CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" + CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS" fi # We already have this in Makefile.win32, but configure needs it too diff --git a/configure.ac b/configure.ac index 21817009642..afc229e729b 100644 --- a/configure.ac +++ b/configure.ac @@ -693,10 +693,10 @@ if test "$enable_profiling" = yes && test "$ac_cv_prog_cc_g" = yes; then fi fi -# On Solaris, we need this #define to get POSIX-conforming versions -# of many interfaces (sigwait, getpwuid_r, ...). +# On Solaris, we need these #defines to get POSIX-conforming versions +# of many interfaces (sigwait, getpwuid_r, shmdt, ...). if test "$PORTNAME" = "solaris"; then - CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" + CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L -D_POSIX_PTHREAD_SEMANTICS" fi # We already have this in Makefile.win32, but configure needs it too diff --git a/meson.build b/meson.build index 451c3f6d851..ec5cd9259df 100644 --- a/meson.build +++ b/meson.build @@ -261,7 +261,9 @@ elif host_system == 'openbsd' elif host_system == 'sunos' portname = 'solaris' export_fmt = '-Wl,-M@0@' - cppflags += '-D_POSIX_PTHREAD_SEMANTICS' + # We need these #defines to get POSIX-conforming versions + # of many interfaces (sigwait, getpwuid_r, shmdt, ...). + cppflags += [ '-D_POSIX_C_SOURCE=200112L', '-D_POSIX_PTHREAD_SEMANTICS' ] elif host_system == 'windows' portname = 'win32'