This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [rfa/testsuite] Don't display values in output of pc-fp.exp
- From: Andrew Cagney <ac131313 at redhat dot com>
- To: David Carlton <carlton at math dot stanford dot edu>
- Cc: gdb-patches at sources dot redhat dot com,Fernando Nasser <fnasser at redhat dot com>, cagney <cagney at redhat dot com>
- Date: Tue, 05 Nov 2002 17:54:27 -0500
- Subject: Re: [rfa/testsuite] Don't display values in output of pc-fp.exp
- References: <ro1u1ivacl5.fsf@jackfruit.Stanford.EDU>
The tests in pc-fp.exp display the actual values of $pc and $fp in
their PASS messages. That makes regression testing a bit more
annoying for me: the value of $fp changes with every change I make to
GDB. Is it okay to tweak the PASS messages not to display those
values?
As far as I know, anything in trailing paren should be ignored when
comparing test results. You might want to tweak your script (I've
attached mine) to do this.
Also, why is FP/PC changing? Your GDB changes shouldn't affect the
behavior of the target program's $fp / $pc.
Andrew
2002-11-05 David Carlton <carlton@math.stanford.edu>
* gdb.base/pc-fp.exp (get_valueofx): Don't display 'val' in PASS
message.
Index: pc-fp.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/pc-fp.exp,v
retrieving revision 1.1
diff -u -p -r1.1 pc-fp.exp
--- pc-fp.exp 25 Sep 2002 20:30:38 -0000 1.1
+++ pc-fp.exp 5 Nov 2002 22:09:51 -0000
@@ -62,7 +62,7 @@ proc get_valueofx { fmt exp default } {
gdb_expect {
-re "\\$\[0-9\]* = (0x\[0-9a-zA-Z\]+).*$gdb_prompt $" {
set val $expect_out(1,string)
- pass "get value of ${exp} ($val)"
+ pass "get value of ${exp}"
}
timeout {
set size ${default}
#!/bin/sh
if awk --version < /dev/null 2>&1 | grep -i gnu > /dev/null
then
AWK=awk
else
AWK=gawk
fi
$AWK '
function trace (msg) {
print msg >> "/dev/stderr"
}
# returns a SUPSEP separated list created by sorting TABLE.
function qsort (table, middle, tmp, left, nr_left, right, nr_right, result) {
middle = ""
for (middle in table) { break; }
nr_left = 0;
nr_right = 0;
for (tmp in table) {
if (tmp < middle) {
nr_left++
left[tmp] = tmp
} else if (tmp > middle) {
nr_right++
right[tmp] = tmp
}
}
#print "qsort " nr_left " " middle " " nr_right > "/dev/stderr"
result = ""
if (nr_left > 0) {
result = qsort(left) SUBSEP
}
result = result middle
if (nr_right > 0) {
result = result SUBSEP qsort(right)
}
return result
}
function print_headings (html_p, file, title, target, i) {
if (html_p) {
printf "<tr><td></td><th>" >> file
}
printf title >> file
if (html_p) {
printf "</th>" >> file
}
for (i = 1; i <= nr_targets; i++) {
target = sorted_targets[i]
if (html_p) {
printf "<th>" i "<br>" target "</th>" >> file
} else {
printf "\t" i >> file
}
}
if (html_p) {
printf "</tr>" >> file
}
printf "\n" >> file
}
function print_test (file, test, nr, i) {
printf "<tr>" >> file
printf "<td>%d</td>", nr >> file
printf "<th align=left>%s</th>", test >> file
for (i = 1; i <= nr_targets; i++) {
target = sorted_targets[i];
result = results[target, test]
if (result == "FAIL") {
printf "<th>%s</th>", result >> file
} else {
printf "<td align=center>%s</td>", result >> file
}
}
printf "</tr>\n" >> file
}
function print_totals (html_p, file, status, target, i, j) {
for (i = 1; i <= nr_statuses; i++) {
status = sorted_statuses[i];
if (html_p) {
printf "<tr><td></td><th align=left>" >> file
}
printf status >> file
if (html_p) {
printf "</th>" >> file
}
for (j = 1; j <= nr_targets; j++) {
target = sorted_targets[j];
if (html_p) {
printf "<th>" >> file
} else {
printf "\t"
}
printf totals[target, status] >> file
if (html_p) {
printf "</th>" >> file
}
}
if (html_p) {
printf "</tr>" >> file
}
printf "\n" >> file
}
}
function print_table_start (file, title, full_title, i, target) {
full_title = "Failure Table: " title;
trace("Generating " file " (" full_title ")")
print "<html>" >> file
print "<head>" >> file
print "<title>" full_title "</title>" >> file
print "</head>" >> file
print "<body>" >> file
print "<h1><center>" full_title "</center></h1>" >> file
print "<center>" >> file
print "<table>" >> file
for (i = 1; i <= nr_targets; i++) {
target = sorted_targets[i]
print "<tr>" >> file
print "<td>" i "</td>" >> file
print "<td>" target "</td>" >> file
print "<td>" target_file[target] "</td>" >> file
print "</tr>" >> file
}
print "</table>" >> file
print "</center>" >> file
print "<table>" >> file
}
function print_table_end (file) {
print "</table>" >> file
print "</body>" >> file
print "</html>" >> file
}
function print_opening (file, title) {
printf "" > file
print_table_start(file, title);
print_headings(1, file, title);
print_totals(1, file);
}
function print_closing (file, title, nr) {
trace(title ": " nr);
print_totals(1, file);
print_headings(1, file, title);
print_table_end(file);
}
BEGIN {
nr_runs = 0
}
/Running target/ {
nr_runs++
sub (/Running target/, "");
gsub (/ /, "");
gsub (/\//, " ");
nr = 1;
do {
target = $0 " (" nr++ ")";
} while (target in targets)
targets[target] = target
target_file[target] = FILENAME
trace("Parsing " nr_runs ": " target " " (target_file[target]));
next
}
# Collect up sizeof???
# Collect the results
/^PASS:/ || /^FAIL:/ || /^XFAIL:/ || /^XPASS:/ {
# accumulate statuses
status = $0
sub (/:.*$/, "", status)
statuses[status] = status
# accumulate tests
test = $0
sub (/^[A-Z]*: /, "", test)
gsub (/ *\([^)]*\)/, "", test)
tests[test] = test
# accumulate result counts
totals[target, status] += 1;
results[target, test] = status;
totals[test, status] += 1;
}
END {
# sort the test names
trace("Sorting results")
nr_tests = split (qsort(tests), sorted_tests, SUBSEP);
trace("Number of tests " nr_tests)
# for (i = 0; i < nr_tests; i++) {
# print i " " sorted_tests[i] > "/dev/stderr"
# }
nr_targets = split (qsort(targets), sorted_targets, SUBSEP);
nr_statuses = split (qsort(statuses), sorted_statuses, SUBSEP);
print_headings(0, "/dev/stderr", "Summary")
print_totals(0, "/dev/stderr")
for (i = 1; i <= nr_targets; i++) {
target = sorted_targets[i]
printf "%3d %s %s\n", i, target, target_file[target] >> "/dev/stderr"
}
####
# heading
file = "diff.html"
print_opening(file, "Differences");
# body - differences
nr = 0
for (i = 1; i <= nr_tests; i++) {
test = sorted_tests[i];
different = 0;
fail = 0;
result = "<uninitialized>";
for (target in targets) {
if (result == "<uninitialized>") {
result = results[target, test];
} else if (result != results[target, test]) {
different = 1
}
if (results[target, test] == "FAIL") {
fail = 1;
}
# print "TEST=" test, "different=" different, "fail=" fail, "result=" result > "/dev/stderr"
}
if (different) {
print_test(file, test, ++nr);
}
}
print_closing(file, "Differences", nr);
####
file = "fail.html"
print_opening(file, "Failures");
# body - failures
nr = 0
for (i = 1; i <= nr_tests; i++) {
test = sorted_tests[i]
if (totals[test, "FAIL"] > 0) {
print_test(file, test, ++nr);
}
}
print_closing(file, "Failures", nr);
####
file = "pass.html"
print_opening(file, "Passes");
# body - passes
nr = 0
for (i = 1; i <= nr_tests; i++) {
test = sorted_tests[i]
if (totals[test, "PASS"] > 0) {
print_test(file, test, ++nr);
}
}
print_closing(file, "Passes", nr);
}
' "$@"