Question: different GDB behavors on uclibc and eglibc
Sheng Yong
shengyong1 at huawei.com
Thu May 28 08:54:55 UTC 2015
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
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc
>
>
More information about the uClibc
mailing list