# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Authors: Nathan Binkert
+# Steve Reinhardt
# Diff two streams.
#
# "filename" is a pipe (|). Thus to compare the instruction traces
# from two versions of m5 (m5a and m5b), you can do this:
#
-# rundiff 'm5a --trace:flags=InstExec |' 'm5b --trace:flags=InstExec |'
+# rundiff 'm5a --traceflags=InstExec |' 'm5b --traceflags=InstExec |'
#
use strict;
-
+use FileHandle;
use Getopt::Std;
#
# Set $postcontext to print the next $postcontext_lines matching lines.
$postcontext = $postcontext_lines;
+
+ # Normally we flush after the postcontext lines are printed, but if
+ # the user has decreed that there aren't any we need to flush now
+ if ($postcontext == 0) {
+ STDOUT->flush();
+ }
}
# figure out what to do with this line
if ($postcontext > 0) {
# we're in the post-context of a diff: print it
- $postcontext--;
print ' ', $l1;
$lineno1++;
$lineno2++;
+ if (--$postcontext == 0) {
+ STDOUT->flush();
+ }
}
else {
# we're in the middle of a matching region... save this