+3.08_04 - 2006-05-29
+
+ * update API info
+ * fix a bug in the automated API info generator that
+ caused slightly wrong output
+ * improve the speed of the automated API info generator;
+ we're now down from several hours to a few minutes
+
3.08_03 - 2006-05-25
* update API info
This information is in turn used by F<parts/apicheck.pl> to mask
API calls in the generated C file for these versions, so the
process can be stopped by the time F<apicheck.c> compiles cleanly
-and the dynamic linker is happy. (Actually, this process generates
-false positives, so each API call is checked once more afterwards.)
+and the dynamic linker is happy. (Actually, this process may generate
+false positives, so by default each API call is checked once more
+afterwards.)
-Running C<devel/mktodo> takes a couple of hours.
+Running C<devel/mktodo> takes about an hour, depending of course
+on the machine you're running it on. If you run it with
+the C<--nocheck> option, it won't recheck the API calls that failed
+in the compilation stage and it'll take significantly less time.
+Running with C<--nocheck> should usually be safe.
When running C<devel/mktodo> with the C<--base> option, it will
generate the I<baseline> todo files by disabling all functionality
macros by scanning the include files in the F<CORE> directory of
various Perl versions.
-It's not very often that one has to regenerate the baseline and
-todo files, and the process hasn't been automated yet, but it's
-basically only the following steps:
+The whole process isn't platform independent. It has currently been
+tested only under Linux, and it definitely requires at least C<gcc> and
+the C<nm> utility.
+
+It's not very often that one has to regenerate the baseline and todo
+files. If you have to, you can either run F<devel/regenerate> or just
+execute the following steps by hand:
=over 4
=back
-Alternatively, you can try to use the F<devel/regenerate> script.
-
=head2 Implementation
Residing in F<parts/inc/> is the "heart" of C<Devel::PPPort>. Each
=head1 SEE ALSO
-See L<ppport.h>.
+See L<ppport.h> and L<devel/regenerate>.
=cut
#
################################################################################
#
-# $Revision: 19 $
+# $Revision: 20 $
# $Author: mhx $
-# $Date: 2006/01/19 19:35:25 +0100 $
+# $Date: 2006/05/28 19:36:23 +0200 $
#
################################################################################
#
@clean = qw{ $(H_FILES) PPPort.c };
+%depend = ( '$(OBJECT)' => '$(H_FILES)' );
+
if ($opt{'apicheck'}) {
$PL_FILES{'apicheck_c.PL'} = 'apicheck.c';
push @C_FILES, qw{ apicheck.c };
- push @clean, qw{ apicheck.c };
+ push @clean, qw{ apicheck.c apicheck.i };
+ $depend{'apicheck.i'} = 'ppport.h';
}
if (eval $ExtUtils::MakeMaker::VERSION >= 6) {
OBJECT => '$(BASEEXT)$(OBJ_EXT) $(O_FILES)',
XSPROTOARG => '-noprototypes',
clean => { FILES => "@clean" },
- depend => { '$(OBJECT)' => '$(H_FILES)' },
+ depend => \%depend,
@moreopts,
);
return $post;
}
+sub MY::c_o {
+ package MY;
+ my $co = shift->SUPER::c_o(@_);
+
+ $co .= <<'CO' if $::opt{'apicheck'} && $co !~ /^\.c\.i:/m;
+
+.SUFFIXES: .i
+
+.c.i:
+ $(CCCMD) -E -I$(PERL_INC) $(DEFINE) $*.c > $*.i
+CO
+
+ return $co;
+}
+
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_03 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
gv_init_sv|||
gv_init|||
gv_name_set||5.009004|
-gv_stashpvn|5.006000||p
+gv_stashpvn|5.004000||p
gv_stashpvs||5.009003|
gv_stashpv|||
gv_stashsv|||
newAV|||
newBINOP|||
newCONDOP|||
-newCONSTSUB|5.006000||p
+newCONSTSUB|5.004050||p
newCVREF|||
newDEFSVOP|||
newFORM|||
newPVOP|||
newRANGE|||
newRV_inc|5.004000||p
-newRV_noinc|5.006000||p
+newRV_noinc|5.004000||p
newRV|||
newSLICEOP|||
newSTATEOP|||
newSVpvf_nocontext|||vn
newSVpvf||5.004000|v
newSVpvn_share||5.007001|
-newSVpvn|5.006000||p
+newSVpvn|5.004050||p
newSVpvs_share||5.009003|
newSVpvs|5.009003||p
newSVpv|||
sv_backoff|||
sv_bless|||
sv_cat_decode||5.008001|
-sv_catpv_mg|5.006000||p
+sv_catpv_mg|5.004050||p
sv_catpvf_mg_nocontext|||pvn
sv_catpvf_mg|5.006000|5.004000|pv
sv_catpvf_nocontext|||vn
sv_pvn_force_flags||5.007002|
sv_pvn_force|||p
sv_pvn_nomg|5.007003||p
-sv_pvn|5.006000||p
+sv_pvn|5.005000||p
sv_pvutf8n_force||5.006000|
sv_pvutf8n||5.006000|
sv_pvutf8||5.006000|
sv_report_used|||
sv_reset|||
sv_rvweaken||5.006000|
-sv_setiv_mg|5.006000||p
+sv_setiv_mg|5.004050||p
sv_setiv|||
sv_setnv_mg|5.006000||p
sv_setnv|||
-sv_setpv_mg|5.006000||p
+sv_setpv_mg|5.004050||p
sv_setpvf_mg_nocontext|||pvn
sv_setpvf_mg|5.006000|5.004000|pv
sv_setpvf_nocontext|||vn
sv_setpvf||5.004000|v
sv_setpviv_mg||5.008001|
sv_setpviv||5.008001|
-sv_setpvn_mg|5.006000||p
+sv_setpvn_mg|5.004050||p
sv_setpvn|||
sv_setpvs|5.009004||p
sv_setpv|||
sv_setref_uv||5.007001|
sv_setsv_cow|||
sv_setsv_flags||5.007002|
-sv_setsv_mg|5.006000||p
+sv_setsv_mg|5.004050||p
sv_setsv_nomg|5.007002||p
sv_setsv|||
-sv_setuv_mg|5.006000||p
-sv_setuv|5.006000||p
+sv_setuv_mg|5.004050||p
+sv_setuv|5.004000||p
sv_tainted||5.004000|
sv_taint||5.004000|
sv_true||5.005000|
sv_utf8_encode||5.006000|
sv_utf8_upgrade_flags||5.007002|
sv_utf8_upgrade||5.007001|
-sv_uv|5.006000||p
+sv_uv|5.005000||p
sv_vcatpvf_mg|5.006000|5.004000|p
sv_vcatpvfn||5.004000|
sv_vcatpvf|5.006000|5.004000|p
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_03 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
TODO:
-* figure out why many of the function for which Perl_* exists
- fail the automated API check
-
-* use 'nm' to more efficiently find 'undefined' symbols?
-
* implement snprintf with newSVpvf for >= 5.004, which is safer?
* add support for my_vsnprintf?
#
################################################################################
#
-# $Revision: 7 $
+# $Revision: 8 $
# $Author: mhx $
-# $Date: 2006/05/25 17:20:38 +0200 $
+# $Date: 2006/05/28 19:33:09 +0200 $
#
################################################################################
#
my $out = 'apicheck.c';
my @api = map { /^--api=(\w+)$/ ? ($1) : () } @ARGV;
-print "creating $out", (@ARGV ? " (@api)" : ''), "\n";
+print "creating $out", (@api ? " (@api)" : ''), "\n";
system $^X, 'parts/apicheck.pl', @api, $out
and die "couldn't create $out\n";
#
################################################################################
#
-# $Revision: 8 $
+# $Revision: 9 $
# $Author: mhx $
-# $Date: 2006/01/14 22:41:11 +0100 $
+# $Date: 2006/05/28 20:42:53 +0200 $
#
################################################################################
#
=head1 COPYRIGHT
-Copyright (c) 2004-2005, Marcus Holland-Moritz.
+Copyright (c) 2004-2006, Marcus Holland-Moritz.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=head1 SEE ALSO
-See L<Devel::PPPort>.
+See L<Devel::PPPort> and L<HACKERS>.
#
################################################################################
#
-# $Revision: 1 $
+# $Revision: 2 $
# $Author: mhx $
-# $Date: 2006/05/25 17:19:22 +0200 $
+# $Date: 2006/05/28 19:33:35 +0200 $
#
################################################################################
#
runtool({ 'out' => 'tmp.out', 'err' => 'tmp.err' }, $prog, @args);
- my $out = new IO::File "tmp.out" || die "tmp.out: $!\n";
- my $err = new IO::File "tmp.err" || die "tmp.err: $!\n";
+ my $out = IO::File->new("tmp.out") or die "tmp.out: $!\n";
+ my $err = IO::File->new("tmp.err") or die "tmp.err: $!\n";
my %rval = (
status => $? >> 8,
#
################################################################################
#
-# $Revision: 12 $
+# $Revision: 13 $
# $Author: mhx $
-# $Date: 2006/05/25 17:22:31 +0200 $
+# $Date: 2006/05/28 19:36:03 +0200 $
#
################################################################################
#
our %opt = (
base => 0,
+ check => 1,
verbose => 0,
);
-GetOptions(\%opt, qw(
- base
- verbose
- )) or die;
+GetOptions(\%opt, qw( base check! verbose )) or die;
identify();
-# my $outdir = $opt{base} ? 'parts/base' : 'parts/todo';
my $outdir = 'parts/todo';
-# for (glob "$outdir/*") {
-# unlink or die "$_: $!\n";
-# }
-
my $install = '/tmp/perl/install/default';
# my $install = '/tmp/perl/install/thread';
my @args = ('--perl', $_->{path}, '--todo', "$outdir/$todo", '--version', "$_->{todo}");
push @args, '--base' if $opt{base};
push @args, '--verbose' if $opt{verbose};
+ push @args, '--nocheck' unless $opt{check};
runperl('devel/mktodo.pl', @args) or die "error running mktodo.pl [$!] [$?]\n";
}
#
################################################################################
#
-# $Revision: 11 $
+# $Revision: 13 $
# $Author: mhx $
-# $Date: 2006/05/25 17:22:32 +0200 $
+# $Date: 2006/05/28 19:39:10 +0200 $
#
################################################################################
#
use Data::Dumper;
use IO::File;
use IO::Select;
+use Config;
use Time::HiRes qw( gettimeofday tv_interval );
require 'devel/devtools.pl';
debug => 0,
base => 0,
verbose => 0,
+ check => 1,
+ shlib => 'blib/arch/auto/Devel/PPPort/PPPort.so',
);
GetOptions(\%opt, qw(
- perl=s todo=s version=s debug base verbose
+ perl=s todo=s version=s shlib=s debug base verbose check!
)) or die;
identify();
regen_all();
my %sym;
-for (`nm $fullperl`) {
+for (`$Config{nm} $fullperl`) {
chomp;
/\s+T\s+(\w+)\s*$/ and $sym{$1}++;
}
my %all = %{load_todo($opt{todo}, $opt{version})};
my @recheck;
+my $symmap = get_apicheck_symbol_map();
+
for (;;) {
my $retry = 1;
+ my $trynm = 1;
regen_apicheck();
+
retry:
- my $r = run(qw(make test));
- $r->{didnotrun} and die "couldn't run make test: $!\n";
- $r->{status} == 0 and last;
my(@new, @tmp, %seen);
+
+ my $r = run(qw(make));
+ $r->{didnotrun} and die "couldn't run make: $!\n";
+
for my $l (@{$r->{stderr}}) {
if ($l =~ /_DPPP_test_(\w+)/) {
if (!$seen{$1}++) {
}
}
}
- if ($l =~ /undefined symbol: (?:[Pp]erl_)?(\w+)/) {
- if (!$seen{$1}++) {
- my @s = grep { exists $sym{$_} } $1, "Perl_$1", "perl_$1";
- push @new, [$1, @s ? "U (@s)" : "U"];
+ }
+
+ if ($r->{status} == 0) {
+ my @u;
+ my @usym;
+
+ if ($trynm) {
+ @u = eval { find_undefined_symbols($fullperl, $opt{shlib}) };
+ warn "warning: $@" if $@;
+ $trynm = 0;
+ }
+
+ unless (@u) {
+ $r = run(qw(make test));
+ $r->{didnotrun} and die "couldn't run make test: $!\n";
+ $r->{status} == 0 and last;
+
+ for my $l (@{$r->{stderr}}) {
+ if ($l =~ /undefined symbol: (\w+)/) {
+ push @u, $1;
+ }
+ }
+ }
+
+ for my $u (@u) {
+ for my $m (keys %{$symmap->{$u}}) {
+ if (!$seen{$m}++) {
+ my $pl = $m;
+ $pl =~ s/^[Pp]erl_//;
+ my @s = grep { exists $sym{$_} } $pl, "Perl_$pl", "perl_$pl";
+ push @new, [$m, @s ? "U (@s)" : "U"];
+ }
}
}
}
+
@new = grep !$all{$_->[0]}, @new;
+
unless (@new) {
@new = grep !$all{$_->[0]}, @tmp;
- # TODO: @recheck was here, find a better way to get recheck syms
- # * try to grep out warnings before making symlist ?
}
+
unless (@new) {
if ($retry > 0) {
$retry--;
print Dumper($r);
die "no new TODO symbols found...";
}
+
# don't recheck undefined symbols reported by the dynamic linker
push @recheck, map { $_->[0] } grep { $_->[1] !~ /^U/ } @new;
+
for (@new) {
- printf "[$opt{version}] new symbol: %-30s # %s\n", @$_;
+ sym('new', @$_);
$all{$_->[0]} = $_->[1];
}
- write_todo($opt{todo}, $opt{version}, \%all);
-}
-
-my $ifmt = '%' . length(scalar @recheck) . 'd';
-my $t0 = [gettimeofday];
-
-RECHECK: for my $i (0 .. $#recheck) {
- my $sym = $recheck[$i];
- my $cur = delete $all{$sym};
-
- printf "[$opt{version}] chk symbol: %-30s # %s [$ifmt/$ifmt, ETA %s]\n",
- $sym, $cur, $i + 1, scalar @recheck, eta($t0, $i, scalar @recheck);
write_todo($opt{todo}, $opt{version}, \%all);
+}
- if ($cur eq "E (Perl_$sym)") {
- # we can try a shortcut here
- regen_apicheck($sym);
-
+if ($opt{check}) {
+ my $ifmt = '%' . length(scalar @recheck) . 'd';
+ my $t0 = [gettimeofday];
+
+ RECHECK: for my $i (0 .. $#recheck) {
+ my $sym = $recheck[$i];
+ my $cur = delete $all{$sym};
+
+ sym('chk', $sym, $cur, sprintf(" [$ifmt/$ifmt, ETA %s]",
+ $i + 1, scalar @recheck, eta($t0, $i, scalar @recheck)));
+
+ write_todo($opt{todo}, $opt{version}, \%all);
+
+ if ($cur eq "E (Perl_$sym)") {
+ # we can try a shortcut here
+ regen_apicheck($sym);
+
+ my $r = run(qw(make test));
+
+ if (!$r->{didnotrun} && $r->{status} == 0) {
+ sym('del', $sym, $cur);
+ next RECHECK;
+ }
+ }
+
+ # run the full test
+ regen_all();
+
my $r = run(qw(make test));
-
- if (!$r->{didnotrun} && $r->{status} == 0) {
- printf "[$opt{version}] del symbol: %-30s # %s\n", $sym, $cur;
- next RECHECK;
+
+ $r->{didnotrun} and die "couldn't run make test: $!\n";
+
+ if ($r->{status} == 0) {
+ sym('del', $sym, $cur);
+ }
+ else {
+ $all{$sym} = $cur;
}
- }
-
- # run the full test
- regen_all();
-
- my $r = run(qw(make test));
-
- $r->{didnotrun} and die "couldn't run make test: $!\n";
-
- if ($r->{status} == 0) {
- printf "[$opt{version}] del symbol: %-30s # %s\n", $sym, $cur;
- }
- else {
- $all{$sym} = $cur;
}
}
exit 0;
+sub sym
+{
+ my($what, $sym, $reason, $extra) = @_;
+ $extra ||= '';
+ my %col = (
+ 'new' => 'bold red',
+ 'chk' => 'bold magenta',
+ 'del' => 'bold green',
+ );
+ $what = colored("$what symbol", $col{$what});
+
+ printf "[%s] %s %-30s # %s%s\n",
+ $opt{version}, $what, $sym, $reason, $extra;
+}
+
sub regen_all
{
- my @mf_arg = ('--with-apicheck', 'OPTIMIZE=-O0');
+ my @mf_arg = ('--with-apicheck', 'OPTIMIZE=-O0 -w');
push @mf_arg, qw( DEFINE=-DDPPP_APICHECK_NO_PPPORT_H ) if $opt{base};
# just to be sure
}
}
+sub find_undefined_symbols
+{
+ my($perl, $shlib) = @_;
+
+ my $ps = read_sym(file => $perl, options => [qw( --defined-only )]);
+ my $ls = read_sym(file => $shlib, options => [qw( --undefined-only )]);
+
+ my @undefined;
+
+ for my $sym (keys %$ls) {
+ unless (exists $ps->{$sym}) {
+ if ($sym !~ /\@/ and $sym !~ /^_/) {
+ push @undefined, $sym;
+ }
+ }
+ }
+
+ return @undefined;
+}
+
+sub read_sym
+{
+ my %opt = ( options => [], @_ );
+
+ my $r = run($Config{nm}, @{$opt{options}}, $opt{file});
+
+ if ($r->{didnotrun} or $r->{status}) {
+ die "cannot run $Config{nm}";
+ }
+
+ my %sym;
+
+ for (@{$r->{stdout}}) {
+ chomp;
+ my($adr, $fmt, $sym) = /^\s*([[:xdigit:]]+)?\s+([ABCDGINRSTUVW?-])\s+(\S+)\s*$/i
+ or die "cannot parse $Config{nm} output:\n[$_]\n";
+ $sym{$sym} = { format => $fmt };
+ $sym{$sym}{address} = $adr if defined $adr;
+ }
+
+ return \%sym;
+}
+
+sub get_apicheck_symbol_map
+{
+ my $r = run(qw(make apicheck.i));
+
+ if ($r->{didnotrun} or $r->{status}) {
+ die "cannot run make apicheck.i";
+ }
+
+ my $fh = IO::File->new('apicheck.i')
+ or die "cannot open apicheck.i: $!";
+
+ local $_;
+ my %symmap;
+ my $cur;
+
+ while (<$fh>) {
+ next if /^#/;
+ if (defined $cur) {
+ for my $sym (/\b([A-Za-z_]\w+)\b/g) {
+ $symmap{$sym}{$cur}++;
+ }
+ undef $cur if /^}$/;
+ }
+ else {
+ /_DPPP_test_(\w+)/ and $cur = $1;
+ }
+ }
+
+ return \%symmap;
+}
#
################################################################################
#
-# $Revision: 2 $
+# $Revision: 5 $
# $Author: mhx $
-# $Date: 2006/05/25 17:22:32 +0200 $
+# $Date: 2006/05/28 20:43:04 +0200 $
#
################################################################################
#
require 'devel/devtools.pl';
our %opt = (
- verbose => 0
+ check => 1,
+ verbose => 0,
);
-GetOptions(\%opt, qw( verbose )) or die pod2usage();
+GetOptions(\%opt, qw( check! verbose )) or die pod2usage();
identify();
}
my $T0 = time;
+my @args = ddverbose();
+push @args, '--nocheck' unless $opt{check};
print "\nBuilding baseline files...\n\n";
-unless (runperl('devel/mktodo', '--base', ddverbose())) {
+unless (runperl('devel/mktodo', '--base', @args)) {
print "\nSomething went wrong while building the baseline files.\n";
quit_now();
}
print "\nBuilding todo files...\n\n";
-unless (runperl('devel/mktodo', ddverbose())) {
+unless (runperl('devel/mktodo', @args)) {
print "\nSomething went wrong while building the baseline files.\n";
quit_now();
}
END
+__END__
+
+=head1 NAME
+
+regenerate - Automatically regeneate Devel::PPPort's API information
+
+=head1 SYNOPSIS
+
+ regenerate [options]
+
+ --nocheck don't recheck symbols that caused an error
+ --verbose show verbose output
+
+=head1 COPYRIGHT
+
+Copyright (c) 2006, Marcus Holland-Moritz.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+See L<Devel::PPPort> and L<HACKERS>.
+
+=cut
+
#
################################################################################
#
-# $Revision: 19 $
+# $Revision: 20 $
# $Author: mhx $
-# $Date: 2006/05/25 17:21:23 +0200 $
+# $Date: 2006/05/28 19:35:39 +0200 $
#
################################################################################
#
XCPT_RETHROW => ['dXCPT;'],
);
-my %postcode = (
- dSP => "some_global_var = !sp;",
- dMARK => "some_global_var = !mark;",
- dORIGMARK => "some_global_var = !origmark;",
- dAX => "some_global_var = !ax;",
- dITEMS => "some_global_var = !items;",
- dXSARGS => "some_global_var = ax && items;",
- NEWSV => "some_global_var = !arg1;",
- New => "some_global_var = !arg1;",
- Newc => "some_global_var = !arg1;",
- Newz => "some_global_var = !arg1;",
- dUNDERBAR => "(void) UNDERBAR;",
-);
-
my %ignore = (
map { ($_ => 1) } qw(
svtype
#define NO_XSLOCKS
#include "XSUB.h"
-#ifndef DPPP_APICHECK_NO_PPPORT_H
+#ifdef DPPP_APICHECK_NO_PPPORT_H
+
+/* This is just to avoid too many baseline failures with perls < 5.6.0 */
+
+#ifndef dTHX
+# define dTHX extern int Perl___notused
+#endif
+
+#else
#define NEED_eval_pv
#define NEED_grok_bin
#define NEED_vnewSVpvf
#define NEED_warner
-
#include "ppport.h"
#endif
-static int some_global_var;
-
static int VARarg1;
static char *VARarg2;
static double VARarg3;
$ret = $castvoid{$f->{name}} ? '(void) ' : '';
}
else {
- $ret = $ignorerv{$f->{name}} ? '(void) ' : "return ";
+ $stack .= " $rvt rval;\n";
+ $ret = $ignorerv{$f->{name}} ? '(void) ' : "rval = ";
}
my $aTHX_args = "$aTHX$args";
- my $post = '';
- if ($postcode{$f->{name}}) {
- $post = $postcode{$f->{name}};
- $post =~ s/^/ /g;
- $post = "\n$post";
- }
-
unless ($f->{flags}{'m'} and @arg == 0) {
$args = "($args)";
$aTHX_args = "($aTHX_args)";
$f->{cond} and print OUT "#if $f->{cond}\n";
print OUT <<END;
-$rvt _DPPP_test_$f->{name} (void)
+void _DPPP_test_$f->{name} (void)
{
dXSARGS;
$stack
-#ifdef $f->{name}
- if (some_global_var)
{
- $ret$f->{name}$args;$post
- }
+#ifdef $f->{name}
+ $ret$f->{name}$args;
#endif
-
- some_global_var = items && ax;
+ }
{
#ifdef $f->{name}
- $ret$final;$post
+ $ret$final;
#else
- $ret$Perl_$f->{name}$aTHX_args;$post
+ $ret$Perl_$f->{name}$aTHX_args;
#endif
}
}
G_VOID # E
HEf_SVKEY # E
HeHASH # U
-HeKEY # E
+HeKEY # U
HeKLEN # U
-HePV # E
-HeSVKEY # E
-HeSVKEY_force # E
-HeSVKEY_set # E
-HeVAL # E
+HePV # U
+HeSVKEY # U
+HeSVKEY_force # U
+HeSVKEY_set # U
+HeVAL # U
PUSHu # U
SvSetMagicSV # U
SvSetMagicSV_nosteal # U
SvUVX # U
SvUVx # U
XPUSHu # U
+block_gimme # E
+call_list # E
+cv_const_sv # E
+delimcpy # E
do_open # E (Perl_do_open)
+gv_autoload4 # E
gv_efullname3 # U
+gv_fetchmethod_autoload # E
gv_fullname3 # U
+gv_stashpvn # E
+hv_delayfree_ent # E
+hv_delete_ent # E
+hv_exists_ent # E
+hv_fetch_ent # E
+hv_free_ent # E
+hv_iterkeysv # E
+hv_ksplit # E
+hv_store_ent # E
+ibcmp_locale # E
+my_failure_exit # E
my_memcmp # U
-newRV_inc # E
+my_pclose # E (Perl_my_pclose)
+my_popen # E (Perl_my_popen)
+newRV_inc # U
+newRV_noinc # E
+rsignal # E
+rsignal_state # E
+save_I16 # E
+save_gp # E
+share_hek # E
+start_subparse # E (Perl_start_subparse)
sv_2uv # U
+sv_cmp_locale # E
+sv_derived_from # E
+sv_gets # E (Perl_sv_gets)
+sv_setuv # E
sv_taint # U
+sv_tainted # E
+sv_untaint # E
+sv_vcatpvfn # E
+sv_vsetpvfn # E
+unsharepvn # E
PERL_INT_MAX # added by devel/scanprov
PERL_INT_MIN # added by devel/scanprov
PERL_LONG_MAX # added by devel/scanprov
PL_sv_undef # E
PL_sv_yes # E
SvGETMAGIC # U
+do_binmode # E
+newCONSTSUB # E
+newSVpvn # E
+save_aelem # E
+save_helem # E
+sv_catpv_mg # E
sv_catpvn_mg # U
sv_catsv_mg # U
+sv_setiv_mg # E
+sv_setpv_mg # E
+sv_setpvn_mg # E
+sv_setsv_mg # E
+sv_setuv_mg # E
sv_usepvn_mg # U
AvFILLp # added by devel/scanprov
DEFSV # added by devel/scanprov
5.005000
PL_modglobal # E
+cx_dump # U
+debop # U
+debprofdump # U
+fbm_compile # E (Perl_fbm_compile)
+fbm_instr # E (Perl_fbm_instr)
+get_op_descs # E
+get_op_names # E
+init_stacks # E
+mg_length # E
+mg_size # E
+newHVhv # E
+new_stackinfo # E
+regdump # U
+regexec_flags # E
+regnext # E (Perl_regnext)
+runops_debug # E
+runops_standard # E
+save_hints # E
+save_iv # E (save_iv)
+screaminstr # E (Perl_screaminstr)
+sv_iv # E
+sv_peek # U
+sv_pvn # E
+sv_true # E
+sv_uv # E
END_EXTERN_C # added by devel/scanprov
EXTERN_C # added by devel/scanprov
NOOP # added by devel/scanprov
5.005030
POPpx # E
+get_vtbl # E
+save_generic_svref # E
5.006000
-Gv_AMupdate # E (Perl_Gv_AMupdate)
POPn # E
PUSHn # E
SvIOK_UV # U
SvNV_set # E
SvNVx # E
SvPOK_only_UTF8 # U
-SvPV_nolen # E
-SvPVbyte # E
-SvPVbyte_nolen # E
-SvPVbytex # E
-SvPVbytex_force # E
-SvPVutf8 # E
-SvPVutf8_force # E
-SvPVutf8_nolen # E
-SvPVutf8x # E
-SvPVutf8x_force # E
+SvPV_nolen # U
+SvPVbyte # U
+SvPVbyte_nolen # U
+SvPVbytex # U
+SvPVbytex_force # U
+SvPVutf8 # U
+SvPVutf8_force # U
+SvPVutf8_nolen # U
+SvPVutf8x # U
+SvPVutf8x_force # U
SvUTF8 # U
SvUTF8_off # U
SvUTF8_on # U
XPUSHn # E
XSRETURN_NV # E
XST_mNV # E
-amagic_call # E (Perl_amagic_call)
-av_clear # E (Perl_av_clear)
av_delete # E
av_exists # E
-av_extend # E (Perl_av_extend)
-av_fetch # E (Perl_av_fetch)
-av_fill # E (Perl_av_fill)
-av_len # E (Perl_av_len)
-av_make # E (Perl_av_make)
-av_pop # E (Perl_av_pop)
-av_push # E (Perl_av_push)
-av_shift # E (Perl_av_shift)
-av_store # E (Perl_av_store)
-av_undef # E (Perl_av_undef)
-av_unshift # E (Perl_av_unshift)
-block_gimme # E (Perl_block_gimme)
call_argv # E (perl_call_argv)
call_atexit # E
-call_list # E (Perl_call_list)
call_method # E (perl_call_method)
call_pv # E (perl_call_pv)
call_sv # E (perl_call_sv)
cast_ulong # E
cast_uv # E (cast_uv)
croak # E (Perl_croak)
-cv_const_sv # E (Perl_cv_const_sv)
-cv_undef # E (Perl_cv_undef)
-cx_dump # E (Perl_cx_dump)
-debop # E (Perl_debop)
-debprofdump # E (Perl_debprofdump)
-delimcpy # E (Perl_delimcpy)
die # E (Perl_die)
-do_binmode # E (Perl_do_binmode)
-do_close # E (Perl_do_close)
do_gv_dump # E
do_gvgv_dump # E
do_hv_dump # E
-do_join # E (Perl_do_join)
do_magic_dump # E
do_op_dump # E
do_open9 # E
do_pmop_dump # E
-do_sprintf # E (Perl_do_sprintf)
do_sv_dump # E
-dounwind # E (Perl_dounwind)
-dowantarray # E (Perl_dowantarray)
-dump_all # E
-dump_eval # E
-dump_form # E
+dump_all # U
+dump_eval # U
+dump_form # U
dump_indent # E
-dump_packsubs # E
-dump_sub # E
+dump_packsubs # U
+dump_sub # U
dump_vindent # E
eval_pv # E (perl_eval_pv)
eval_sv # E (perl_eval_sv)
-fbm_compile # E (Perl_fbm_compile)
-fbm_instr # E (Perl_fbm_instr)
-filter_add # E (Perl_filter_add)
-filter_del # E (Perl_filter_del)
-filter_read # E (Perl_filter_read)
form # E (Perl_form)
-free_tmps # E (Perl_free_tmps)
get_av # E (perl_get_av)
-get_context # E
+get_context # U
get_cv # E (perl_get_cv)
get_hv # E (perl_get_hv)
-get_op_descs # E (Perl_get_op_descs)
-get_op_names # E (Perl_get_op_names)
get_ppaddr # E
get_sv # E (perl_get_sv)
-get_vtbl # E (Perl_get_vtbl)
-gp_free # E (Perl_gp_free)
-gp_ref # E (Perl_gp_ref)
-gv_AVadd # E (Perl_gv_AVadd)
-gv_HVadd # E (Perl_gv_HVadd)
-gv_IOadd # E (Perl_gv_IOadd)
-gv_autoload4 # E (Perl_gv_autoload4)
-gv_check # E (Perl_gv_check)
gv_dump # E
-gv_efullname # E (Perl_gv_efullname)
-gv_fetchfile # E (Perl_gv_fetchfile)
-gv_fetchmeth # E (Perl_gv_fetchmeth)
-gv_fetchmethod_autoload # E (Perl_gv_fetchmethod_autoload)
-gv_fetchpv # E (Perl_gv_fetchpv)
-gv_fullname # E (Perl_gv_fullname)
-gv_init # E (Perl_gv_init)
-gv_stashpv # E (Perl_gv_stashpv)
-gv_stashpvn # E (Perl_gv_stashpvn)
-gv_stashsv # E (Perl_gv_stashsv)
-hv_clear # E (Perl_hv_clear)
-hv_delayfree_ent # E (Perl_hv_delayfree_ent)
-hv_delete # E (Perl_hv_delete)
-hv_delete_ent # E (Perl_hv_delete_ent)
-hv_exists # E (Perl_hv_exists)
-hv_exists_ent # E (Perl_hv_exists_ent)
-hv_fetch # E (Perl_hv_fetch)
-hv_fetch_ent # E (Perl_hv_fetch_ent)
-hv_free_ent # E (Perl_hv_free_ent)
-hv_iterinit # E (Perl_hv_iterinit)
-hv_iterkey # E (Perl_hv_iterkey)
-hv_iterkeysv # E (Perl_hv_iterkeysv)
-hv_iternextsv # E (Perl_hv_iternextsv)
-hv_iterval # E (Perl_hv_iterval)
-hv_ksplit # E (Perl_hv_ksplit)
-hv_store # E (Perl_hv_store)
-hv_store_ent # E (Perl_hv_store_ent)
-hv_undef # E (Perl_hv_undef)
-ibcmp # E (Perl_ibcmp)
-ibcmp_locale # E (Perl_ibcmp_locale)
init_i18nl10n # E (perl_init_i18nl10n)
init_i18nl14n # E (perl_init_i18nl14n)
-init_stacks # E (Perl_init_stacks)
-instr # E (Perl_instr)
is_uni_alnum # E
is_uni_alnum_lc # E
is_uni_alnumc # E
is_utf8_space # E
is_utf8_upper # E
is_utf8_xdigit # E
-leave_scope # E (Perl_leave_scope)
load_module # E
-looks_like_number # E (Perl_looks_like_number)
magic_dump # E
-markstack_grow # E (Perl_markstack_grow)
mess # E (Perl_mess)
-mg_clear # E (Perl_mg_clear)
-mg_copy # E (Perl_mg_copy)
-mg_find # E (Perl_mg_find)
-mg_free # E (Perl_mg_free)
-mg_get # E (Perl_mg_get)
-mg_length # E (Perl_mg_length)
-mg_magical # E (Perl_mg_magical)
-mg_set # E (Perl_mg_set)
-mg_size # E (Perl_mg_size)
-moreswitches # E (Perl_moreswitches)
my_atof # E
-my_exit # E (Perl_my_exit)
-my_failure_exit # E (Perl_my_failure_exit)
my_fflush_all # E
-my_lstat # E (Perl_my_lstat)
-my_pclose # E (Perl_my_pclose)
-my_popen # E (Perl_my_popen)
-my_setenv # E (Perl_my_setenv)
-my_stat # E (Perl_my_stat)
newANONATTRSUB # E
-newANONHASH # E (Perl_newANONHASH)
-newANONLIST # E (Perl_newANONLIST)
-newANONSUB # E (Perl_newANONSUB)
-newASSIGNOP # E (Perl_newASSIGNOP)
newATTRSUB # E
-newAV # E (Perl_newAV)
-newAVREF # E (Perl_newAVREF)
-newBINOP # E (Perl_newBINOP)
-newCONDOP # E (Perl_newCONDOP)
-newCONSTSUB # E (Perl_newCONSTSUB)
-newCVREF # E (Perl_newCVREF)
-newFOROP # E (Perl_newFOROP)
-newGVOP # E (Perl_newGVOP)
-newGVREF # E (Perl_newGVREF)
-newGVgen # E (Perl_newGVgen)
-newHV # E (Perl_newHV)
-newHVREF # E (Perl_newHVREF)
-newHVhv # E (Perl_newHVhv)
-newIO # E (Perl_newIO)
-newLISTOP # E (Perl_newLISTOP)
-newLOGOP # E (Perl_newLOGOP)
-newLOOPEX # E (Perl_newLOOPEX)
-newLOOPOP # E (Perl_newLOOPOP)
-newNULLLIST # E (Perl_newNULLLIST)
-newOP # E (Perl_newOP)
newPADOP # E
-newPMOP # E (Perl_newPMOP)
-newPROG # E (Perl_newPROG)
-newPVOP # E (Perl_newPVOP)
-newRANGE # E (Perl_newRANGE)
-newRV # E (Perl_newRV)
-newRV_noinc # E (Perl_newRV_noinc)
-newSLICEOP # E (Perl_newSLICEOP)
-newSTATEOP # E (Perl_newSTATEOP)
-newSUB # E (Perl_newSUB)
-newSV # E (Perl_newSV)
-newSVOP # E (Perl_newSVOP)
-newSVREF # E (Perl_newSVREF)
-newSViv # E (Perl_newSViv)
newSVnv # E (Perl_newSVnv)
-newSVpv # E (Perl_newSVpv)
newSVpvf # E (Perl_newSVpvf)
-newSVpvn # E (Perl_newSVpvn)
-newSVrv # E (Perl_newSVrv)
-newSVsv # E (Perl_newSVsv)
newSVuv # E
-newUNOP # E (Perl_newUNOP)
newXS # E (Perl_newXS)
newXSproto # E
new_collate # E (perl_new_collate)
new_ctype # E (perl_new_ctype)
new_numeric # E (perl_new_numeric)
-new_stackinfo # E (Perl_new_stackinfo)
-ninstr # E (Perl_ninstr)
op_dump # E
-op_free # E (Perl_op_free)
perl_parse # E (perl_parse)
-pmflag # E (Perl_pmflag)
pmop_dump # E
-pop_scope # E (Perl_pop_scope)
-pregcomp # E (Perl_pregcomp)
-pregexec # E (Perl_pregexec)
-pregfree # E (Perl_pregfree)
-push_scope # E (Perl_push_scope)
pv_display # E
re_intuit_start # E
re_intuit_string # E
-regdump # E (Perl_regdump)
-regexec_flags # E (Perl_regexec_flags)
reginitcolors # E
-regnext # E (Perl_regnext)
-repeatcpy # E (Perl_repeatcpy)
require_pv # E (perl_require_pv)
-rninstr # E (Perl_rninstr)
-rsignal # E (Perl_rsignal)
-rsignal_state # E (Perl_rsignal_state)
-runops_debug # E (Perl_runops_debug)
-runops_standard # E (Perl_runops_standard)
-safesyscalloc # E
+safesyscalloc # U
safesysfree # U
-safesysmalloc # E
-safesysrealloc # E
-save_I16 # E (Perl_save_I16)
-save_I32 # E (Perl_save_I32)
+safesysmalloc # U
+safesysrealloc # U
save_I8 # E
-save_aelem # E (Perl_save_aelem)
save_alloc # E
-save_aptr # E (Perl_save_aptr)
-save_ary # E (Perl_save_ary)
-save_clearsv # E (Perl_save_clearsv)
-save_delete # E (Perl_save_delete)
save_destructor # E (Perl_save_destructor)
save_destructor_x # E
-save_freepv # E (Perl_save_freepv)
-save_freesv # E (Perl_save_freesv)
-save_generic_svref # E (Perl_save_generic_svref)
-save_gp # E (Perl_save_gp)
-save_hash # E (Perl_save_hash)
-save_helem # E (Perl_save_helem)
-save_hints # E (Perl_save_hints)
-save_hptr # E (Perl_save_hptr)
-save_int # E (Perl_save_int)
-save_item # E (Perl_save_item)
-save_iv # E (Perl_save_iv)
-save_list # E (Perl_save_list)
-save_long # E (Perl_save_long)
-save_nogv # E (Perl_save_nogv)
-save_pptr # E (Perl_save_pptr)
save_re_context # E
-save_scalar # E (Perl_save_scalar)
-save_sptr # E (Perl_save_sptr)
-save_svref # E (Perl_save_svref)
save_vptr # E
-savepv # E (Perl_savepv)
-savepvn # E (Perl_savepvn)
-savestack_grow # E (Perl_savestack_grow)
scan_bin # E
scan_hex # E (Perl_scan_hex)
scan_oct # E (Perl_scan_oct)
-screaminstr # E (Perl_screaminstr)
set_context # U
set_numeric_local # E (perl_set_numeric_local)
set_numeric_radix # E
set_numeric_standard # E (perl_set_numeric_standard)
-share_hek # E (Perl_share_hek)
-stack_grow # E (Perl_stack_grow)
-start_subparse # E (Perl_start_subparse)
str_to_version # E
-sv_2bool # E (Perl_sv_2bool)
-sv_2cv # E (Perl_sv_2cv)
-sv_2io # E (Perl_sv_2io)
-sv_2mortal # E (Perl_sv_2mortal)
sv_2nv # E (Perl_sv_2nv)
-sv_2pv_nolen # E
+sv_2pv_nolen # U
sv_2pvbyte # E
-sv_2pvbyte_nolen # E
+sv_2pvbyte_nolen # U
sv_2pvutf8 # E
-sv_2pvutf8_nolen # E
-sv_backoff # E (Perl_sv_backoff)
-sv_bless # E (Perl_sv_bless)
-sv_catpv # E (Perl_sv_catpv)
-sv_catpv_mg # E (Perl_sv_catpv_mg)
+sv_2pvutf8_nolen # U
sv_catpvf # E (Perl_sv_catpvf)
sv_catpvf_mg # E (Perl_sv_catpvf_mg)
-sv_chop # E (Perl_sv_chop)
-sv_clear # E (Perl_sv_clear)
-sv_cmp # E (Perl_sv_cmp)
-sv_cmp_locale # E (Perl_sv_cmp_locale)
-sv_collxfrm # E (Perl_sv_collxfrm)
-sv_dec # E (Perl_sv_dec)
-sv_derived_from # E (Perl_sv_derived_from)
-sv_dump # E (Perl_sv_dump)
-sv_eq # E (Perl_sv_eq)
sv_force_normal # U
-sv_free # E (Perl_sv_free)
-sv_gets # E (Perl_sv_gets)
-sv_grow # E (Perl_sv_grow)
-sv_inc # E (Perl_sv_inc)
-sv_insert # E (Perl_sv_insert)
-sv_isa # E (Perl_sv_isa)
-sv_isobject # E (Perl_sv_isobject)
-sv_iv # E (Perl_sv_iv)
-sv_len # E (Perl_sv_len)
sv_len_utf8 # E
-sv_magic # E (Perl_sv_magic)
-sv_mortalcopy # E (Perl_sv_mortalcopy)
-sv_newmortal # E (Perl_sv_newmortal)
-sv_newref # E (Perl_sv_newref)
sv_nv # E (Perl_sv_nv)
-sv_peek # E (Perl_sv_peek)
sv_pos_b2u # E
sv_pos_u2b # E
-sv_pv # E
-sv_pvbyte # E
+sv_pv # U
+sv_pvbyte # U
sv_pvbyten # E
sv_pvbyten_force # E
-sv_pvn # E (Perl_sv_pvn)
-sv_pvutf8 # E
+sv_pvutf8 # U
sv_pvutf8n # E
sv_pvutf8n_force # E
-sv_reftype # E (Perl_sv_reftype)
-sv_replace # E (Perl_sv_replace)
-sv_report_used # E (Perl_sv_report_used)
-sv_reset # E (Perl_sv_reset)
sv_rvweaken # E
-sv_setiv # E (Perl_sv_setiv)
-sv_setiv_mg # E (Perl_sv_setiv_mg)
sv_setnv # E (Perl_sv_setnv)
sv_setnv_mg # E (Perl_sv_setnv_mg)
-sv_setpv # E (Perl_sv_setpv)
-sv_setpv_mg # E (Perl_sv_setpv_mg)
sv_setpvf # E (Perl_sv_setpvf)
sv_setpvf_mg # E (Perl_sv_setpvf_mg)
-sv_setpvn # E (Perl_sv_setpvn)
-sv_setpvn_mg # E (Perl_sv_setpvn_mg)
-sv_setref_iv # E (Perl_sv_setref_iv)
sv_setref_nv # E (Perl_sv_setref_nv)
-sv_setref_pv # E (Perl_sv_setref_pv)
-sv_setref_pvn # E (Perl_sv_setref_pvn)
-sv_setsv_mg # E (Perl_sv_setsv_mg)
-sv_setuv # E (Perl_sv_setuv)
-sv_setuv_mg # E (Perl_sv_setuv_mg)
-sv_tainted # E (Perl_sv_tainted)
-sv_true # E (Perl_sv_true)
-sv_unmagic # E (Perl_sv_unmagic)
-sv_untaint # E (Perl_sv_untaint)
-sv_upgrade # E (Perl_sv_upgrade)
sv_utf8_decode # E
sv_utf8_downgrade # E
sv_utf8_encode # E
-sv_uv # E (Perl_sv_uv)
sv_vcatpvf # E
sv_vcatpvf_mg # E
-sv_vcatpvfn # E (Perl_sv_vcatpvfn)
sv_vsetpvf # E
sv_vsetpvf_mg # E
-sv_vsetpvfn # E (Perl_sv_vsetpvfn)
swash_init # E
-taint_env # E (Perl_taint_env)
-taint_proper # E (Perl_taint_proper)
tmps_grow # E
to_uni_lower_lc # E
to_uni_title_lc # E
to_uni_upper_lc # E
-unsharepvn # E (Perl_unsharepvn)
utf8_distance # E
utf8_hop # E
vcroak # E
vwarner # E
warn # E (Perl_warn)
warner # E
-whichsig # E (Perl_whichsig)
CopFILE # added by devel/scanprov
CopFILEAV # added by devel/scanprov
CopFILEGV # added by devel/scanprov
5.006001
-SvGAMAGIC # E
+SvGAMAGIC # U
apply_attrs_string # U
-bytes_to_utf8 # E
+bytes_to_utf8 # U
gv_efullname4 # U
gv_fullname4 # U
is_utf8_string # U
save_generic_pvref # U
utf16_to_utf8 # E (Perl_utf16_to_utf8)
utf16_to_utf8_reversed # E (Perl_utf16_to_utf8_reversed)
-utf8_to_bytes # E
+utf8_to_bytes # U
NVef # added by devel/scanprov
NVff # added by devel/scanprov
NVgf # added by devel/scanprov
5.007001
POPpbytex # E
SvUOK # U
-bytes_from_utf8 # E
+bytes_from_utf8 # U
despatch_signals # U
do_openn # U
-gv_handler # E
+gv_handler # U
is_lvalue_sub # U
-my_popen_list # E
-newSVpvn_share # E
+my_popen_list # U
+newSVpvn_share # U
save_mortalizesv # U
save_padsv # U
scan_num # E (Perl_scan_num)
sv_force_normal_flags # U
-sv_setref_uv # E
+sv_setref_uv # U
sv_unref_flags # U
sv_utf8_upgrade # E (Perl_sv_utf8_upgrade)
utf8_length # U
utf8_to_uvchr # U
utf8_to_uvuni # U
utf8n_to_uvuni # U
-uvuni_to_utf8 # E
+uvuni_to_utf8 # U
PTR2ul # added by devel/scanprov
UVXf # added by devel/scanprov
5.007002
-SvPV_force_nomg # E
-SvPV_nomg # E
-calloc # E
+SvPV_force_nomg # U
+SvPV_nomg # U
+calloc # U
dAX # E
dITEMS # E
getcwd_sv # U
grok_number # U
grok_numeric_radix # U
init_tm # U
-malloc # E
+malloc # U
mfree # U
mini_mktime # U
-my_atof2 # E
-my_strftime # E
+my_atof2 # U
+my_strftime # U
op_null # U
-realloc # E
-sv_2pv_flags # E
+realloc # U
+sv_2pv_flags # U
sv_catpvn_flags # U
sv_catpvn_nomg # U
sv_catsv_flags # U
sv_catsv_nomg # U
-sv_pvn_force_flags # E
+sv_pvn_force_flags # U
sv_setsv_flags # U
sv_setsv_nomg # U
sv_utf8_upgrade_flags # U
5.007003
-PerlIO_clearerr # E (PerlIO_clearerr)
-PerlIO_close # E (PerlIO_close)
-PerlIO_eof # E (PerlIO_eof)
-PerlIO_error # E (PerlIO_error)
-PerlIO_fileno # E (PerlIO_fileno)
-PerlIO_fill # E (PerlIO_fill)
-PerlIO_flush # E (PerlIO_flush)
-PerlIO_get_base # E (PerlIO_get_base)
-PerlIO_get_bufsiz # E (PerlIO_get_bufsiz)
-PerlIO_get_cnt # E (PerlIO_get_cnt)
-PerlIO_get_ptr # E (PerlIO_get_ptr)
-PerlIO_read # E (PerlIO_read)
-PerlIO_seek # E (PerlIO_seek)
-PerlIO_set_cnt # E (PerlIO_set_cnt)
-PerlIO_set_ptrcnt # E (PerlIO_set_ptrcnt)
-PerlIO_setlinebuf # E (PerlIO_setlinebuf)
-PerlIO_stderr # E (PerlIO_stderr)
-PerlIO_stdin # E (PerlIO_stdin)
-PerlIO_stdout # E (PerlIO_stdout)
-PerlIO_tell # E (PerlIO_tell)
-PerlIO_unread # E (PerlIO_unread)
-PerlIO_write # E (PerlIO_write)
-SvLOCK # E
-SvSHARE # E
-SvUNLOCK # E
-atfork_lock # E
-atfork_unlock # E
-custom_op_desc # E
-custom_op_name # E
+PerlIO_clearerr # U (PerlIO_clearerr)
+PerlIO_close # U (PerlIO_close)
+PerlIO_eof # U (PerlIO_eof)
+PerlIO_error # U (PerlIO_error)
+PerlIO_fileno # U (PerlIO_fileno)
+PerlIO_fill # U (PerlIO_fill)
+PerlIO_flush # U (PerlIO_flush)
+PerlIO_get_base # U (PerlIO_get_base)
+PerlIO_get_bufsiz # U (PerlIO_get_bufsiz)
+PerlIO_get_cnt # U (PerlIO_get_cnt)
+PerlIO_get_ptr # U (PerlIO_get_ptr)
+PerlIO_read # U (PerlIO_read)
+PerlIO_seek # U (PerlIO_seek)
+PerlIO_set_cnt # U (PerlIO_set_cnt)
+PerlIO_set_ptrcnt # U (PerlIO_set_ptrcnt)
+PerlIO_setlinebuf # U (PerlIO_setlinebuf)
+PerlIO_stderr # U (PerlIO_stderr)
+PerlIO_stdin # U (PerlIO_stdin)
+PerlIO_stdout # U (PerlIO_stdout)
+PerlIO_tell # U (PerlIO_tell)
+PerlIO_unread # U (PerlIO_unread)
+PerlIO_write # U (PerlIO_write)
+SvLOCK # U
+SvSHARE # U
+SvUNLOCK # U
+atfork_lock # U
+atfork_unlock # U
+custom_op_desc # U
+custom_op_name # U
deb # U
debstack # U
debstackptrs # U
-grok_bin # E
-grok_hex # E
-grok_oct # E
-gv_fetchmeth_autoload # E
-ibcmp_utf8 # E
-my_fork # E
-my_socketpair # E
-pack_cat # E
+grok_bin # U
+grok_hex # U
+grok_oct # U
+gv_fetchmeth_autoload # U
+ibcmp_utf8 # U
+my_fork # U
+my_socketpair # U
+pack_cat # U
perl_destruct # E (perl_destruct)
-pv_uni_display # E
-save_shared_pvref # E
-savesharedpv # E
-sortsv # E
-sv_copypv # E
-sv_magicext # E
-sv_nolocking # E
-sv_nosharing # E
-sv_pvn_nomg # E
-sv_recode_to_utf8 # E
-sv_uni_display # E
-to_uni_fold # E
+pv_uni_display # U
+save_shared_pvref # U
+savesharedpv # U
+sortsv # U
+sv_copypv # U
+sv_magicext # U
+sv_nolocking # U
+sv_nosharing # U
+sv_pvn_nomg # U
+sv_recode_to_utf8 # U
+sv_uni_display # U
+to_uni_fold # U
to_uni_lower # E (Perl_to_uni_lower)
to_uni_title # E (Perl_to_uni_title)
to_uni_upper # E (Perl_to_uni_upper)
-to_utf8_case # E
-to_utf8_fold # E
+to_utf8_case # U
+to_utf8_fold # U
to_utf8_lower # E (Perl_to_utf8_lower)
to_utf8_title # E (Perl_to_utf8_title)
to_utf8_upper # E (Perl_to_utf8_upper)
-unpack_str # E
-uvchr_to_utf8_flags # E
-uvuni_to_utf8_flags # E
+unpack_str # U
+uvchr_to_utf8_flags # U
+uvuni_to_utf8_flags # U
vdeb # U
IS_NUMBER_NAN # added by devel/scanprov
MY_CXT # added by devel/scanprov
5.008000
Poison # E
-hv_iternext_flags # E
-hv_store_flags # E
+hv_iternext_flags # U
+hv_store_flags # U
is_utf8_idcont # U
nothreadhook # U
WARN_LAYER # added by devel/scanprov
packlist # U
save_bool # U
savestack_grow_cnt # U
-scan_vstring # E
+scan_vstring # U
seed # U
sv_cat_decode # U
sv_compile_2op # E (Perl_sv_compile_2op)
5.009000
-new_version # E
+new_version # U
save_set_svflags # U
-upg_version # E
+upg_version # U
vcmp # U
-vnumify # E
-vstringify # E
+vnumify # U
+vstringify # U
WARN_ASSERTIONS # added by devel/scanprov
SvUV_nomg # U
hv_assert # U
hv_clear_placeholders # U
-hv_scalar # E
+hv_scalar # U
scan_version # E (Perl_scan_version)
sv_2iv_flags # U
sv_2uv_flags # U
CopyD # E
MoveD # E
PUSHmortal # E
-SvPVbyte_force # E
+SvPVbyte_force # U
UNDERBAR # E
XCPT_CATCH # E
XCPT_RETHROW # E
dUNDERBAR # E
dXCPT # E
find_rundefsvoffset # U
-gv_fetchpvn_flags # E
-gv_fetchsv # E
+gv_fetchpvn_flags # U
+gv_fetchsv # U
mPUSHi # U
mPUSHn # U
mPUSHp # U
mXPUSHu # U
op_refcnt_lock # U
op_refcnt_unlock # U
-savesvpv # E
-vnormal # E
+savesvpv # U
+vnormal # U
MY_CXT_CLONE # added by devel/scanprov
SvRV_set # U
SvSTASH_set # U
SvUV_set # U
-av_arylen_p # E
+av_arylen_p # U
ckwarn # U
ckwarn_d # U
csighandler # E (Perl_csighandler)
dAXMARK # E
dMULTICALL # E
-doref # E
-gv_const_sv # E
-gv_stashpvs # E
-hv_eiter_p # E
+doref # U
+gv_const_sv # U
+gv_stashpvs # U
+hv_eiter_p # U
hv_eiter_set # U
-hv_fetchs # E
+hv_fetchs # U
hv_name_set # U
hv_placeholders_get # U
-hv_placeholders_p # E
+hv_placeholders_p # U
hv_placeholders_set # U
-hv_riter_p # E
+hv_riter_p # U
hv_riter_set # U
is_utf8_string_loclen # U
my_sprintf # U
-newGIVENOP # E
-newSVhek # E
-newSVpvs # E
-newSVpvs_share # E
-newWHENOP # E
+newGIVENOP # U
+newSVhek # U
+newSVpvs # U
+newSVpvs_share # U
+newWHENOP # U
newWHILEOP # E (Perl_newWHILEOP)
-ref # E (Perl_ref)
-savepvs # E
+ref # U (Perl_ref)
+savepvs # U
sortsv_flags # U
sv_catpvs # U
vverify # U
MULTICALL # E
POP_MULTICALL # E
PUSH_MULTICALL # E
-PerlIO_context_layers # E
+PerlIO_context_layers # U
PoisonFree # E
PoisonNew # E
PoisonWith # E
-SvREFCNT_inc_NN # E
-SvREFCNT_inc_simple # E
-SvREFCNT_inc_simple_NN # E
+SvREFCNT_inc_NN # U
+SvREFCNT_inc_simple # U
+SvREFCNT_inc_simple_NN # U
SvREFCNT_inc_simple_void # U
SvREFCNT_inc_simple_void_NN # U
SvREFCNT_inc_void # U
SvREFCNT_inc_void_NN # U
gv_name_set # U
-hv_stores # E
+hv_stores # U
my_snprintf # U
my_vsnprintf # U
-newXS_flags # E
+newXS_flags # U
pad_sv # U
regclass_swash # E (Perl_regclass_swash)
stashpv_hvname_match # U
################################################################################
##
-## $Revision: 3 $
+## $Revision: 5 $
## $Author: mhx $
-## $Date: 2006/05/24 09:25:00 +0200 $
+## $Date: 2006/05/28 20:43:18 +0200 $
##
################################################################################
##
=tests plan => 0
-my @pods = qw( HACKERS PPPort.pm ppport.h );
+my @pods = qw( HACKERS PPPort.pm ppport.h devel/regenerate devel/buildperl.pl );
my $reason = '';
G_VOID # E
HEf_SVKEY # E
HeHASH # U
-HeKEY # E
+HeKEY # U
HeKLEN # U
-HePV # E
-HeSVKEY # E
-HeSVKEY_force # E
-HeSVKEY_set # E
-HeVAL # E
+HePV # U
+HeSVKEY # U
+HeSVKEY_force # U
+HeSVKEY_set # U
+HeVAL # U
SvSetMagicSV # U
SvSetMagicSV_nosteal # U
SvSetSV_nosteal # U
SvTAINTED_on # U
block_gimme # U
call_list # U
-cv_const_sv # E
-delimcpy # E
+cv_const_sv # U
+delimcpy # U
do_open # E (Perl_do_open)
-form # E
-gv_autoload4 # E
+form # U
+gv_autoload4 # U
gv_efullname3 # U
-gv_fetchmethod_autoload # E
+gv_fetchmethod_autoload # U
gv_fullname3 # U
hv_delayfree_ent # U
-hv_delete_ent # E
+hv_delete_ent # U
hv_exists_ent # U
-hv_fetch_ent # E
+hv_fetch_ent # U
hv_free_ent # U
-hv_iterkeysv # E
+hv_iterkeysv # U
hv_ksplit # U
-hv_store_ent # E
+hv_store_ent # U
ibcmp_locale # U
my_failure_exit # U
my_memcmp # U
my_pclose # E (Perl_my_pclose)
my_popen # E (Perl_my_popen)
-newSVpvf # E
+newSVpvf # U
rsignal # E
rsignal_state # E
save_I16 # U
sv_vsetpvf_mg # U
sv_vsetpvfn # U
unsharepvn # U
-vnewSVpvf # E
+vnewSVpvf # U
warner # U
5.005000
PL_modglobal # E
cx_dump # U
-debop # E
+debop # U
debprofdump # U
fbm_compile # E (Perl_fbm_compile)
fbm_instr # E (Perl_fbm_instr)
-get_op_descs # E
-get_op_names # E
+get_op_descs # U
+get_op_names # U
init_stacks # U
mg_length # U
mg_size # U
-newHVhv # E
+newHVhv # U
new_stackinfo # E
-regdump # E
+regdump # U
regexec_flags # U
regnext # E (Perl_regnext)
runops_debug # U
5.005030
POPpx # E
-get_vtbl # E
+get_vtbl # U
save_generic_svref # U
SvIOK_notUV # U
SvIOK_only_UV # U
SvPOK_only_UTF8 # U
-SvPVbyte_nolen # E
-SvPVbytex # E
-SvPVbytex_force # E
-SvPVutf8 # E
-SvPVutf8_force # E
-SvPVutf8_nolen # E
-SvPVutf8x # E
-SvPVutf8x_force # E
+SvPVbyte_nolen # U
+SvPVbytex # U
+SvPVbytex_force # U
+SvPVutf8 # U
+SvPVutf8_force # U
+SvPVutf8_nolen # U
+SvPVutf8x # U
+SvPVutf8x_force # U
SvUTF8 # U
SvUTF8_off # U
SvUTF8_on # U
-av_delete # E
+av_delete # U
av_exists # U
call_atexit # E
cast_i32 # U (cast_i32)
do_sv_dump # U
dump_all # U
dump_eval # U
-dump_form # E
+dump_form # U
dump_indent # U
-dump_packsubs # E
-dump_sub # E
+dump_packsubs # U
+dump_sub # U
dump_vindent # U
-get_context # E
+get_context # U
get_ppaddr # E
gv_dump # U
init_i18nl10n # U (perl_init_i18nl10n)
mess # E (Perl_mess)
my_atof # U
my_fflush_all # U
-newANONATTRSUB # E
-newATTRSUB # E
-newPADOP # E
+newANONATTRSUB # U
+newATTRSUB # U
+newPADOP # U
newXS # E (Perl_newXS)
newXSproto # E
new_collate # U (perl_new_collate)
op_dump # U
perl_parse # E (perl_parse)
pmop_dump # U
-pv_display # E
-re_intuit_start # E
-re_intuit_string # E
+pv_display # U
+re_intuit_start # U
+re_intuit_string # U
reginitcolors # U
require_pv # U (perl_require_pv)
-safesyscalloc # E
+safesyscalloc # U
safesysfree # U
-safesysmalloc # E
-safesysrealloc # E
+safesysmalloc # U
+safesysrealloc # U
save_I8 # U
save_alloc # U
save_destructor # E (Perl_save_destructor)
set_numeric_radix # U
set_numeric_standard # U (perl_set_numeric_standard)
str_to_version # U
-sv_2pvutf8 # E
-sv_2pvutf8_nolen # E
+sv_2pvutf8 # U
+sv_2pvutf8_nolen # U
sv_force_normal # U
sv_len_utf8 # U
sv_pos_b2u # U
sv_pos_u2b # U
-sv_pv # E
-sv_pvbyte # E
-sv_pvbyten # E
-sv_pvbyten_force # E
-sv_pvutf8 # E
-sv_pvutf8n # E
-sv_pvutf8n_force # E
-sv_rvweaken # E
+sv_pv # U
+sv_pvbyte # U
+sv_pvbyten # U
+sv_pvbyten_force # U
+sv_pvutf8 # U
+sv_pvutf8n # U
+sv_pvutf8n_force # U
+sv_rvweaken # U
sv_utf8_decode # U
sv_utf8_downgrade # U
sv_utf8_encode # U
-swash_init # E
+swash_init # U
tmps_grow # U
to_uni_lower_lc # U
to_uni_title_lc # U
to_uni_upper_lc # U
utf8_distance # U
-utf8_hop # E
+utf8_hop # U
vcroak # U
-vform # E
+vform # U
vload_module # U
-vmess # E
+vmess # U
vwarn # U
vwarner # U
5.006001
-SvGAMAGIC # E
+SvGAMAGIC # U
apply_attrs_string # U
-bytes_to_utf8 # E
+bytes_to_utf8 # U
gv_efullname4 # U
gv_fullname4 # U
is_utf8_string # U
save_generic_pvref # U
utf16_to_utf8 # E (Perl_utf16_to_utf8)
utf16_to_utf8_reversed # E (Perl_utf16_to_utf8_reversed)
-utf8_to_bytes # E
+utf8_to_bytes # U
5.007001
POPpbytex # E
SvUOK # U
-bytes_from_utf8 # E
+bytes_from_utf8 # U
despatch_signals # U
do_openn # U
-gv_handler # E
+gv_handler # U
is_lvalue_sub # U
-my_popen_list # E
-newSVpvn_share # E
+my_popen_list # U
+newSVpvn_share # U
save_mortalizesv # U
save_padsv # U
scan_num # E (Perl_scan_num)
sv_force_normal_flags # U
-sv_setref_uv # E
+sv_setref_uv # U
sv_unref_flags # U
sv_utf8_upgrade # E (Perl_sv_utf8_upgrade)
utf8_length # U
utf8_to_uvchr # U
utf8_to_uvuni # U
utf8n_to_uvuni # U
-uvuni_to_utf8 # E
+uvuni_to_utf8 # U
5.007002
-calloc # E
+calloc # U
getcwd_sv # U
init_tm # U
-malloc # E
+malloc # U
mfree # U
mini_mktime # U
-my_atof2 # E
-my_strftime # E
+my_atof2 # U
+my_strftime # U
op_null # U
-realloc # E
-sv_2pv_flags # E
+realloc # U
+sv_2pv_flags # U
sv_catpvn_flags # U
sv_catsv_flags # U
-sv_pvn_force_flags # E
+sv_pvn_force_flags # U
sv_setsv_flags # U
sv_utf8_upgrade_flags # U
swash_fetch # E (Perl_swash_fetch)
5.007003
-PerlIO_clearerr # E (PerlIO_clearerr)
-PerlIO_close # E (PerlIO_close)
-PerlIO_eof # E (PerlIO_eof)
-PerlIO_error # E (PerlIO_error)
-PerlIO_fileno # E (PerlIO_fileno)
-PerlIO_fill # E (PerlIO_fill)
-PerlIO_flush # E (PerlIO_flush)
-PerlIO_get_base # E (PerlIO_get_base)
-PerlIO_get_bufsiz # E (PerlIO_get_bufsiz)
-PerlIO_get_cnt # E (PerlIO_get_cnt)
-PerlIO_get_ptr # E (PerlIO_get_ptr)
-PerlIO_read # E (PerlIO_read)
-PerlIO_seek # E (PerlIO_seek)
-PerlIO_set_cnt # E (PerlIO_set_cnt)
-PerlIO_set_ptrcnt # E (PerlIO_set_ptrcnt)
-PerlIO_setlinebuf # E (PerlIO_setlinebuf)
-PerlIO_stderr # E (PerlIO_stderr)
-PerlIO_stdin # E (PerlIO_stdin)
-PerlIO_stdout # E (PerlIO_stdout)
-PerlIO_tell # E (PerlIO_tell)
-PerlIO_unread # E (PerlIO_unread)
-PerlIO_write # E (PerlIO_write)
-SvLOCK # E
-SvSHARE # E
-SvUNLOCK # E
-atfork_lock # E
-atfork_unlock # E
-custom_op_desc # E
-custom_op_name # E
+PerlIO_clearerr # U (PerlIO_clearerr)
+PerlIO_close # U (PerlIO_close)
+PerlIO_eof # U (PerlIO_eof)
+PerlIO_error # U (PerlIO_error)
+PerlIO_fileno # U (PerlIO_fileno)
+PerlIO_fill # U (PerlIO_fill)
+PerlIO_flush # U (PerlIO_flush)
+PerlIO_get_base # U (PerlIO_get_base)
+PerlIO_get_bufsiz # U (PerlIO_get_bufsiz)
+PerlIO_get_cnt # U (PerlIO_get_cnt)
+PerlIO_get_ptr # U (PerlIO_get_ptr)
+PerlIO_read # U (PerlIO_read)
+PerlIO_seek # U (PerlIO_seek)
+PerlIO_set_cnt # U (PerlIO_set_cnt)
+PerlIO_set_ptrcnt # U (PerlIO_set_ptrcnt)
+PerlIO_setlinebuf # U (PerlIO_setlinebuf)
+PerlIO_stderr # U (PerlIO_stderr)
+PerlIO_stdin # U (PerlIO_stdin)
+PerlIO_stdout # U (PerlIO_stdout)
+PerlIO_tell # U (PerlIO_tell)
+PerlIO_unread # U (PerlIO_unread)
+PerlIO_write # U (PerlIO_write)
+SvLOCK # U
+SvSHARE # U
+SvUNLOCK # U
+atfork_lock # U
+atfork_unlock # U
+custom_op_desc # U
+custom_op_name # U
deb # U
debstack # U
debstackptrs # U
-gv_fetchmeth_autoload # E
-ibcmp_utf8 # E
-my_fork # E
-my_socketpair # E
-pack_cat # E
+gv_fetchmeth_autoload # U
+ibcmp_utf8 # U
+my_fork # U
+my_socketpair # U
+pack_cat # U
perl_destruct # E (perl_destruct)
-pv_uni_display # E
-save_shared_pvref # E
-savesharedpv # E
-sortsv # E
-sv_copypv # E
-sv_magicext # E
-sv_nolocking # E
-sv_nosharing # E
-sv_recode_to_utf8 # E
-sv_uni_display # E
-to_uni_fold # E
+pv_uni_display # U
+save_shared_pvref # U
+savesharedpv # U
+sortsv # U
+sv_copypv # U
+sv_magicext # U
+sv_nolocking # U
+sv_nosharing # U
+sv_recode_to_utf8 # U
+sv_uni_display # U
+to_uni_fold # U
to_uni_lower # E (Perl_to_uni_lower)
to_uni_title # E (Perl_to_uni_title)
to_uni_upper # E (Perl_to_uni_upper)
-to_utf8_case # E
-to_utf8_fold # E
+to_utf8_case # U
+to_utf8_fold # U
to_utf8_lower # E (Perl_to_utf8_lower)
to_utf8_title # E (Perl_to_utf8_title)
to_utf8_upper # E (Perl_to_utf8_upper)
-unpack_str # E
-uvchr_to_utf8_flags # E
-uvuni_to_utf8_flags # E
+unpack_str # U
+uvchr_to_utf8_flags # U
+uvuni_to_utf8_flags # U
vdeb # U
5.008000
-hv_iternext_flags # E
-hv_store_flags # E
+hv_iternext_flags # U
+hv_store_flags # U
is_utf8_idcont # U
nothreadhook # U
packlist # U
save_bool # U
savestack_grow_cnt # U
-scan_vstring # E
+scan_vstring # U
seed # U
sv_cat_decode # U
sv_compile_2op # E (Perl_sv_compile_2op)
5.009000
-new_version # E
+new_version # U
save_set_svflags # U
-upg_version # E
+upg_version # U
vcmp # U
-vnumify # E
-vstringify # E
+vnumify # U
+vstringify # U
5.009001
hv_assert # U
hv_clear_placeholders # U
-hv_scalar # E
+hv_scalar # U
scan_version # E (Perl_scan_version)
sv_2iv_flags # U
sv_2uv_flags # U
5.009002
-SvPVbyte_force # E
+SvPVbyte_force # U
find_rundefsvoffset # U
-gv_fetchpvn_flags # E
-gv_fetchsv # E
+gv_fetchpvn_flags # U
+gv_fetchsv # U
op_refcnt_lock # U
op_refcnt_unlock # U
-savesvpv # E
-vnormal # E
+savesvpv # U
+vnormal # U
5.009003
-av_arylen_p # E
+av_arylen_p # U
ckwarn # U
ckwarn_d # U
csighandler # E (Perl_csighandler)
dMULTICALL # E
-doref # E
-gv_const_sv # E
-gv_stashpvs # E
-hv_eiter_p # E
+doref # U
+gv_const_sv # U
+gv_stashpvs # U
+hv_eiter_p # U
hv_eiter_set # U
hv_name_set # U
hv_placeholders_get # U
-hv_placeholders_p # E
+hv_placeholders_p # U
hv_placeholders_set # U
-hv_riter_p # E
+hv_riter_p # U
hv_riter_set # U
is_utf8_string_loclen # U
my_sprintf # U
-newGIVENOP # E
-newSVhek # E
-newSVpvs_share # E
-newWHENOP # E
+newGIVENOP # U
+newSVhek # U
+newSVpvs_share # U
+newWHENOP # U
newWHILEOP # E (Perl_newWHILEOP)
-ref # E (Perl_ref)
-savepvs # E
+ref # U (Perl_ref)
+savepvs # U
sortsv_flags # U
vverify # U
MULTICALL # E
POP_MULTICALL # E
PUSH_MULTICALL # E
-PerlIO_context_layers # E
+PerlIO_context_layers # U
gv_name_set # U
my_vsnprintf # U
-newXS_flags # E
+newXS_flags # U
pad_sv # U
regclass_swash # E (Perl_regclass_swash)
stashpv_hvname_match # U
use List::Util qw(max);
use Config;
-my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_03 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
$| = 1;
my $verbose = 0;
use strict;
$^W = 1;
-my @pods = qw( HACKERS PPPort.pm ppport.h );
+my @pods = qw( HACKERS PPPort.pm ppport.h devel/regenerate devel/buildperl.pl );
my $reason = '';