Upgrade to Devel::PPPort 3.08_04
Marcus Holland-Moritz [Mon, 29 May 2006 17:50:48 +0000 (17:50 +0000)]
p4raw-id: //depot/perl@28332

47 files changed:
ext/Devel/PPPort/Changes
ext/Devel/PPPort/HACKERS
ext/Devel/PPPort/Makefile.PL
ext/Devel/PPPort/PPPort.pm
ext/Devel/PPPort/PPPort_pm.PL
ext/Devel/PPPort/TODO
ext/Devel/PPPort/apicheck_c.PL
ext/Devel/PPPort/devel/buildperl.pl
ext/Devel/PPPort/devel/devtools.pl
ext/Devel/PPPort/devel/mktodo
ext/Devel/PPPort/devel/mktodo.pl
ext/Devel/PPPort/devel/regenerate
ext/Devel/PPPort/parts/apicheck.pl
ext/Devel/PPPort/parts/base/5004000
ext/Devel/PPPort/parts/base/5004050
ext/Devel/PPPort/parts/base/5005000
ext/Devel/PPPort/parts/base/5005030
ext/Devel/PPPort/parts/base/5006000
ext/Devel/PPPort/parts/base/5006001
ext/Devel/PPPort/parts/base/5007001
ext/Devel/PPPort/parts/base/5007002
ext/Devel/PPPort/parts/base/5007003
ext/Devel/PPPort/parts/base/5008000
ext/Devel/PPPort/parts/base/5008001
ext/Devel/PPPort/parts/base/5009000
ext/Devel/PPPort/parts/base/5009001
ext/Devel/PPPort/parts/base/5009002
ext/Devel/PPPort/parts/base/5009003
ext/Devel/PPPort/parts/base/5009004
ext/Devel/PPPort/parts/inc/podtest
ext/Devel/PPPort/parts/todo/5004000
ext/Devel/PPPort/parts/todo/5005000
ext/Devel/PPPort/parts/todo/5005030
ext/Devel/PPPort/parts/todo/5006000
ext/Devel/PPPort/parts/todo/5006001
ext/Devel/PPPort/parts/todo/5007001
ext/Devel/PPPort/parts/todo/5007002
ext/Devel/PPPort/parts/todo/5007003
ext/Devel/PPPort/parts/todo/5008000
ext/Devel/PPPort/parts/todo/5008001
ext/Devel/PPPort/parts/todo/5009000
ext/Devel/PPPort/parts/todo/5009001
ext/Devel/PPPort/parts/todo/5009002
ext/Devel/PPPort/parts/todo/5009003
ext/Devel/PPPort/parts/todo/5009004
ext/Devel/PPPort/soak
ext/Devel/PPPort/t/podtest.t

index 115bba3..cd74b31 100755 (executable)
@@ -1,3 +1,11 @@
+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
index c73d372..5ebd7f1 100644 (file)
@@ -66,10 +66,15 @@ work with less than a certain version of Perl.
 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
@@ -85,9 +90,13 @@ to figure out the baseline information for all remaining provided
 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
 
@@ -134,8 +143,6 @@ Finally, add the remaining baseline information by running
 
 =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
@@ -294,7 +301,7 @@ modify it under the same terms as Perl itself.
 
 =head1 SEE ALSO
 
-See L<ppport.h>.
+See L<ppport.h> and L<devel/regenerate>.
 
 =cut
 
index 6cb3a11..50599c6 100644 (file)
@@ -4,9 +4,9 @@
 #
 ################################################################################
 #
-#  $Revision: 19 $
+#  $Revision: 20 $
 #  $Author: mhx $
-#  $Date: 2006/01/19 19:35:25 +0100 $
+#  $Date: 2006/05/28 19:36:23 +0200 $
 #
 ################################################################################
 #
