=head1 VERSION
-Version 1.11
+Version 1.16
=cut
-our $VERSION = '1.11';
+our $VERSION = '1.16';
=head1 DESCRIPTION
=cut
-use base qw/Test::Valgrind::Carp/;
+use base qw<Test::Valgrind::Carp>;
=head1 METHODS
-=head2 C<< generate tool => $tool, command => $command, target => $target >>
+=head2 C<generate>
+
+ Test::Valgrind::Suppressions->generate(
+ tool => $tool,
+ command => $command,
+ target => $target,
+ );
Generates suppressions for the command C<< $command->new_trainer >> and the tool C<< $tool->new_trainer >>, and writes them in the file specified by C<$target>.
The action used behind the scenes is L<Test::Valgrind::Action::Suppressions>.
return $status;
}
-=head2 C<strip_tail $session, $suppression>
+=head2 C<maybe_generalize>
+
+ my $mangled_suppression = Test::Valgrind::Suppressions->maybe_generalize(
+ $session,
+ $suppression,
+ );
Removes all wildcard frames at the end of the suppression.
-Moreover, C<'...'> is appended when C<valgrind> C<3.4.0> or higher is used.
+It also replaces sequences of wildcard frames by C<'...'> when C<valgrind> C<3.4.0> or higher is used.
Returns the mangled suppression.
=cut
-sub strip_tail {
+sub maybe_generalize {
shift;
my ($sess, $supp) = @_;
1 while $supp =~ s/[^\r\n]*:\s*\*\s*$//;
+
# With valgrind 3.4.0, we can replace unknown series of frames by '...'
if ($sess->version ge '3.4.0') {
- 1 while $supp =~ s/[^\r\n]*\.{3}\s*$//;
$supp .= "...\n";
+ $supp =~ s/(?:^\s*(?:\.{3}|\*:\S*|obj:\*)\s*\n)+/...\n/mg;
}
$supp;
}
-=head2 C<maybe_z_demangle $symbol>
+=head2 C<maybe_z_demangle>
+
+ my $demangled_symbol = Test::Valgrind::Suppressions->maybe_z_demangle(
+ $symbol,
+ );
If C<$symbol> is Z-encoded as described in C<valgrind>'s F<include/pub_tool_redir.h>, extract and decode its function name part.
Otherwise, C<$symbol> is returned as is.
=head1 COPYRIGHT & LICENSE
-Copyright 2008-2009 Vincent Pit, all rights reserved.
+Copyright 2008,2009,2010,2011,2013,2015 Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.