bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: strtod [was: M4 1.4.14 on AIX 7.1BETA]


From: Rainer Tammer
Subject: Re: strtod [was: M4 1.4.14 on AIX 7.1BETA]
Date: Thu, 29 Jul 2010 16:33:03 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.3) Gecko/20070326 Thunderbird/2.0.0.0 Mnenhy/0.7.5.0

 Hello Eric,

On 29.07.2010 15:17, Eric Blake wrote:
> ... cut for clarity ...

>> /* Define to 1 if strtod is declared even after undefining macros. */
>> #define HAVE_RAW_DECL_STRTOD 1
> That's not quite what I asked.  But thanks for the attachments: looking
> at config.log reveals the answers to my questions:
>
Yes,
this was only an addition to the attached logs.
> configure:24593: checking for working strtod
> configure:24634: cc -qlanglvl=extc89 -qlanglvl=extc99 -o conftest -g
> conftest.c  >&5
> configure:24634: $? = 0
> configure:24634: ./conftest
> configure:24634: $? = 0
> configure:24644: result: yes
> configure:24715: checking whether strtod obeys C99
> configure:24791: cc -qlanglvl=extc89 -qlanglvl=extc99 -o conftest -g
> conftest.c  >&5
> configure:24791: $? = 0
> configure:24791: ./conftest
> configure:24791: $? = 1
> configure: program exited with status 1
> ...
> REPLACE_STRTOD='1'
>
> Which means gnulib _did_ replace strtod on your system.
>
OK,
so the problem is in the replacement function.
If I compile the failing block against the AIX system libraries the
problem vanishes in thin air.
>>>   Which line is it failing on?
>> FAIL: test-strtod (exit: 134)
>> =============================
>>
>> test-strtod.c:234: assertion failed
> Line 234, at the time that m4-1.4.14 was created, was:
>
>     const char input[] = "1e1";
>     char *ptr;
>     double result;
>     errno = 0;
>     result = strtod (input, &ptr);
>     ASSERT (result == 10.0);
>
> Weird - I've never seen that line fail before.  If you have a debugger,
> can you put a breakpoint on that line and print the actual value of
> result? 
I can do that.

This is from dbx:

# dbx test-strtod
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in raise at 0xd0120f40
0xd0120f40 (raise+0x60) 80410014         lwz   r2,0x14(r1)
(dbx) where
raise(??) at 0xd0120f40
abort() at 0xd016d9e4
unnamed block in main(), line 234 in "test-strtod.c"
main(), line 234 in "test-strtod.c"

(dbx) print result
10.000000000000002

>  Maybe your platform has a pow() bug, since we already know it
> is using the replacement strtod which used pow()?  But in the meantime,
> upstream gnulib has revamped the strtod module to not require pow().
That's possible. 
> let's diagnose the current state of gnulib on AIX, rather than doing
> post-mortem on old code.  It's time for me to release 1.4.15 anyways,
> since 1.4.14 doesn't build out-of-the-box on newer glibc released after
> the m4 release.
>
I am happy to test the new version.

Bye
  Rainer




reply via email to

[Prev in Thread] Current Thread [Next in Thread]