@@ -43,10 +43,13 @@ else {
 
 @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) {
@@ -71,7 +74,7 @@ WriteMakefile(
   OBJECT        => '$(BASEEXT)$(OBJ_EXT) $(O_FILES)',
   XSPROTOARG    => '-noprototypes',
   clean         => { FILES => "@clean" },
-  depend        => { '$(OBJECT)' => '$(H_FILES)' },
+  depend        => \%depend,
   @moreopts,
 );
 
@@ -93,3 +96,18 @@ POSTAMBLE
   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;
+}
+
index fe7557a..212b1a5 100644 (file)
@@ -1012,7 +1012,7 @@ require DynaLoader;
 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);
 
@@ -2310,7 +2310,7 @@ gv_handler||5.007001|
 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|||
@@ -2640,7 +2640,7 @@ newAVREF|||
 newAV|||
 newBINOP|||
 newCONDOP|||
-newCONSTSUB|5.006000||p
+newCONSTSUB|5.004050||p
 newCVREF|||
 newDEFSVOP|||
 newFORM|||
@@ -2670,7 +2670,7 @@ newPROG|||
 newPVOP|||
 newRANGE|||
 newRV_inc|5.004000||p
-newRV_noinc|5.006000||p
+newRV_noinc|5.004000||p
 newRV|||
 newSLICEOP|||
 newSTATEOP|||
@@ -2683,7 +2683,7 @@ newSVnv|||
 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|||
@@ -3020,7 +3020,7 @@ sv_add_backref|||
 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
@@ -3093,7 +3093,7 @@ sv_pvbyte||5.006000|
 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|
@@ -3106,18 +3106,18 @@ sv_replace|||
 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|||
@@ -3128,11 +3128,11 @@ sv_setref_pv|||
 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|
@@ -3151,7 +3151,7 @@ sv_utf8_downgrade||5.006000|
 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
index f0b4416..2f81cb6 100644 (file)
@@ -499,7 +499,7 @@ require DynaLoader;
 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);
 
index 0517c99..6b77ebe 100644 (file)
@@ -1,10 +1,5 @@
 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?
index b6a6c28..6a84536 100644 (file)
@@ -4,9 +4,9 @@
 #
 ################################################################################
 #
-#  $Revision: 7 $
+#  $Revision: 8 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:20:38 +0200 $
+#  $Date: 2006/05/28 19:33:09 +0200 $
 #
 ################################################################################
 #
@@ -23,7 +23,7 @@ use strict;
 
 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";
 
index 4194f9a..792974a 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 8 $
+#  $Revision: 9 $
 #  $Author: mhx $
-#  $Date: 2006/01/14 22:41:11 +0100 $
+#  $Date: 2006/05/28 20:42:53 +0200 $
 #
 ################################################################################
 #
@@ -395,12 +395,12 @@ and don't install them, run:
 
 =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>.
 
index a2b1e26..076fa6f 100644 (file)
@@ -4,9 +4,9 @@
 #
 ################################################################################
 #
-#  $Revision: 1 $
+#  $Revision: 2 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:19:22 +0200 $
+#  $Date: 2006/05/28 19:33:35 +0200 $
 #
 ################################################################################
 #
@@ -66,8 +66,8 @@ sub run
 
   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,
index 7eaffa8..4dda017 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 12 $
+#  $Revision: 13 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:22:31 +0200 $
+#  $Date: 2006/05/28 19:36:03 +0200 $
 #
 ################################################################################
 #
@@ -27,23 +27,16 @@ require 'devel/devtools.pl';
 
 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';
 
@@ -63,6 +56,7 @@ for (@perls) {
   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";
 }
 
index 9d3f2c8..326923d 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 11 $
+#  $Revision: 13 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:22:32 +0200 $
+#  $Date: 2006/05/28 19:39:10 +0200 $
 #
 ################################################################################
 #
@@ -25,6 +25,7 @@ use Getopt::Long;
 use Data::Dumper;
 use IO::File;
 use IO::Select;
+use Config;
 use Time::HiRes qw( gettimeofday tv_interval );
 
 require 'devel/devtools.pl';
@@ -33,10 +34,12 @@ our %opt = (
   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();
@@ -51,7 +54,7 @@ $ENV{SKIP_SLOW_TESTS} = 1;
 regen_all();
 
 my %sym;
-for (`nm $fullperl`) {
+for (`$Config{nm} $fullperl`) {
   chomp;
   /\s+T\s+(\w+)\s*$/ and $sym{$1}++;
 }
@@ -60,14 +63,19 @@ keys %sym >= 50 or die "less than 50 symbols found in $fullperl\n";
 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}++) {
@@ -80,19 +88,48 @@ retry:
         }
       }
     }
