This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFC] Use untested for macscp.exp if no macro information generated
- From: "Pierre Muller" <muller at ics dot u-strasbg dot fr>
- To: <gdb-patches at sourceware dot org>
- Date: Wed, 28 Jan 2009 14:23:11 +0100
- Subject: [RFC] Use untested for macscp.exp if no macro information generated
- References: <011801c92a03$4b71afa0$e2550ee0$@u-strasbg.fr> <m38wsxvin8.fsf@fleche.redhat.com> <001401c92af1$cf8821e0$6e9865a0$@u-strasbg.fr> <004a01c97f96$637bced0$2a736c70$@u-strasbg.fr>
I tried to simplify my patch for macro support
in order to get less uninteresting failures.
This test issues a huge number of failures if the
debugging format does not support macro information.
This is the default for gcc-3 on cygwin.
make check RUNTESTFLAGS=gdb.base/macscp.exp
results currently in:
=== gdb Summary ===
# of expected passes 69
# of unexpected failures 158
# of known failures 87
/usr/local/src/gdbcvs/build/gdb/testsuite/../../gdb/gdb version
6.8.50.20090127-cvs -nw -nx
By forcing gcc-4 usage,
make check RUNTESTFLAGS="gdb.base/macscp.exp CC_FOR_TARGET=gcc-4"
=== gdb Summary ===
# of expected passes 295
# of known failures 19
/usr/local/src/gdbcvs/build/gdb/testsuite/../../gdb/gdb version
6.8.50.20090127-cvs -nw -nx
After this patch:
make check RUNTESTFLAGS=gdb.base/macscp.exp
results currently in:
=== gdb Summary ===
FAIL: gdb.base/macscp.exp: info macro WHERE after `list main' (undefined)
=== gdb Summary ===
# of expected passes 1
# of unexpected failures 1
# of untested testcases 1
/usr/local/src/gdbcvs/build/gdb/testsuite/../../gdb/gdb version
6.8.50.20090127-cvs -nw -nx
The gcc-4 case remains unchanged
which means that targets supporting macro debug information
should remain unaffected by this patch.
Is this lighter version OK?
Once again, I was hesitating on the ChangeLog
description...
Pierre Muller
Pascal language support maintainer for GDB
gdb/testsuite/ChangeLog entry:
2009-01-28 Pierre Muller <muller@ics.u-strasbg.fr>
* gdb.base/macscp.exp (info_macro): Return undefined if undefined.
(check_macro): Return 1 if undefined.
If first test fails, check if macro debug information is available,
and skip test completely if no macro information found.
Index: gdb/testsuite/gdb.base/macscp.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/macscp.exp,v
retrieving revision 1.19
diff -u -p -r1.19 macscp.exp
--- gdb/testsuite/gdb.base/macscp.exp 3 Jan 2009 05:58:03 -0000 1.19
+++ gdb/testsuite/gdb.base/macscp.exp 28 Jan 2009 13:02:15 -0000
@@ -152,7 +152,7 @@ proc info_macro {macro} {
switch -exact -- $definition {
no-macro-info { return no-macro-info }
timeout { return timeout }
- undefined -
+ undefined { return undefined }
default {
if {[llength $location] >= 1} {
return [concat $location [list $definition]]
@@ -178,6 +178,10 @@ proc check_macro {macro expected where}
xfail "executable includes no macro debugging information"
return 1
}
+ undefined {
+ fail "info macro $macro $where (undefined)"
+ return 1
+ }
timeout {
fail "info macro $macro $where (timeout)"
}
@@ -199,7 +203,33 @@ proc list_and_check_macro {func macro ex
if {[list_and_check_macro main WHERE {macscp1.c {before macscp1_3}}]} {
- return 0
+ global verbose
+ set macro_support "unknown"
+ send_gdb "info source\n"
+ gdb_expect 10 {
+ -re "Includes preprocessor macro info\..*$gdb_prompt $" {
+ set macro_support 1
+ verbose "Source has macro information"
+ }
+ -re "Does not include preprocessor macro info\..*$gdb_prompt $" {
+ set macro_support 0
+ verbose "Source has no macro information"
+ }
+ -re "No current source file.*$gdb_prompt $" {
+ perror "get_macro_support used when no current source file"
+ }
+ -re "$gdb_prompt $" {
+ warning "couldn't check macro support (no valid response)."
+ }
+ timeout {
+ warning "couldn't check macro support (timed out)."
+ }
+ }
+ if {$macro_support != 1} {
+ verbose "Skipping $testfile because no macro information is
included."
+ untested $testfile
+ return 0
+ }
}
list_and_check_macro macscp2_2 WHERE {macscp2.h macscp1.c {before
macscp2_2}}
list_and_check_macro macscp3_2 WHERE {macscp3.h macscp1.c {before
macscp3_2}}