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