Re: Improve end check on rs6000 prologue analyzer

Aman Wardak
2007-02-15T20:20:17Z

FYI. Below are my results before and after applying this patch on top of
gdb-6.6.50.20061206 (+some local patches).

--- log.orig.full/gdb.sum 2007-02-15 00:32:04.000000000 +0000
+++ log.new.full/gdb.sum 2007-02-15 01:42:08.000000000 +0000
@@ -1,4 +1,4 @@
-Test Run By root on Thu Jan 1 19:57:48 1970
+Test Run By root on Thu Jan 1 21:07:00 1970
Native configuration is powerpc-unknown-linux-gnu

=== gdb tests ===
@@ -9,7 +9,7 @@
Running target unix
Running /testsuite/gdb/testsuite/gdb.arch/alpha-step.exp ...
Running /testsuite/gdb/testsuite/gdb.arch/altivec-abi.exp ...
-gdb compile failed, vmx2337.c:1: error: AltiVec and E500 instructions
cannot coexist
+gdb compile failed, vmx9608.c:1: error: AltiVec and E500 instructions
cannot coexist
Running /testsuite/gdb/testsuite/gdb.arch/altivec-regs.exp ...
Running /testsuite/gdb/testsuite/gdb.arch/e500-abi.exp ...
Running /testsuite/gdb/testsuite/gdb.arch/e500-prologue.exp ...
@@ -488,7 +488,7 @@
PASS: gdb.base/break.exp: run until file:function(3) breakpoint
PASS: gdb.base/break.exp: run until file:function(2) breakpoint
PASS: gdb.base/break.exp: run until file:function(1) breakpoint
-FAIL: gdb.base/break.exp: run until quoted breakpoint
+PASS: gdb.base/break.exp: run until quoted breakpoint
PASS: gdb.base/break.exp: run until file:linenum breakpoint
PASS: gdb.base/break.exp: breakpoint offset +1
PASS: gdb.base/break.exp: step onto breakpoint
@@ -1192,7 +1192,8 @@
PASS: gdb.base/checkpoint.exp: set checkpoint breakpoint
FAIL: gdb.base/checkpoint.exp: break2 with many checkpoints (timeout)
FAIL: gdb.base/checkpoint.exp: info checkpoints with at least 600
checkpoints
-PASS: gdb.base/checkpoint.exp: kill all one
+ERROR: internal buffer is full.
+UNRESOLVED: gdb.base/checkpoint.exp: kill all one
Running /testsuite/gdb/testsuite/gdb.base/chng-syms.exp ...
PASS: gdb.base/chng-syms.exp: setting conditional breakpoint on function
PASS: gdb.base/chng-syms.exp: continue until exit at breakpoint first
time through
@@ -1434,8 +1435,8 @@
PASS: gdb.base/condbreak.exp: breakpoint info
PASS: gdb.base/condbreak.exp: rerun to main
PASS: gdb.base/condbreak.exp: run until breakpoint set at a line number
-XFAIL: gdb.base/condbreak.exp: run until breakpoint at marker1
-FAIL: gdb.base/condbreak.exp: run until breakpoint at marker2
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker1
+PASS: gdb.base/condbreak.exp: run until breakpoint at marker2
Running /testsuite/gdb/testsuite/gdb.base/consecutive.exp ...
PASS: gdb.base/consecutive.exp: continue to breakpoint in foo
PASS: gdb.base/consecutive.exp: get breakpoint address for foo
@@ -2227,12 +2228,12 @@
PASS: gdb.base/ena-dis-br.exp: break marker1
PASS: gdb.base/ena-dis-br.exp: enable break marker1
PASS: gdb.base/ena-dis-br.exp: info break marker1
-XFAIL: gdb.base/ena-dis-br.exp: continue to break marker1
+PASS: gdb.base/ena-dis-br.exp: continue to break marker1
PASS: gdb.base/ena-dis-br.exp: delete break marker1
PASS: gdb.base/ena-dis-br.exp: break marker2
PASS: gdb.base/ena-dis-br.exp: enable once break marker2
PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
-XFAIL: gdb.base/ena-dis-br.exp: continue to auto-disabled break marker2
+PASS: gdb.base/ena-dis-br.exp: continue to auto-disabled break marker2
PASS: gdb.base/ena-dis-br.exp: info auto-disabled break marker2
PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop
PASS: gdb.base/ena-dis-br.exp: rerun to main
@@ -2254,7 +2255,7 @@
PASS: gdb.base/ena-dis-br.exp: info ignored break marker1
PASS: gdb.base/ena-dis-br.exp: continue until exit at no stop at ignored
break marker1
PASS: gdb.base/ena-dis-br.exp: rerun to main
-XFAIL: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time
+PASS: gdb.base/ena-dis-br.exp: continue to break marker1, 2nd time
PASS: gdb.base/ena-dis-br.exp: break marker1
PASS: gdb.base/ena-dis-br.exp: ignore break marker1
PASS: gdb.base/ena-dis-br.exp: enable del break marker1
@@ -2811,14 +2812,14 @@
PASS: gdb.base/funcargs.exp: print *fp
PASS: gdb.base/funcargs.exp: print *dp
PASS: gdb.base/funcargs.exp: run to call4a
-FAIL: gdb.base/funcargs.exp: print *stp
+PASS: gdb.base/funcargs.exp: print *stp
PASS: gdb.base/funcargs.exp: continue to call4b
PASS: gdb.base/funcargs.exp: print *unp (sizeof long == sizeof int)
PASS: gdb.base/funcargs.exp: locate actual args, structs/unions passed
by reference
-FAIL: gdb.base/funcargs.exp: run to call5a
-FAIL: gdb.base/funcargs.exp: print st
-FAIL: gdb.base/funcargs.exp: continue to call5b (sizeof long == sizeof int)
-FAIL: gdb.base/funcargs.exp: print un (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: run to call5a
+PASS: gdb.base/funcargs.exp: print st
+PASS: gdb.base/funcargs.exp: continue to call5b (sizeof long == sizeof int)
+PASS: gdb.base/funcargs.exp: print un (sizeof long == sizeof int)
PASS: gdb.base/funcargs.exp: run to call6a
PASS: gdb.base/funcargs.exp: backtrace from call6a
PASS: gdb.base/funcargs.exp: continue to call6b
@@ -5242,7 +5243,7 @@
PASS: gdb.base/sepdebug.exp: run until file:function(3) breakpoint
PASS: gdb.base/sepdebug.exp: run until file:function(2) breakpoint
PASS: gdb.base/sepdebug.exp: run until file:function(1) breakpoint
-FAIL: gdb.base/sepdebug.exp: run until quoted breakpoint
+PASS: gdb.base/sepdebug.exp: run until quoted breakpoint
PASS: gdb.base/sepdebug.exp: run until file:linenum breakpoint
PASS: gdb.base/sepdebug.exp: breakpoint offset +1
PASS: gdb.base/sepdebug.exp: step onto breakpoint
@@ -5299,7 +5300,7 @@
PASS: gdb.base/sepdebug.exp: breakpoint function, optimized file
PASS: gdb.base/sepdebug.exp: breakpoint small function, optimized file
PASS: gdb.base/sepdebug.exp: run until function breakpoint, optimized file
-FAIL: gdb.base/sepdebug.exp: run until breakpoint set at small
function, optimized file
+PASS: gdb.base/sepdebug.exp: run until breakpoint set at small
function, optimized file
Running /testsuite/gdb/testsuite/gdb.base/sepsymtab.exp ...
PASS: gdb.base/sepsymtab.exp: info sym main
Running /testsuite/gdb/testsuite/gdb.base/setshow.exp ...
@@ -8838,7 +8839,7 @@
PASS: gdb.cp/m-data.exp: template object, base enum
PASS: gdb.cp/m-data.exp: template object, derived enum
PASS: gdb.cp/m-data.exp: continue to breakpoint: continue to shadow
breakpoint
-FAIL: gdb.cp/m-data.exp: shadowing member
+PASS: gdb.cp/m-data.exp: shadowing member
PASS: gdb.cp/m-data.exp: shadowed global variable
Running /testsuite/gdb/testsuite/gdb.cp/m-static.exp ...
PASS: gdb.cp/m-static.exp: continue to breakpoint: end of constructors
@@ -9063,17 +9064,17 @@
PASS: gdb.cp/ovldbreak.exp: set bp on overload1arg all
PASS: gdb.cp/ovldbreak.exp: breakpoint info (after setting on all)
PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : (void|)
-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : char (PRMS:
gdb/1025)
-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed char
(PRMS: gdb/1025)
-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned char
(PRMS: gdb/1025)
-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : short (PRMS:
gdb/1025)-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded :
unsigned short (PRMS: gdb/1025)
-FAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : int
-FAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded :
(unsigned|unsigned int)-FAIL: gdb.cp/ovldbreak.exp: continue to bp
overloaded : long
-FAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned long
-FAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : float
-KFAIL: gdb.cp/ovldbreak.exp: continue to bp overloaded : double (PRMS:
gdb/1025)
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : signed char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned char
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : short
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned short
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : int
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded :
(unsigned|unsigned int)+PASS: gdb.cp/ovldbreak.exp: continue to bp
overloaded : long
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : unsigned long
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : float
+PASS: gdb.cp/ovldbreak.exp: continue to bp overloaded : double
PASS: gdb.cp/ovldbreak.exp: continue until exit at finish program
Running /testsuite/gdb/testsuite/gdb.cp/pr-1023.exp ...
PASS: gdb.cp/pr-1023.exp: break myClass::performBlocking
@@ -11032,10 +11033,10 @@
PASS: gdb.threads/schedlock.exp: listed args (2)
PASS: gdb.threads/schedlock.exp: thread 0 ran
PASS: gdb.threads/schedlock.exp: thread 1 ran
-FAIL: gdb.threads/schedlock.exp: thread 2 ran (didn't run)
+PASS: gdb.threads/schedlock.exp: thread 2 ran
PASS: gdb.threads/schedlock.exp: thread 3 ran
PASS: gdb.threads/schedlock.exp: thread 4 ran
-FAIL: gdb.threads/schedlock.exp: thread 5 ran (didn't run)
+PASS: gdb.threads/schedlock.exp: thread 5 ran
PASS: gdb.threads/schedlock.exp: find current thread (1)
PASS: gdb.threads/schedlock.exp: set scheduler-locking off
PASS: gdb.threads/schedlock.exp: step to increment (unlocked 0)
@@ -11063,8 +11064,8 @@
PASS: gdb.threads/schedlock.exp: other thread 0 didn't run
PASS: gdb.threads/schedlock.exp: other thread 1 didn't run
PASS: gdb.threads/schedlock.exp: other thread 2 didn't run
+PASS: gdb.threads/schedlock.exp: other thread 3 didn't run
PASS: gdb.threads/schedlock.exp: current thread ran
-PASS: gdb.threads/schedlock.exp: other thread 4 didn't run
PASS: gdb.threads/schedlock.exp: other thread 5 didn't run
PASS: gdb.threads/schedlock.exp: step to increment (locked 0)
PASS: gdb.threads/schedlock.exp: step to increment (locked 1)
@@ -11082,8 +11083,8 @@
PASS: gdb.threads/schedlock.exp: other thread 0 didn't run (stepping)
PASS: gdb.threads/schedlock.exp: other thread 1 didn't run (stepping)
PASS: gdb.threads/schedlock.exp: other thread 2 didn't run (stepping)
+PASS: gdb.threads/schedlock.exp: other thread 3 didn't run (stepping)
PASS: gdb.threads/schedlock.exp: current thread stepped locked
-PASS: gdb.threads/schedlock.exp: other thread 4 didn't run (stepping)
PASS: gdb.threads/schedlock.exp: other thread 5 didn't run (stepping)
Running /testsuite/gdb/testsuite/gdb.threads/staticthreads.exp ...
PASS: gdb.threads/staticthreads.exp: successfully compiled posix threads
test case
@@ -11348,11 +11349,11 @@

=== gdb Summary ===

-# of expected passes 10692
-# of unexpected failures 177
-# of expected failures 45
-# of known failures 70
-# of unresolved testcases 9
+# of expected passes 10718
+# of unexpected failures 160
+# of expected failures 41
+# of known failures 64
+# of unresolved testcases 10
# of untested testcases 5
# of unsupported tests 3
/usr/bin/gdb version 6.6.50.20061206 -nx

-Aman

Daniel Jacobowitz wrote:
> On Wed, Oct 18, 2006 at 04:05:54PM -0400, Daniel Jacobowitz wrote:
>
>> On Wed, Oct 18, 2006 at 09:58:08PM +0200, Mark Kettenis wrote:
>>
>>> Unfortunately, I still get a few regressions, see below. They all
>>> seem to be problems with not skipping the complete prologue. I get
>>> the feeling that using line number information for prologue skipping
>>> is just not reliable :(.
>>>
>> It's true that it isn't completely reliable, but it's usually "good
>> enough" and has its own advantages - it's better than accidentally
>> walking off into the epilogue, for instance, as this code is currently
>> somewhat prone to.
>>
>> What version of GCC are you using? Perhaps I can reproduce it with a
>> different version.
>>
>
> Hi Mark, did you miss this question? I'd really like to figure out why
> this patch causes regressions for you.
>
>