55 lines
1.4 KiB
Perl
55 lines
1.4 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# Scrub the variable fields from the normal trace2 output to
|
|
# make testing easier.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
my $float = '[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?';
|
|
|
|
# This code assumes that the trace2 data was written with bare
|
|
# turned on (which omits the "<clock> <file>:<line>" prefix.
|
|
|
|
while (<>) {
|
|
# Various messages include an elapsed time in the middle
|
|
# of the message. Replace the time with a placeholder to
|
|
# simplify our HEREDOC in the test script.
|
|
s/elapsed:$float/elapsed:_TIME_/g;
|
|
|
|
my $line = $_;
|
|
|
|
# we expect:
|
|
# start <argv0> [<argv1> [<argv2> [...]]]
|
|
#
|
|
# where argv0 might be a relative or absolute path, with
|
|
# or without quotes, and platform dependent. Replace argv0
|
|
# with a token for HEREDOC matching in the test script.
|
|
|
|
if ($line =~ m/^start/) {
|
|
$line =~ /^start\s+(.*)/;
|
|
my $argv = $1;
|
|
$argv =~ m/(\'[^\']*\'|[^ ]+)\s+(.*)/;
|
|
my $argv_0 = $1;
|
|
my $argv_rest = $2;
|
|
|
|
print "start _EXE_ $argv_rest\n";
|
|
}
|
|
elsif ($line =~ m/^cmd_path/) {
|
|
# Likewise, the 'cmd_path' message breaks out argv[0].
|
|
#
|
|
# This line is only emitted when RUNTIME_PREFIX is defined,
|
|
# so just omit it for testing purposes.
|
|
# print "cmd_path _EXE_\n";
|
|
}
|
|
elsif ($line =~ m/^cmd_ancestry/) {
|
|
# 'cmd_ancestry' is not implemented everywhere, so for portability's
|
|
# sake, skip it when parsing normal.
|
|
#
|
|
# print "$line";
|
|
}
|
|
else {
|
|
print "$line";
|
|
}
|
|
}
|