-    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--;
@@ -102,51 +139,56 @@ 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;
   }
 }
 
@@ -156,9 +198,24 @@ run(qw(make realclean));
 
 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
@@ -214,3 +271,76 @@ sub write_todo
   }
 }
 
+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;
+}
index d280f3e..bdbda8b 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 2 $
+#  $Revision: 5 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:22:32 +0200 $
+#  $Date: 2006/05/28 20:43:04 +0200 $
 #
 ################################################################################
 #
@@ -29,10 +29,11 @@ use Pod::Usage;
 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();
 
@@ -83,10 +84,12 @@ for my $dir (qw( base todo )) {
 }
 
 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();
 }
@@ -101,7 +104,7 @@ for my $src (glob 'parts/todo/5*') {
 
 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();
 }
@@ -130,3 +133,29 @@ Don't forget to check in the files in parts/base and parts/todo.
 
 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
+
index 45e1006..a1c6ebd 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 19 $
+#  $Revision: 20 $
 #  $Author: mhx $
-#  $Date: 2006/05/25 17:21:23 +0200 $
+#  $Date: 2006/05/28 19:35:39 +0200 $
 #
 ################################################################################
 #
@@ -104,20 +104,6 @@ my %stack = (
   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
@@ -145,7 +131,15 @@ print OUT <<HEAD;
 #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
@@ -165,13 +159,10 @@ print OUT <<HEAD;
 #define NEED_vnewSVpvf
 #define NEED_warner
 
-
 #include "ppport.h"
 
 #endif
 
-static int some_global_var;
-
 static int    VARarg1;
 static char  *VARarg2;
 static double VARarg3;
@@ -251,17 +242,11 @@ for $f (@f) {
     $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)";
@@ -294,24 +279,21 @@ HEAD
   $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
   }
 }
index 523a205..41a7f96 100644 (file)
@@ -3,13 +3,13 @@ GIMME_V                        # E
 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
@@ -21,13 +21,48 @@ SvUV                           # 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
index fdd3c62..992642b 100644 (file)
@@ -4,8 +4,19 @@ PL_sv_no                       # E
 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
index 553a4be..c5781e8 100644 (file)
@@ -1,5 +1,30 @@
 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
index 3a7d375..f268c75 100644 (file)
@@ -1,2 +1,4 @@
 5.005030
 POPpx                          # E
+get_vtbl                       # E
+save_generic_svref             # E
index ea6360f..6a3c111 100644 (file)
@@ -1,5 +1,4 @@
 5.006000
-Gv_AMupdate                    # E (Perl_Gv_AMupdate)
 POPn                           # E
 PUSHn                          # E
 SvIOK_UV                       # U
@@ -10,41 +9,26 @@ SvNVX                          # E
 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)
@@ -53,94 +37,34 @@ cast_iv                        # E (cast_iv)
 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
@@ -185,257 +109,86 @@ is_utf8_punct                  # 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
@@ -447,7 +200,6 @@ vwarn                          # 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
index 5daad5a..a6369d5 100644 (file)
@@ -1,14 +1,14 @@
 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
index be36e35..08d952b 100644 (file)
@@ -1,24 +1,24 @@
 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
index a526903..63b9ee7 100644 (file)
@@ -1,26 +1,26 @@
 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
index 63a0449..325f06a 100644 (file)
@@ -1,68 +1,68 @@
 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
index 9a91f3d..8af2dfa 100644 (file)
@@ -1,7 +1,7 @@
 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
index d0fec85..420b56c 100644 (file)
@@ -6,7 +6,7 @@ is_utf8_string_loc             # 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)
index 8c39ded..86f67f6 100644 (file)
@@ -1,8 +1,8 @@
 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
index 335f490..14967d0 100644 (file)
@@ -3,7 +3,7 @@ SvIV_nomg                      # U
 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
