This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Process record AMD64 patches got soem FAIL with testsuite
- From: Hui Zhu <teawater at gmail dot com>
- To: Michael Snyder <msnyder at vmware dot com>
- Cc: gdb at sourceware dot org
- Date: Tue, 7 Jul 2009 14:05:47 +0800
- Subject: Process record AMD64 patches got soem FAIL with testsuite
Hi Michael,
I test the AMD64 patches (You can get them in
http://sourceware.org/ml/gdb-patches/2009-07/msg00171.html
http://sourceware.org/ml/gdb-patches/2009-07/msg00172.html
http://sourceware.org/ml/gdb-patches/2009-07/msg00173.html) with the
reverse testsuite and got some FAIL.
make check RUNTESTFLAGS="finish-reverse.exp --target_board=precord"
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from long_long_func
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from long_func
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from int_func
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from short_func
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from char_func
FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line, reverse
finish from void_func
Breakpoint 7, long_long_func () at
../src/gdb/testsuite/gdb.reverse/finish-reverse.c:69
69 return long_long_returnval; /* LONG LONG FUNC */
(gdb) PASS: gdb.reverse/finish-reverse.exp: continue to breakpoint:
long_long_func
finish
Run back to call of #0 long_long_func () at
../src/gdb/testsuite/gdb.reverse/finish-reverse.c:69
0x00000000004005eb in main (argc=1, argv=0x7fffffffe148) at
../src/gdb/testsuite/gdb.reverse/finish-reverse.c:103
103 long_long_resultval = long_long_func (); /* long_checkpoint */
(gdb) info line
Line 103 of "../src/gdb/testsuite/gdb.reverse/finish-reverse.c" starts
at address 0x4005e6 <main+112> and ends at 0x4005f4 <main+126>.
(gdb) info reg pc
pc: 0x4005eb
(gdb) print 0x4005e6 == 0x4005eb
$6 = 0
(gdb) FAIL: gdb.reverse/finish-reverse.exp: test_start_of_line,
reverse finish from long_long_func
continue
Continuing.
/home/teawater/gdb/rec/bt/../src/gdb/testsuite/gdb.reverse/finish-reverse.c:103
4005e6: b8 00 00 00 00 mov $0x0,%eax
4005eb: e8 4f ff ff ff callq 40053f <long_long_func>
4005f0: 48 89 45 e0 mov %rax,-0x20(%rbp)
I think this issue is about reverse-finish command have something
wrong in AMD64. Maybe we need fix it.
make check RUNTESTFLAGS="step-reverse.exp --target_board=precord"
FAIL: gdb.reverse/step-reverse.exp: stepi into function call
FAIL: gdb.reverse/step-reverse.exp: stepi back from function call (too far)
FAIL: gdb.reverse/step-reverse.exp: reverse stepi thru function return (too far)
(gdb) PASS: gdb.reverse/step-reverse.exp: simple stepi
stepi
0x000000000040061f 62 callee(); /* STEPI TEST */
(gdb) FAIL: gdb.reverse/step-reverse.exp: stepi into function call
stepi
callee () at ../src/gdb/testsuite/gdb.reverse/step-reverse.c:25
25 int callee() { /* ENTER CALLEE */
(gdb) FAIL: gdb.reverse/step-reverse.exp: stepi back from function
call (too far)
set exec-dir reverse
(gdb) PASS: gdb.reverse/step-reverse.exp: set reverse execution
stepi
0x000000000040061f in main () at
../src/gdb/testsuite/gdb.reverse/step-reverse.c:62
62 callee(); /* STEPI TEST */
(gdb) FAIL: gdb.reverse/step-reverse.exp: reverse stepi thru function
return (too far)
stepi
62 callee(); /* STEPI TEST */
/home/teawater/gdb/rec/bt/../src/gdb/testsuite/gdb.reverse/step-reverse.c:61
40060b: 8b 55 cc mov -0x34(%rbp),%edx
40060e: 8b 45 d0 mov -0x30(%rbp),%eax
400611: 89 d1 mov %edx,%ecx
400613: 29 c1 sub %eax,%ecx
400615: 89 c8 mov %ecx,%eax
400617: 89 45 d4 mov %eax,-0x2c(%rbp)
/home/teawater/gdb/rec/bt/../src/gdb/testsuite/gdb.reverse/step-reverse.c:62
40061a: b8 00 00 00 00 mov $0x0,%eax
40061f: e8 68 ff ff ff callq 40058c <callee>
Looks like testsuite have something wrong in AMD64.
make check RUNTESTFLAGS="solib-reverse.exp --target_board=precord"
FAIL: gdb.reverse/solib-reverse.exp: reverse-step third sleep
FAIL: gdb.reverse/solib-reverse.exp: reverse-step second sleep
FAIL: gdb.reverse/solib-reverse.exp: reverse-step first sleep, dynsym resolve
FAIL: gdb.reverse/solib-reverse.exp: reverse-step third printf
FAIL: gdb.reverse/solib-reverse.exp: reverse-step second printf
FAIL: gdb.reverse/solib-reverse.exp: reverse-step first printf, dynsym resolve
FAIL: gdb.reverse/solib-reverse.exp: reverse-step generic
FAIL: gdb.reverse/solib-reverse.exp: forward to end part one
FAIL: gdb.reverse/solib-reverse.exp: reverse-next third sleep
FAIL: gdb.reverse/solib-reverse.exp: reverse-next second sleep
FAIL: gdb.reverse/solib-reverse.exp: reverse-next first sleep, dynsym resolve
FAIL: gdb.reverse/solib-reverse.exp: reverse-next third printf
FAIL: gdb.reverse/solib-reverse.exp: reverse-next second printf
FAIL: gdb.reverse/solib-reverse.exp: reverse-next first printf, dynsym resolve
FAIL: gdb.reverse/solib-reverse.exp: reverse-next generic
FAIL: gdb.reverse/solib-reverse.exp: reverse-step into solib function one
FAIL: gdb.reverse/solib-reverse.exp: reverse-step within solib function one
FAIL: gdb.reverse/solib-reverse.exp: reverse-step back to main one
FAIL: gdb.reverse/solib-reverse.exp: reverse-step into solib function two
FAIL: gdb.reverse/solib-reverse.exp: reverse-step within solib function two
FAIL: gdb.reverse/solib-reverse.exp: reverse-step back to main two
FAIL: gdb.reverse/solib-reverse.exp: run until end part two
FAIL: gdb.reverse/solib-reverse.exp: reverse-next over solib function one
FAIL: gdb.reverse/solib-reverse.exp: reverse-next over solib function two
(gdb) PASS: gdb.reverse/solib-reverse.exp: run until end part one
reverse-step
38 sleep (0); /* sleep two */
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step third sleep
reverse-step
Cannot access memory at address 0x8
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step second sleep
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step first sleep,
dynsym resolve
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step third printf
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step second printf
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step first printf,
dynsym resolve
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step generic
until 41
Cannot access memory at address 0x8
(gdb) FAIL: gdb.reverse/solib-reverse.exp: forward to end part one
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next third sleep
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next second sleep
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next first sleep,
dynsym resolve
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next third printf
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next second printf
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next first printf,
dynsym resolve
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next generic
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step into solib function one
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step within solib
function one
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step back to main one
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step into solib function two
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step within solib
function two
reverse-step
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-step back to main two
until 33
Cannot access memory at address 0x8
(gdb) FAIL: gdb.reverse/solib-reverse.exp: run until end part two
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next over solib function one
reverse-next
Cannot find bounds of current function
(gdb) FAIL: gdb.reverse/solib-reverse.exp: reverse-next over solib function two
testcase ../src/gdb/testsuite/gdb.reverse/solib-reverse.exp completed
in 1 seconds
All of this issue is because "Cannot access memory at address 0x8".
This memory error is from:
#0 memory_error (status=5, memaddr=8) at ../../src/gdb/corefile.c:217
#1 0x000000000045a3e6 in read_memory (memaddr=8, myaddr=0x18948d0 "",
len=8) at ../../src/gdb/corefile.c:237
#2 0x0000000000507d85 in value_fetch_lazy (val=0x197ecc0) at
../../src/gdb/valops.c:641
#3 0x00000000004fc476 in value_contents_all (value=0x197ecc0) at
../../src/gdb/value.c:414
#4 0x000000000046441c in frame_register_unwind (frame=0x165e770,
regnum=16, optimizedp=0x7fffd6b3e0fc, lvalp=0x7fffd6b3e0f4,
addrp=0x7fffd6b3e0e8, realnump=0x7fffd6b3e0f8,
bufferp=0x7fffd6b3e120 "") at ../../src/gdb/frame.c:695
#5 0x00000000004645fc in frame_unwind_register (frame=0x165e770,
regnum=16, buf=0x7fffd6b3e120 "") at ../../src/gdb/frame.c:731
#6 0x000000000046eca5 in i386_unwind_pc (gdbarch=0x1719470,
next_frame=0x165e770) at ../../src/gdb/i386-tdep.c:1327
#7 0x0000000000555fac in gdbarch_unwind_pc (gdbarch=0x1719470,
next_frame=0x165e770) at ../../src/gdb/gdbarch.c:2412
#8 0x0000000000464025 in frame_unwind_pc (this_frame=0x165e770) at
../../src/gdb/frame.c:566
#9 0x0000000000466256 in get_frame_pc (frame=0x165edc0) at
../../src/gdb/frame.c:1680
#10 0x000000000046626d in get_frame_address_in_block
(this_frame=0x165edc0) at ../../src/gdb/frame.c:1689
#11 0x0000000000467fe2 in inline_frame_sniffer (self=0x72c3e0,
this_frame=0x165edc0, this_cache=0x165edc8)
at ../../src/gdb/inline-frame.c:193
#12 0x00000000004672fa in frame_unwind_find_by_frame
(this_frame=0x165edc0, this_cache=0x165edc8) at
../../src/gdb/frame-unwind.c:102
#13 0x000000000046666e in get_frame_type (frame=0x165edc0) at
../../src/gdb/frame.c:1864
#14 0x000000000046362e in skip_inlined_frames (frame=0x165edc0) at
../../src/gdb/frame.c:269
#15 0x0000000000463825 in frame_unwind_caller_id
(next_frame=0x165e770) at ../../src/gdb/frame.c:325
#16 0x000000000053b33a in handle_inferior_event (ecs=0x7fffd6b3e610)
at ../../src/gdb/infrun.c:3777
I think this issue is about frame_unwind_caller_id and AMD64.
Thanks,
Hui