Hi,

Sorry for my mistake that GDB tested in uclibc with UCLIBC_HAS_OBSTACK disabled 
was
a static linked one based on eglibc. Hence, this problem may have no 
relationship
with OBSTACK :(

But we test it on the latest uclibc, and find that GDB still behaves different 
with
eglibc. We still get the value `-5.9822653797615731e-120' but not 
`-5.9822653797615723e-120'
when doing `p/f'.

thanks,
Sheng

On 5/28/2015 11:48 AM, Sheng Yong wrote:
> Hi, folks
> 
> My test environment is GCC (4.7.1), GDB (7.6) and uclibc (0.9.33.2 commit 
> ff22cca4).
> 
> The testcase is:
> 
>       $ cat long_long_simple.c
>       #include <stdio.h>
> 
>       int main()
>       {
>               long long val = 01234567123456701234567LL; /* 21+ octal digits 
> */
>               printf("%.17g\n", val);
>               return 0;
>       }
> 
> Debug the program with UCLIBC_HAS_OBSTACK *disabled*:
> 
>       sh-4.2# ./long_long_simple
>       -5.9822653797615731e-120
> 
>       sh-4.2# gdb ./long_long_simple
>       GNU gdb (GDB) 7.6
>       [...]
>       (gdb) b 6
>       Breakpoint 1 at 0x84f0: file long_long_simple.c, line 6.
>       (gdb) r
>       Starting program: /tmp/long_long_simple
> 
>       Breakpoint 1, main () at long_long_simple.c:6
>       6       long_long_simple.c: No such file or directory.
>       (gdb) p val
>       $1 = -6399925985474168457
>       (gdb) p/o val
>       $2 = 01234567123456701234567
>       (gdb) p/f val
>       $3 = -5.9822653797615723e-120
> 
> Debug the program with UCLIBC_HAS_OBSTACK *enabled*:
> 
>       sh-4.2# ./long_long_simple
>       -5.9822653797615731e-120
> 
>       sh-4.2# gdb long_long_simple
>       GNU gdb (GDB) 7.6
>       [...]
>       (gdb) b 6
>       Breakpoint 1 at 0x84f0: file long_long_simple.c, line 6.
>       (gdb) r
>       Starting program: /tmp/long_long_simple
> 
>       Breakpoint 1, main () at long_long_simple.c:6
>       6       long_long_simple.c: No such file or directory.
>       (gdb) p val
>       $1 = -6399925985474168457
>       (gdb) p/o val
>       $2 = 01234567123456701234567
>       (gdb) p/f val
>       $3 = -5.9822653797615731e-120
> 
>>From the value of `$2', we could see that GDB get the correct value of `val'.
> But if we format the value as `p/f', the two values of `$3' are not the same:
> $3 = -5.98226537976157*23e*-120    UCLIBC_HAS_OBSTACK disabled, this is the 
> expected value
> $3 = -5.98226537976157*31e*-120    UCLIBC_HAS_OBSTACK enabled, this value is 
> not correct
> 
> I have no idea if the problem has anything to do with 
> http://lists.uclibc.org/pipermail/uclibc/2015-May/048932.html
> Did anyone ever hit this case? Any suggestion is appreciated.
> 
> Thanks,
> Sheng
> 
> _______________________________________________
> uClibc mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/uclibc
> 
> 

_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to