Please find the updated patch. I have added this "+Olibmerrno" compile flag
check in configure/configure.in file.
OS
----
HP-UX B.11.31 U ia64
without patch
---------------
postgres=# select acos(2);
acos
------
NaN
(1 row)
with patch
-----------
postgres=# select acos(2);
ERROR: input is out of range
On Tue, May 24, 2011 at 11:13 PM, Tom Lane <[email protected]> wrote:
> Heikki Linnakangas <[email protected]> writes:
> > So the default is indeed non-standard. But I wonder if we should use -Aa
> > instead?
>
> Probably not; at least on older HPUX versions, -Aa turns off access to
> assorted stuff that we do want, eg "long long". "man cc" on my box
> saith
>
> -Amode Specify the compilation standard to be used by the
> compiler. mode can be one of the following letters:
>
> c (Default) Compile in a mode compatible with
> HP-UX releases prior to 7.0. (See The C
> Programming Language, First Edition by
> Kernighan and Ritchie). This option also
> defines the symbol _HPUX_SOURCE and allows the
> user to access macros and typedefs provided by
> the HPUX Operating System. The default
> compilation mode may change in future releases.
>
> a Compile under ANSI mode (ANSI programming
> language C standard ISO 9899:1990). When
> compiling under ANSI mode, the header files
> would define only those names (macros and
> typedefs) specified by the Standard. To access
> macros and typedefs that are not defined by the
> ANSI Standard but are provided by the HPUX
> Operating System, define the symbol
> _HPUX_SOURCE; or use the extension option
> described below.
>
> e Extended ANSI mode. Same as -Aa -D_HPUX_SOURCE
> +e. This would define the names (macros and
> typedefs) provided by the HPUX Operating System
> and, in addition, allow the following
> extensions: $ characters in identifier names,
> sized enums, sized bit-fields, and 64-bit
> integral type long long. Additional extensions
> may be added to this option in the future.
>
> The +e option is elsewhere stated to mean
>
> +e Enables HP value-added features while compiling
> in ANSI C mode, -Aa. This option is ignored
> with -Ac because these features are already
> provided. Features enabled:
>
> o Long pointers
> o Integral type specifiers can appear in
> enum declarations.
> o The $ character can appear in
> identifier names.
> o Missing parameters on intrinsic calls
>
> which isn't 100% consistent with what it says under -Ae, so maybe some
> additional experimentation is called for. But anyway, autoconf appears
> to think that -Ae is preferable to the combination -Aa -D_HPUX_SOURCE
> (that choice is coming from autoconf not our own code); so I'm not
> optimistic that we can get more-standard behavior by overriding that.
>
> regards, tom lane
>
--
Ibrar Ahmed
diff --git a/configure b/configure
index 3b23c46..d448534 100755
--- a/configure
+++ b/configure
@@ -4468,6 +4468,66 @@ if test x"$pgac_cv_prog_cc_cflags__qnoansialias" = x"yes"; then
CFLAGS="$CFLAGS -qnoansialias"
fi
+elif test "$PORTNAME" = "hpux"; then
+ # HP-UX libm functions on 'Integrity server' do not set errno by default,
+ # for errno setting, compile with the +Olibmerrno option.
+ { $as_echo "$as_me:$LINENO: checking whether $CC supports +Olibmerrno" >&5
+$as_echo_n "checking whether $CC supports +Olibmerrno... " >&6; }
+if test "${pgac_cv_prog_cc_cflags_pOlibmerrno+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ pgac_save_CFLAGS=$CFLAGS
+CFLAGS="$pgac_save_CFLAGS +Olibmerrno"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ pgac_cv_prog_cc_cflags_pOlibmerrno=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ pgac_cv_prog_cc_cflags_pOlibmerrno=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS="$pgac_save_CFLAGS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $pgac_cv_prog_cc_cflags_pOlibmerrno" >&5
+$as_echo "$pgac_cv_prog_cc_cflags_pOlibmerrno" >&6; }
+if test x"$pgac_cv_prog_cc_cflags_pOlibmerrno" = x"yes"; then
+ CFLAGS="$CFLAGS +Olibmerrno"
+fi
+
fi
# supply -g if --enable-debug
diff --git a/configure.in b/configure.in
index 76c1a88..0444f7f 100644
--- a/configure.in
+++ b/configure.in
@@ -445,6 +445,10 @@ elif test "$ICC" = yes; then
elif test "$PORTNAME" = "aix"; then
# AIX's xlc has to have strict aliasing turned off too
PGAC_PROG_CC_CFLAGS_OPT([-qnoansialias])
+elif test "$PORTNAME" = "hpux"; then
+ # HP-UX libm functions on 'Integrity server' do not set errno by default,
+ # for errno setting, compile with the +Olibmerrno option.
+ PGAC_PROG_CC_CFLAGS_OPT([+Olibmerrno])
fi
# supply -g if --enable-debug
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers