bug-gnulib
[Top][All Lists]
Advanced

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

Re: m4-1.4.11: assert failure in two self tests on NetBSD


From: Thomas Klausner
Subject: Re: m4-1.4.11: assert failure in two self tests on NetBSD
Date: Sun, 13 Apr 2008 00:10:46 +0200

Hi Bruno!

Thanks for the quick reply!

On Sat, Apr 12, 2008 at 07:33:14PM +0200, Bruno Haible wrote:
> Hi,
> 
> Thomas Klausner reported:
> > | m4-1.4.11 fails two selftests on NetBSD-4.99.48/amd64.
> > | The first one is in test-frexpl:
> > |
> > | # gdb test-frexpl test-frexpl.core
> > | GNU gdb 6.5
> > | Copyright (C) 2006 Free Software Foundation, Inc.
> > ...
> > | Core was generated by `test-frexpl'.
> > | Program terminated with signal 6, Aborted.
> > | #0  0x00007f7ffd93269a in kill () from /usr/lib/libc.so.12
> > | (gdb) bt
> > | #0  0x00007f7ffd93269a in kill () from /usr/lib/libc.so.12
> > | #1  0x00007f7ffd9d7a99 in abort () from /usr/lib/libc.so.12
> > | #2  0x00000000004013ae in main () at test-frexpl.c:166
> > | (gdb) fr 2
> > | #2  0x00000000004013ae in main () at test-frexpl.c:166
> > | 166           ASSERT (mantissa == 0.505L);
> > | (gdb) p mantissa
> > | $1 = 0.505
> 
> Can you provide two more bits of information:
>   - In gdb of this test, compiled with CFLAGS=-g (no optimization):
>     print mantissa
>     print i
>     print x
>     print *(void*(*)[4])&mantissa
>     print *(void*(*)[4])&x

(gdb) print mantissa
$1 = 0.505
(gdb) print i
$2 = 1
(gdb) print x
$3 = 1.01
(gdb) print *(void*(*)[4])&mantissa
$4 = {0x8147ae147ae14800, 0x7f7ffdb13ffe, 0x0, 0x7f7ffdb10040}
(gdb) print *(void*(*)[4])&x
$5 = {0x8147ae147ae147ae, 0x3fff, 0xc000000000000000, 0xffff}

>   - What is the expansion of BEGIN_LONG_DOUBLE_ROUNDING resulting from
>     fpucw.h? You can see this by looking at the output of
>     "gcc ... -E -dM test-frexpl.c".

cc -std=gnu99  -I. -I../lib  -I. -I.  -I.. -I./..  -I../lib -I./../lib
-g -O0 -MT test-frexpl.o -MD -MP -MF .deps/test-frexpl.Tpo -E -dM
test-frexpl.c

gives:

#define BEGIN_LONG_DOUBLE_ROUNDING()

> Does the failure disappear if you change
>     the #if test in fpucw.h from __i386__ to __x86_64__ and rebuild?

Yes,
#if defined __x86_64__ && defined __GNUC__
makes the failure go away.

Cheers,
 Thomas




reply via email to

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