Re: "errno" not set in case of "libm" functions (HPUX)

Ibrar Ahmed <ibrar.ahmad@gmail.com>

From: Ibrar Ahmed <ibrar.ahmad@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, pgsql-hackers@postgresql.org
Date: 2011-05-25T16:37:20Z
Lists: pgsql-hackers

Attachments

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 <tgl@sss.pgh.pa.us> wrote:

> Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> 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