You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
#!/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"; |
|
} |
|
}
|
|
|