From 4ad725b32e9c609bd5ea25b6c92abe6c33e548c6 Mon Sep 17 00:00:00 2001 From: law Date: Sat, 23 May 1998 22:35:33 +0000 Subject: [PATCH] Moved here from the gcc subdir. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19990 138bc75d-0d04-0410-961f-82ee72b054a4 --- contrib/test_summary | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++ contrib/warn_summary | 52 ++++++++++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100755 contrib/test_summary create mode 100755 contrib/warn_summary diff --git a/contrib/test_summary b/contrib/test_summary new file mode 100755 index 00000000000..23e3d7e7d82 --- /dev/null +++ b/contrib/test_summary @@ -0,0 +1,113 @@ +#! /bin/sh + +# (C) 1998 Alexandre Oliva + +# This script is Free Software, and it can be copied, distributed and +# modified as defined in the GNU General Public License. A copy of +# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html + +# This script processes *.{sum,log} files, producing a shell-script +# that sends e-mail to the appropriate lists and renames files to +# *.sent. It currently handles gcc and egcs, but it should be quite +# easy to modify it to handle other packages and its mailing lists. + +# The scripts assumes it is run in the root directory of the build +# tree, and it will include all .sum files it finds in the mail +# report. + +# configure flags are extracted from ./config.status + +# if the BOOT_CFLAGS environment variable is set, it will be included +# in the mail report too. + +# The usage pattern of this script is as follows: + +# summarize | more # so as to observe what should be done + +# summarize | sh # so as to actually send e-mail and move log files + +# It accepts a few command line arguments. For example: +# -o: re-reads logs that have been mailed already (.sum.sent) +# -t: prevents logs from being renamed +# -m: specify the e-mail address to send notes to. An appropriate default should be selected from the log files. +# -f: force reports to be mailed; if omitted, only reports that differ from the sent.* version are sent +: ${filesuffix=}; export fileprefix +: ${move=true}; export move +: ${forcemail=false}; export forcemail +while true; do + case "$1" in + -o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;; + -t) move=false; shift;; + -m) mailto=$2; forcemail=true; shift 2;; + -f) unset mailto; forcemail=true; shift;; + *) break;; + esac +done +: ${mailto="\" address \""}; export mailto +files=`find . -name \*.sum$filesuffix -print` +anyfile=false anychange=$forcemail && +for file in $files; do + [ -f $file ] && + anyfile=true && + { $anychange || + anychange=`diff -u $file.sent $file 2>/dev/null | + if test ! -f $file.sent || + egrep '^[-+](XPASS|FAIL)' >/dev/null; then + echo true + else + echo false + fi + ` + } + true +done && +$anyfile && +if $forcemail || $anychange; then :; else mailto=nobody; fi && +gawk ' +BEGIN { + lang=""; + print "cat <0 { print; --blanks; } +END { if (lang != "") { + print configflags; + '${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}' + if (boot_cflags != 0) print boot_cflags; + print "EOF"; + print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&"; +}} +{ next; } +' ./config.status $files | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" && +if $move; then + for file in $files `ls -1 $files | sed s/sum$/log/`; do + [ -f $file ] && echo "mv `pwd`/$file `pwd`/$file.sent &&" + done +fi && +echo true +exit 0 diff --git a/contrib/warn_summary b/contrib/warn_summary new file mode 100755 index 00000000000..1fb62b03e6c --- /dev/null +++ b/contrib/warn_summary @@ -0,0 +1,52 @@ +#!/bin/sh +# This script parses the output of a gcc bootstrap when using warning +# flags and determines various statistics. +# +# By Kaveh Ghazi (ghazi@caip.rutgers.edu) 12/13/97. + +# This function displays all warnings from stage3 of the bootstrap. +stage3warns() +{ +# Some awks choke on long lines so grep them out. + grep -v libf2c.a $1 | \ + $AWK '/ warning: /{if(t==1)print} ; /stage2/{if(t==0)t=1}' +} + +# Find a good awk. +if test -z "$AWK" ; then + for AWK in gawk nawk awk ; do + if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then + : + else + break + fi + done +fi + +for file in "$@" ; do + + count=`stage3warns $file | wc -l` + echo There are $count warnings in stage3 of this bootstrap. + + echo + echo Number of warnings per file: + stage3warns $file | $AWK -F: '{print$1}' | sort | uniq -c | sort -nr + + echo + echo Number of warning types: + stage3warns $file | sed 's/.*warning: //; + s/`\(int\)'"'"'/"\1"/g; + s/`\(char\)'"'"'/"\1"/g; + s/`\(inline\)'"'"'/"\1"/g; + s/`\(else\)'"'"'/"\1"/g; + s/`\(return\)'"'"'/"\1"/g; + s/`\(static\)'"'"'/"\1"/g; + s/`\(extern\)'"'"'/"\1"/g; + s/`\(longjmp\)'"'"' or `\(vfork\)'"'"'/"\1" or "\2"/g; + s/`'"[^']*'/"'`???'"'/g;"' + s/.*format, .* arg (arg [0-9]*)/??? format, ??? arg (arg ???)/; + s/(arg [0-9]*)/(arg ???)/; + s/"\([^"]*\)"/`\1'"'"'/g' | \ + sort | uniq -c | sort -nr + +done -- 2.11.0