index ffc0ffc..1b5b8f9 100644 (file)
@@ -2,7 +2,7 @@
 CopyD                          # E
 MoveD                          # E
 PUSHmortal                     # E
-SvPVbyte_force                 # E
+SvPVbyte_force                 # U
 UNDERBAR                       # E
 XCPT_CATCH                     # E
 XCPT_RETHROW                   # E
@@ -13,8 +13,8 @@ ZeroD                          # 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
@@ -25,6 +25,6 @@ mXPUSHp                        # 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
index 10191c5..320fdfd 100644 (file)
@@ -6,34 +6,34 @@ SvMAGIC_set                    # U
 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
index 6d0d84b..a3ec54a 100644 (file)
@@ -2,22 +2,22 @@
 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
index 4dbb464..3243c17 100644 (file)
@@ -1,8 +1,8 @@
 ################################################################################
 ##
-##  $Revision: 3 $
+##  $Revision: 5 $
 ##  $Author: mhx $
-##  $Date: 2006/05/24 09:25:00 +0200 $
+##  $Date: 2006/05/28 20:43:18 +0200 $
 ##
 ################################################################################
 ##
@@ -17,7 +17,7 @@
 
 =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 = '';
 
index 9ec8545..4d33a77 100644 (file)
@@ -3,13 +3,13 @@ GIMME_V                        # E
 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
@@ -18,28 +18,28 @@ SvTAINTED_off                  # 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
@@ -63,5 +63,5 @@ sv_vsetpvf                     # U
 sv_vsetpvf_mg                  # U
 sv_vsetpvfn                    # U
 unsharepvn                     # U
-vnewSVpvf                      # E
+vnewSVpvf                      # U
 warner                         # U
index 5c469b1..ef7078a 100644 (file)
@@ -1,18 +1,18 @@
 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
index 362e8f2..885afa0 100644 (file)
@@ -1,4 +1,4 @@
 5.005030
 POPpx                          # E
-get_vtbl                       # E
+get_vtbl                       # U
 save_generic_svref             # U
index 09e97c3..188f448 100644 (file)
@@ -3,18 +3,18 @@ SvIOK_UV                       # 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)
@@ -31,12 +31,12 @@ do_pmop_dump                   # U
 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)
@@ -90,9 +90,9 @@ magic_dump                     # U
 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)
@@ -101,15 +101,15 @@ new_numeric                    # U (perl_new_numeric)
 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)
@@ -122,33 +122,33 @@ set_numeric_local              # U (perl_set_numeric_local)
 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
index 59ceb46..3f4ea79 100644 (file)
@@ -1,11 +1,11 @@
 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
index 553e6d6..d9dc66f 100644 (file)
@@ -1,22 +1,22 @@
 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
index 805bcae..f4f4b8d 100644 (file)
@@ -1,18 +1,18 @@
 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)
index 9a81d8d..2271d2b 100644 (file)
@@ -1,62 +1,62 @@
 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
index 461ce9c..a22b04e 100644 (file)
@@ -1,5 +1,5 @@
 5.008000
-hv_iternext_flags              # E
-hv_store_flags                 # E
+hv_iternext_flags              # U
+hv_store_flags                 # U
 is_utf8_idcont                 # U
 nothreadhook                   # U
index d269061..b0a018c 100644 (file)
@@ -5,7 +5,7 @@ is_utf8_string_loc             # 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)
index 8b45dc7..3b2ffc3 100644 (file)
@@ -1,7 +1,7 @@
 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
index 19e05e4..4503f80 100644 (file)
@@ -1,7 +1,7 @@
 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
index ae91fd7..c6d8a1e 100644 (file)
@@ -1,9 +1,9 @@
 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
index a7e2147..b6bde5d 100644 (file)
@@ -1,28 +1,28 @@
 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
index cc78c24..d234bee 100644 (file)
@@ -2,10 +2,10 @@
 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
index ce7a655..fe2933a 100644 (file)
@@ -33,7 +33,7 @@ use File::Find;
 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;
index f772a6a..257197f 100644 (file)
@@ -36,7 +36,7 @@ use Devel::PPPort;
 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 = '';