Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
afef9a5b
Commit
afef9a5b
authored
Jun 05, 2006
by
James Lemke
Committed by
James Lemke
Jun 05, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* dg-cmp-results.sh: New script for comparing DejaGNU logs.
From-SVN: r114393
parent
8a10503f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
205 additions
and
0 deletions
+205
-0
contrib/ChangeLog
+4
-0
contrib/dg-cmp-results.sh
+201
-0
No files found.
contrib/ChangeLog
View file @
afef9a5b
2006
-
06
-
05
James
Lemke
<
jwlemke
@wasabisystems
.
com
>
*
dg
-
cmp
-
results
.
sh
:
New
script
for
comparing
DejaGNU
logs
.
2006
-
06
-
02
Richard
Earnshaw
<
rearnsha
@arm
.
com
>
2006
-
06
-
02
Richard
Earnshaw
<
rearnsha
@arm
.
com
>
Mike
Stump
<
mrs
@apple
.
com
>
Mike
Stump
<
mrs
@apple
.
com
>
...
...
contrib/dg-cmp-results.sh
0 → 100755
View file @
afef9a5b
#!/bin/bash
# Copyright (C) 2006 Free Software Foundation
#
# Analyze changes in GCC DejaGNU test logs for binutils, gcc, gdb, etc.
# Original version written in 2005 by James Lemke <jwlemke@wasabisystems.com>.
#
# See usage() below.
usage
()
{
cat
<<
EOF
>&2
Usage:
dg-cmp-results.sh [-v] [-v] [-v] <variant-name> <old-file> <new-file>
<variant-name> names the desired variant, "/" must be written as "\/".
Use the empty string ("") for the first variant in each file.
Output is to stdout.
Non-verbose output is degradation info like PASS->FAIL.
-v adds improvement info like FAIL->PASS.
-v -v adds info like tests that are no longer run.
-v -v -v adds info for tests that have not changed status.
-v -v -v -v is used for debugging.
EOF
}
verbose
=
0
while
test
"
$1
"
=
"-v"
;
do
verbose
=
`
expr
$verbose
+ 1
`
shift
done
if
test
$#
-ne
3
-o
!
-f
"
$2
"
-o
!
-f
"
$3
"
;
then
usage
exit
1
fi
# Command differences for various platforms.
case
`
uname
-s
`
in
Darwin|NetBSD
)
E
=
-E
# sed
;;
*
)
E
=
-r
# sed
;;
esac
# sections are identified by separator lines beginning with '\t\t==='.
# section 0 identifies run date, target, and host.
# section 1 and subsequent contain test data for a target variant.
# -skip to /^Running target/ and use that line to identify the variant.
# -subsequent lines contain the result data. They begin with:
# '(PASS|FAIL|XFAIL|XPASS|UNTESTED|UNSUPPORTED|UNRESOLVED):'
VARIANT
=
"
$1
"
OFILE
=
"
$2
"
OBASE
=
`
basename
"
$2
"
`
NFILE
=
"
$3
"
NBASE
=
`
basename
"
$3
"
`
echo
"dg-cmp-results.sh: Verbosity is
${
verbose
}
, Variant is
\"
${
VARIANT
}
\"
"
echo
header
=
"^Running target
$VARIANT
"
temp
=
`
grep
"
$header
"
$OFILE
`
if
test
-z
"
$temp
"
;
then
echo
"Error: variant
\"
$VARIANT
\"
not found in
$OFILE
."
exit
1
fi
temp
=
`
grep
"
$header
"
$NFILE
`
if
test
-z
"
$temp
"
;
then
echo
"Error: variant
\"
$VARIANT
\"
not found in
$NFILE
."
exit
1
fi
unset
temp
# Copy out the old file's section 0.
echo
"Older log file:
$OFILE
"
sed
$E
-e
'/^[[:space:]]+===/,$d'
$OFILE
# Copy out the new file's section 0.
echo
"Newer log file:
$NFILE
"
sed
$E
-e
'/^[[:space:]]+===/,$d'
$NFILE
# Create a temporary file from the old file's interesting section.
sed
$E
-e
"1,/
$header
/d"
\
-e
'/^[[:space:]]+===/,$d'
\
-e
'/^[A-Z]+:/!d'
\
-e
'/^(WARNING|ERROR):/d'
\
-e
's/\r$//'
\
-e
's/^/O:/'
\
$OFILE
|
sort
-s
-t
:
-k
3b -
\
>
/tmp/o
$$
-
$OBASE
# Create a temporary file from the new file's interesting section.
sed
$E
-e
"1,/
$header
/d"
\
-e
'/^[[:space:]]+===/,$d'
\
-e
'/^[A-Z]+:/!d'
\
-e
'/^(WARNING|ERROR):/d'
\
-e
's/\r$//'
\
-e
's/^/N:/'
\
$NFILE
|
sort
-s
-t
:
-k
3b -
\
>
/tmp/n
$$
-
$NBASE
# Merge the two files, then compare adjacent lines.
# Comparison is complicated by tests that may be run multiple times.
# If that case, we assume that the order is the same in both files.
cat
<<
EOF
>compare-
$$
.awk
BEGIN {
FS = ":"
queue1 = 1; queueN = 0; status[queue1] = ""; name[queue1] = ""
verbose = verbose + 0 # Make sure it's defined.
}
# FIFO circular queue
function push(st, nm) {
queueN += 1; status[queueN] = st; name[queueN] = nm
}
function peek() {
result = 0
if (queueN >= queue1) result = queue1
return result
}
function drop() {
queue1 += 1
if (queue1 > queueN) { queue1 = 1; queueN = 0; }
}
function compare(st, nm) {
old = peek()
if (old == 0) {
# This new test wasn't run last time.
if (verbose >= 2) printf("NA->%s:%s\n", st, nm)
}
else {
# Compare this new test to the first queued old one.
if (verbose >= 4) {
printf("Comparing two lines:\n O:%s:%s\n N:%s:%s\n",
status[old], nm[old], st, nm)
}
if (name[old] != nm) {
# The old test wasn't run this time and
# the new test wasn't run last time.
if (verbose >= 2) {
printf("%s->NA:%s\n", status[old], name[old])
if (nm != "") printf("NA->%s:%s\n", st, nm)
}
drop()
}
else {
notable = 0
if (status[old] == st) {
# Status of this test has not changed.
if (verbose >= 3) printf("%s:%s\n", st, nm)
}
else if(status[old] == "PASS" && st == "XFAIL") {
if (verbose >= 1) notable = 1
}
else if(status[old] == "PASS" || st == "FAIL") {
# Test did pass but doesn't now
# or didn't fail but does now.
notable = 1
}
else if(st == "PASS") {
# Test didn't pass but does now.
if (verbose >= 1) notable = 1
}
else if(verbose >= 2) {
# Miscellaneous status change.
notable = 1
}
if (notable > 0) printf("%s->%s:%s\n", status[old], st, nm)
drop()
}
}
}
/^O:/ {
while (old = peek()) {
if (name[old] == \
$3
) break;
# The queued test is no longer run.
compare("", "");
}
# Save this test for later comparison.
push(\
$2
, \
$3
)
}
/^N:/ {
compare(\
$2
, \
$3
)
}
END {
while (old = peek()) compare("", "")
}
EOF
sort
-m
-s
-t
:
-k
3b /tmp/o
$$
-
$OBASE
/tmp/n
$$
-
$NBASE
|
awk
-v
verbose
=
$verbose
-f
compare-
$$
.awk /dev/stdin
# Delete the temporary files.
rm
-f
compare-
$$
.awk /tmp/o
$$
-
$OBASE
/tmp/n
$$
-
$NBASE
exit
0
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment