Upgrade to Devel::PPPort 3.08_01
Marcus Holland-Moritz [Sat, 20 May 2006 18:22:00 +0000 (18:22 +0000)]
p4raw-id: //depot/perl@28259

43 files changed:
MANIFEST
ext/Devel/PPPort/Changes
ext/Devel/PPPort/HACKERS
ext/Devel/PPPort/MANIFEST [deleted file]
ext/Devel/PPPort/PPPort.pm
ext/Devel/PPPort/PPPort.xs
ext/Devel/PPPort/PPPort_pm.PL
ext/Devel/PPPort/TODO
ext/Devel/PPPort/parts/apicheck.pl
ext/Devel/PPPort/parts/apidoc.fnc
ext/Devel/PPPort/parts/base/5004050
ext/Devel/PPPort/parts/base/5006000
ext/Devel/PPPort/parts/base/5006001
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/5008008 [new file with mode: 0644]
ext/Devel/PPPort/parts/base/5009000
ext/Devel/PPPort/parts/base/5009003
ext/Devel/PPPort/parts/base/5009004 [new file with mode: 0644]
ext/Devel/PPPort/parts/embed.fnc
ext/Devel/PPPort/parts/inc/Sv_set
ext/Devel/PPPort/parts/inc/magic
ext/Devel/PPPort/parts/inc/misc
ext/Devel/PPPort/parts/inc/pvs [new file with mode: 0644]
ext/Devel/PPPort/parts/inc/snprintf [new file with mode: 0644]
ext/Devel/PPPort/parts/inc/warn [new file with mode: 0644]
ext/Devel/PPPort/parts/todo/5004000
ext/Devel/PPPort/parts/todo/5005000
ext/Devel/PPPort/parts/todo/5006000
ext/Devel/PPPort/parts/todo/5006001
ext/Devel/PPPort/parts/todo/5007003
ext/Devel/PPPort/parts/todo/5008008 [new file with mode: 0644]
ext/Devel/PPPort/parts/todo/5009003
ext/Devel/PPPort/parts/todo/5009004 [new file with mode: 0644]
ext/Devel/PPPort/soak
ext/Devel/PPPort/t/Sv_set.t
ext/Devel/PPPort/t/magic.t
ext/Devel/PPPort/t/misc.t
ext/Devel/PPPort/t/pvs.t [new file with mode: 0644]
ext/Devel/PPPort/t/snprintf.t [new file with mode: 0644]
ext/Devel/PPPort/t/warn.t [new file with mode: 0644]

index 6f7d0a8..deaa8ed 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -346,7 +346,6 @@ ext/Devel/PPPort/devel/mktodo.pl    Devel::PPPort baseline/todo generator
 ext/Devel/PPPort/devel/scanprov        Devel::PPPort provided API scanner
 ext/Devel/PPPort/HACKERS       Devel::PPPort hackers documentation
 ext/Devel/PPPort/Makefile.PL   Devel::PPPort makefile writer
-ext/Devel/PPPort/MANIFEST      Devel::PPPort Manifest
 ext/Devel/PPPort/MANIFEST.SKIP Devel::PPPort Manifest skip specs
 ext/Devel/PPPort/mktests.PL    Devel::PPPort test file writer
 ext/Devel/PPPort/module2.c     Devel::PPPort test file
@@ -379,10 +378,12 @@ ext/Devel/PPPort/parts/base/5008004       Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5008005    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5008006    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5008007    Devel::PPPort baseline todo file
+ext/Devel/PPPort/parts/base/5008008    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5009000    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5009001    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5009002    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/base/5009003    Devel::PPPort baseline todo file
+ext/Devel/PPPort/parts/base/5009004    Devel::PPPort baseline todo file
 ext/Devel/PPPort/parts/embed.fnc       Devel::PPPort Perl API listing
 ext/Devel/PPPort/parts/inc/call        Devel::PPPort include
 ext/Devel/PPPort/parts/inc/cop Devel::PPPort include
@@ -400,6 +401,8 @@ ext/Devel/PPPort/parts/inc/newRV    Devel::PPPort include
 ext/Devel/PPPort/parts/inc/ppphbin     Devel::PPPort include
 ext/Devel/PPPort/parts/inc/ppphdoc     Devel::PPPort include
 ext/Devel/PPPort/parts/inc/ppphtest    Devel::PPPort include
+ext/Devel/PPPort/parts/inc/pvs Devel::PPPort include
+ext/Devel/PPPort/parts/inc/snprintf    Devel::PPPort include
 ext/Devel/PPPort/parts/inc/SvPV        Devel::PPPort include
 ext/Devel/PPPort/parts/inc/Sv_set      Devel::PPPort include
 ext/Devel/PPPort/parts/inc/sv_xpvf     Devel::PPPort include
@@ -407,6 +410,7 @@ ext/Devel/PPPort/parts/inc/threads  Devel::PPPort include
 ext/Devel/PPPort/parts/inc/uv  Devel::PPPort include
 ext/Devel/PPPort/parts/inc/variables   Devel::PPPort include
 ext/Devel/PPPort/parts/inc/version     Devel::PPPort include
+ext/Devel/PPPort/parts/inc/warn        Devel::PPPort include
 ext/Devel/PPPort/parts/ppptools.pl     Devel::PPPort various utilities
 ext/Devel/PPPort/parts/todo/5004000    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5004010    Devel::PPPort todo file
@@ -434,10 +438,12 @@ ext/Devel/PPPort/parts/todo/5008004       Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5008005    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5008006    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5008007    Devel::PPPort todo file
+ext/Devel/PPPort/parts/todo/5008008    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5009000    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5009001    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5009002    Devel::PPPort todo file
 ext/Devel/PPPort/parts/todo/5009003    Devel::PPPort todo file
+ext/Devel/PPPort/parts/todo/5009004    Devel::PPPort todo file
 ext/Devel/PPPort/ppport_h.PL   Devel::PPPort ppport.h writer
 ext/Devel/PPPort/PPPort.pm     Devel::PPPort extension
 ext/Devel/PPPort/PPPort_pm.PL  Devel::PPPort PPPort.pm writer
@@ -459,6 +465,8 @@ ext/Devel/PPPort/t/newCONSTSUB.t    Devel::PPPort test file
 ext/Devel/PPPort/t/newRV.t     Devel::PPPort test file
 ext/Devel/PPPort/TODO          Devel::PPPort Todo
 ext/Devel/PPPort/t/ppphtest.t  Devel::PPPort test file
+ext/Devel/PPPort/t/pvs.t       Devel::PPPort test file
+ext/Devel/PPPort/t/snprintf.t  Devel::PPPort test file
 ext/Devel/PPPort/t/SvPV.t      Devel::PPPort test file
 ext/Devel/PPPort/t/Sv_set.t    Devel::PPPort test file
 ext/Devel/PPPort/t/sv_xpvf.t   Devel::PPPort test file
@@ -466,6 +474,7 @@ ext/Devel/PPPort/t/testutil.pl      Devel::PPPort test utilities
 ext/Devel/PPPort/t/threads.t   Devel::PPPort test file
 ext/Devel/PPPort/t/uv.t                Devel::PPPort test file
 ext/Devel/PPPort/t/variables.t Devel::PPPort test file
+ext/Devel/PPPort/t/warn.t      Devel::PPPort test file
 ext/Devel/PPPort/typemap       Devel::PPPort Typemap
 ext/Digest/MD5/Changes         Digest::MD5 extension changes
 ext/Digest/MD5/hints/dec_osf.pl        Hints for named architecture
index 0adb5de..6654bb0 100755 (executable)
@@ -1,3 +1,26 @@
+3.08_01 - 2006-05-20
+
+    * update NOOP and dNOOP to include lint directives
+    * update API info (for 5.8.8 and 5.9.3)
+    * added support for the following API
+        ckWARN
+        dVAR
+        hv_fetchs
+        hv_stores
+        my_snprintf
+        newSVpvs
+        packWARN
+        PERL_ABS
+        PERL_UNUSED_ARG
+        PERL_UNUSED_CONTEXT
+        PERL_UNUSED_VAR
+        STR_WITH_LEN
+        sv_catpvs
+        sv_setpvs
+        SVf
+        SvVSTRING_mg
+        warner
+
 3.08 - 2006-01-19
 
     * thanks to Craig Berry for fixing my broken ppphtest
index 42acd38..770ceeb 100644 (file)
@@ -11,15 +11,15 @@ lying around in this distribution.
 
 =head1 DESCRIPTION
 
-=head2 How to build 98 versions of Perl
+=head2 How to build 105 versions of Perl
 
 C<Devel::PPPort> supports Perl versions between 5.003 and bleadperl.
 To guarantee this support, I need some of these versions on my
-machine. I currently have 98 different Perl version/configuration
+machine. I currently have 105 different Perl version/configuration
 combinations installed on my laptop.
 
 As many of the old Perl distributions need patching to compile
-cleanly on newer systems (and because building 98 Perls by hand
+cleanly on newer systems (and because building 105 Perls by hand
 just isn't fun), I wrote a tool to build all the different
 versions and configurations. You can find it in F<devel/buildperl.pl>.
 It can currently build the following Perl releases:
diff --git a/ext/Devel/PPPort/MANIFEST b/ext/Devel/PPPort/MANIFEST
deleted file mode 100644 (file)
index 8f493d0..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-apicheck_c.PL
-Changes
-devel/buildperl.pl
-devel/mkapidoc.sh
-devel/mktodo
-devel/mktodo.pl
-devel/scanprov
-HACKERS
-Makefile.PL
-MANIFEST
-MANIFEST.SKIP
-mktests.PL
-module2.c
-module3.c
-parts/apicheck.pl
-parts/apidoc.fnc
-parts/base/5004000
-parts/base/5004010
-parts/base/5004020
-parts/base/5004030
-parts/base/5004040
-parts/base/5004050
-parts/base/5005000
-parts/base/5005010
-parts/base/5005020
-parts/base/5005030
-parts/base/5005040
-parts/base/5006000
-parts/base/5006001
-parts/base/5006002
-parts/base/5007000
-parts/base/5007001
-parts/base/5007002
-parts/base/5007003
-parts/base/5008000
-parts/base/5008001
-parts/base/5008002
-parts/base/5008003
-parts/base/5008004
-parts/base/5008005
-parts/base/5008006
-parts/base/5008007
-parts/base/5009000
-parts/base/5009001
-parts/base/5009002
-parts/base/5009003
-parts/embed.fnc
-parts/inc/call
-parts/inc/cop
-parts/inc/exception
-parts/inc/format
-parts/inc/grok
-parts/inc/limits
-parts/inc/magic
-parts/inc/memory
-parts/inc/misc
-parts/inc/mPUSH
-parts/inc/MY_CXT
-parts/inc/newCONSTSUB
-parts/inc/newRV
-parts/inc/ppphbin
-parts/inc/ppphdoc
-parts/inc/ppphtest
-parts/inc/Sv_set
-parts/inc/sv_xpvf
-parts/inc/SvPV
-parts/inc/threads
-parts/inc/uv
-parts/inc/variables
-parts/inc/version
-parts/ppptools.pl
-parts/todo/5004000
-parts/todo/5004010
-parts/todo/5004020
-parts/todo/5004030
-parts/todo/5004040
-parts/todo/5004050
-parts/todo/5005000
-parts/todo/5005010
-parts/todo/5005020
-parts/todo/5005030
-parts/todo/5005040
-parts/todo/5006000
-parts/todo/5006001
-parts/todo/5006002
-parts/todo/5007000
-parts/todo/5007001
-parts/todo/5007002
-parts/todo/5007003
-parts/todo/5008000
-parts/todo/5008001
-parts/todo/5008002
-parts/todo/5008003
-parts/todo/5008004
-parts/todo/5008005
-parts/todo/5008006
-parts/todo/5008007
-parts/todo/5009000
-parts/todo/5009001
-parts/todo/5009002
-parts/todo/5009003
-PPPort.pm
-PPPort.xs
-ppport_h.PL
-PPPort_pm.PL
-PPPort_xs.PL
-README
-soak
-t/call.t
-t/cop.t
-t/exception.t
-t/grok.t
-t/limits.t
-t/magic.t
-t/memory.t
-t/misc.t
-t/mPUSH.t
-t/MY_CXT.t
-t/newCONSTSUB.t
-t/newRV.t
-t/ppphtest.t
-t/Sv_set.t
-t/sv_xpvf.t
-t/SvPV.t
-t/testutil.pl
-t/threads.t
-t/uv.t
-t/variables.t
-TODO
-typemap
-META.yml                                 Module meta-data (added by MakeMaker)
index a7e8ea9..df6d9c9 100644 (file)
@@ -8,9 +8,9 @@
 #
 ################################################################################
 #
-#  $Revision: 41 $
+#  $Revision: 42 $
 #  $Author: mhx $
-#  $Date: 2006/01/14 18:07:56 +0100 $
+#  $Date: 2006/05/18 23:13:47 +0200 $
 #
 ################################################################################
 #
@@ -120,6 +120,7 @@ in older Perl releases:
     call_method
     call_pv
     call_sv
+    ckWARN
     CopFILE
     CopFILE_set
     CopFILEAV
@@ -144,6 +145,7 @@ in older Perl releases:
     dTHXa
     dTHXoa
     dUNDERBAR
+    dVAR
     dXCPT
     dXSTARG
     END_EXTERN_C
@@ -162,6 +164,8 @@ in older Perl releases:
     grok_numeric_radix
     grok_oct
     gv_stashpvn
+    hv_fetchs
+    hv_stores
     IN_LOCALE
     IN_LOCALE_COMPILETIME
     IN_LOCALE_RUNTIME
@@ -190,10 +194,12 @@ in older Perl releases:
     MY_CXT
     MY_CXT_CLONE
     MY_CXT_INIT
+    my_snprintf
     newCONSTSUB
     newRV_inc
     newRV_noinc
     newSVpvn
+    newSVpvs
     newSVuv
     Newx
     Newxc
@@ -204,6 +210,8 @@ in older Perl releases:
     NVff
     NVgf
     NVTYPE
+    packWARN
+    PERL_ABS
     PERL_BCDVERSION
     PERL_GCC_BRACE_GROUPS_FORBIDDEN
     PERL_INT_MAX
@@ -266,12 +274,17 @@ in older Perl releases:
     PERL_UINT_MIN
     PERL_ULONG_MAX
     PERL_ULONG_MIN
+    PERL_UNUSED_ARG
+    PERL_UNUSED_CONTEXT
     PERL_UNUSED_DECL
+    PERL_UNUSED_VAR
     PERL_UQUAD_MAX
     PERL_UQUAD_MIN
     PERL_USHORT_MAX
     PERL_USHORT_MIN
     PERL_VERSION
+    Perl_warner
+    Perl_warner_nocontext
     PL_compiling
     PL_copline
     PL_curcop
@@ -321,6 +334,7 @@ in older Perl releases:
     START_MY_CXT
     STMT_END
     STMT_START
+    STR_WITH_LEN
     sv_2pv_nolen
     sv_2pvbyte
     sv_2uv
@@ -329,6 +343,7 @@ in older Perl releases:
     sv_catpvf_mg_nocontext
     sv_catpvn_mg
     sv_catpvn_nomg
+    sv_catpvs
     sv_catsv_mg
     sv_catsv_nomg
     sv_pvn
@@ -340,6 +355,7 @@ in older Perl releases:
     sv_setpvf_mg
     sv_setpvf_mg_nocontext
     sv_setpvn_mg
+    sv_setpvs
     sv_setsv_mg
     sv_setsv_nomg
     sv_setuv
@@ -350,6 +366,7 @@ in older Perl releases:
     sv_vcatpvf_mg
     sv_vsetpvf
     sv_vsetpvf_mg
+    SVf
     SvGETMAGIC
     SvIV_nomg
     SvMAGIC_set
@@ -367,6 +384,7 @@ in older Perl releases:
     SvUVX
     SvUVx
     SvUVXx
+    SvVSTRING_mg
     UNDERBAR
     UVof
     UVSIZE
@@ -375,6 +393,54 @@ in older Perl releases:
     UVXf
     UVxf
     vnewSVpvf
+    WARN_ALL
+    WARN_AMBIGUOUS
+    WARN_ASSERTIONS
+    WARN_BAREWORD
+    WARN_CLOSED
+    WARN_CLOSURE
+    WARN_DEBUGGING
+    WARN_DEPRECATED
+    WARN_DIGIT
+    WARN_EXEC
+    WARN_EXITING
+    WARN_GLOB
+    WARN_INPLACE
+    WARN_INTERNAL
+    WARN_IO
+    WARN_LAYER
+    WARN_MALLOC
+    WARN_MISC
+    WARN_NEWLINE
+    WARN_NUMERIC
+    WARN_ONCE
+    WARN_OVERFLOW
+    WARN_PACK
+    WARN_PARENTHESIS
+    WARN_PIPE
+    WARN_PORTABLE
+    WARN_PRECEDENCE
+    WARN_PRINTF
+    WARN_PROTOTYPE
+    WARN_QW
+    WARN_RECURSION
+    WARN_REDEFINE
+    WARN_REGEXP
+    WARN_RESERVED
+    WARN_SEMICOLON
+    WARN_SEVERE
+    WARN_SIGNAL
+    WARN_SUBSTR
+    WARN_SYNTAX
+    WARN_TAINT
+    WARN_THREADS
+    WARN_UNINITIALIZED
+    WARN_UNOPENED
+    WARN_UNPACK
+    WARN_UNTIE
+    WARN_UTF8
+    WARN_VOID
+    warner
     XCPT_CATCH
     XCPT_RETHROW
     XCPT_TRY_END
@@ -398,12 +464,29 @@ Perl below which it is unsupported:
 
 =over 4
 
-=item perl 5.9.3
+=item perl 5.9.4
 
   MULTICALL
   POP_MULTICALL
   PUSH_MULTICALL
-  SvSTASH_set
+  PoisonNew
+  PoisonWith
+  SvREFCNT_inc_NN
+  SvREFCNT_inc_simple
+  SvREFCNT_inc_simple_NN
+  SvREFCNT_inc_simple_void
+  SvREFCNT_inc_void
+  SvREFCNT_inc_void_NN
+  gv_name_set
+  my_vsnprintf
+  newXS_flags
+  pad_sv
+  regclass_swash
+  stashpv_hvname_match
+  sv_usepvn_flags
+
+=item perl 5.9.3
+
   av_arylen_p
   ckwarn
   ckwarn_d
@@ -427,7 +510,6 @@ Perl below which it is unsupported:
   newWHILEOP
   ref
   sortsv_flags
-  stashpv_hvname_match
   vverify
 
 =item perl 5.9.2
@@ -528,7 +610,6 @@ Perl below which it is unsupported:
   pack_cat
   perl_destruct
   pv_uni_display
-  regclass_swash
   save_shared_pvref
   savesharedpv
   sortsv
@@ -536,7 +617,6 @@ Perl below which it is unsupported:
   sv_magicext
   sv_nolocking
   sv_nosharing
-  sv_nounlocking
   sv_recode_to_utf8
   sv_uni_display
   to_uni_fold
@@ -599,6 +679,7 @@ Perl below which it is unsupported:
 
 =item perl 5.6.1
 
+  SvGAMAGIC
   apply_attrs_string
   bytes_to_utf8
   gv_efullname4
@@ -704,7 +785,6 @@ Perl below which it is unsupported:
   my_fflush_all
   newANONATTRSUB
   newATTRSUB
-  newMYSUB
   newPADOP
   newXS
   newXSproto
@@ -765,7 +845,6 @@ Perl below which it is unsupported:
   vmess
   vwarn
   vwarner
-  warner
 
 =item perl 5.005_03
 
@@ -795,7 +874,6 @@ Perl below which it is unsupported:
   runops_standard
   save_hints
   save_iv
-  save_threadsv
   screaminstr
   sv_iv
   sv_nv
@@ -875,6 +953,7 @@ Perl below which it is unsupported:
   sv_vsetpvfn
   unsharepvn
   vnewSVpvf
+  warner
 
 =back
 
@@ -925,7 +1004,7 @@ require DynaLoader;
 use strict;
 use vars qw($VERSION @ISA $data);
 
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
 
 @ISA = qw(DynaLoader);
 
@@ -1174,6 +1253,7 @@ SKIP
 |>    grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL
 |>    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
 |>    grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
+|>    my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL
 |>    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL
 |>    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL
 |>    sv_2pv_nolen()            NEED_sv_2pv_nolen            NEED_sv_2pv_nolen_GLOBAL
@@ -1183,6 +1263,7 @@ SKIP
 |>    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
 |>    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
 |>    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL
+|>    warner()                  NEED_warner                  NEED_warner_GLOBAL
 |>
 |>To avoid namespace conflicts, you can change the namespace of the
 |>explicitly exported functions / variables using the C<DPPP_NAMESPACE>
@@ -1433,13 +1514,12 @@ IVdf|5.006000||p
 LEAVE|||
 LVRET|||
 MARK|||
-MULTICALL||5.009003|
+MULTICALL||5.009004|
 MY_CXT_CLONE|5.009002||p
 MY_CXT_INIT|5.007003||p
 MY_CXT|5.007003||p
 MoveD|5.009002||p
 Move|||
-NEWSV|||
 NOOP|5.005000||p
 NUM2PTR|5.006000||p
 NVTYPE|5.006000||p
@@ -1471,7 +1551,8 @@ PAD_SET_CUR_NOSAVE|||
 PAD_SET_CUR|||
 PAD_SVl|||
 PAD_SV|||
-PERL_BCDVERSION|5.009003||p
+PERL_ABS|5.008001||p
+PERL_BCDVERSION|5.009004||p
 PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
 PERL_INT_MAX|5.004000||p
 PERL_INT_MIN|5.004000||p
@@ -1533,7 +1614,10 @@ PERL_UINT_MAX|5.004000||p
 PERL_UINT_MIN|5.004000||p
 PERL_ULONG_MAX|5.004000||p
 PERL_ULONG_MIN|5.004000||p
+PERL_UNUSED_ARG|5.009003||p
+PERL_UNUSED_CONTEXT|5.009004||p
 PERL_UNUSED_DECL|5.007002||p
+PERL_UNUSED_VAR|5.007002||p
 PERL_UQUAD_MAX|5.004000||p
 PERL_UQUAD_MIN|5.004000||p
 PERL_USHORT_MAX|5.004000||p
@@ -1576,7 +1660,7 @@ PL_sv_undef|5.004050||pn
 PL_sv_yes|5.004050||pn
 PL_tainted|5.004050||p
 PL_tainting|5.004050||p
-POP_MULTICALL||5.009003|
+POP_MULTICALL||5.009004|
 POPi|||n
 POPl|||n
 POPn|||n
@@ -1590,7 +1674,7 @@ PTR2UV|5.006000||p
 PTR2ul|5.007001||p
 PTRV|5.006000||p
 PUSHMARK|||
-PUSH_MULTICALL||5.009003|
+PUSH_MULTICALL||5.009004|
 PUSHi|||
 PUSHmortal|5.009002||p
 PUSHn|||
@@ -1620,6 +1704,10 @@ PerlIO_stdout||5.007003|
 PerlIO_tell||5.007003|
 PerlIO_unread||5.007003|
 PerlIO_write||5.007003|
+Perl_warner_nocontext|5.006000||p
+Perl_warner|5.006000||p
+PoisonNew||5.009004|
+PoisonWith||5.009004|
 Poison|5.008000||p
 RETVAL|||n
 Renewc|||
@@ -1635,7 +1723,9 @@ START_EXTERN_C|5.005000||p
 START_MY_CXT|5.007003||p
 STMT_END|||p
 STMT_START|||p
+STR_WITH_LEN|5.009003||p
 ST|||
+SVf|||p
 SVt_IV|||
 SVt_NV|||
 SVt_PVAV|||
@@ -1650,6 +1740,7 @@ StructCopy|||
 SvCUR_set|||
 SvCUR|||
 SvEND|||
+SvGAMAGIC||5.006001|
 SvGETMAGIC|5.004050||p
 SvGROW|||
 SvIOK_UV||5.006000|
@@ -1712,6 +1803,12 @@ SvPVutf8||5.006000|
 SvPVx|||
 SvPV|||
 SvREFCNT_dec|||
+SvREFCNT_inc_NN||5.009004|
+SvREFCNT_inc_simple_NN||5.009004|
+SvREFCNT_inc_simple_void||5.009004|
+SvREFCNT_inc_simple||5.009004|
+SvREFCNT_inc_void_NN||5.009004|
+SvREFCNT_inc_void||5.009004|
 SvREFCNT_inc|||
 SvREFCNT|||
 SvROK_off|||
@@ -1721,7 +1818,7 @@ SvRV_set|5.009003||p
 SvRV|||
 SvSETMAGIC|||
 SvSHARE||5.007003|
-SvSTASH_set|5.009003|5.009003|p
+SvSTASH_set|5.009004||p
 SvSTASH|||
 SvSetMagicSV_nosteal||5.004000|
 SvSetMagicSV||5.004000|
@@ -1746,6 +1843,7 @@ SvUV_set|5.009003||p
 SvUVx|5.004000||p
 SvUV|5.004000||p
 SvVOK||5.008001|
+SvVSTRING_mg|5.009004||p
 THIS|||n
 UNDERBAR|5.009002||p
 UVSIZE|5.006000||p
@@ -1754,6 +1852,53 @@ UVXf|5.007001||p
 UVof|5.006000||p
 UVuf|5.006000||p
 UVxf|5.006000||p
+WARN_ALL|5.006000||p
+WARN_AMBIGUOUS|5.006000||p
+WARN_ASSERTIONS|5.009000||p
+WARN_BAREWORD|5.006000||p
+WARN_CLOSED|5.006000||p
+WARN_CLOSURE|5.006000||p
+WARN_DEBUGGING|5.006000||p
+WARN_DEPRECATED|5.006000||p
+WARN_DIGIT|5.006000||p
+WARN_EXEC|5.006000||p
+WARN_EXITING|5.006000||p
+WARN_GLOB|5.006000||p
+WARN_INPLACE|5.006000||p
+WARN_INTERNAL|5.006000||p
+WARN_IO|5.006000||p
+WARN_LAYER|5.008000||p
+WARN_MALLOC|5.006000||p
+WARN_MISC|5.006000||p
+WARN_NEWLINE|5.006000||p
+WARN_NUMERIC|5.006000||p
+WARN_ONCE|5.006000||p
+WARN_OVERFLOW|5.006000||p
+WARN_PACK|5.006000||p
+WARN_PARENTHESIS|5.006000||p
+WARN_PIPE|5.006000||p
+WARN_PORTABLE|5.006000||p
+WARN_PRECEDENCE|5.006000||p
+WARN_PRINTF|5.006000||p
+WARN_PROTOTYPE|5.006000||p
+WARN_QW|5.006000||p
+WARN_RECURSION|5.006000||p
+WARN_REDEFINE|5.006000||p
+WARN_REGEXP|5.006000||p
+WARN_RESERVED|5.006000||p
+WARN_SEMICOLON|5.006000||p
+WARN_SEVERE|5.006000||p
+WARN_SIGNAL|5.006000||p
+WARN_SUBSTR|5.006000||p
+WARN_SYNTAX|5.006000||p
+WARN_TAINT|5.006000||p
+WARN_THREADS|5.008000||p
+WARN_UNINITIALIZED|5.006000||p
+WARN_UNOPENED|5.006000||p
+WARN_UNPACK|5.006000||p
+WARN_UNTIE|5.006000||p
+WARN_UTF8|5.006000||p
+WARN_VOID|5.006000||p
 XCPT_CATCH|5.009002||p
 XCPT_RETHROW|5.009002||p
 XCPT_TRY_END|5.009002||p
@@ -1792,7 +1937,8 @@ aMY_CXT_|5.007003||p
 aMY_CXT|5.007003||p
 aTHX_|5.006000||p
 aTHX|5.006000||p
-add_data|||
+add_data|||n
+addmad|||
 allocmy|||
 amagic_call|||
 amagic_cmp_locale|||
@@ -1803,6 +1949,7 @@ any_dup|||
 ao|||
 append_elem|||
 append_list|||
+append_madprops|||
 apply_attrs_my|||
 apply_attrs_string||5.006001|
 apply_attrs|||
@@ -1837,12 +1984,10 @@ boot_core_PerlIO|||
 boot_core_UNIVERSAL|||
 boot_core_xsutils|||
 bytes_from_utf8||5.007001|
+bytes_to_uni|||
 bytes_to_utf8||5.006001|
-cache_re|||
 call_argv|5.006000||p
 call_atexit||5.006000|
-call_body|||
-call_list_body|||
 call_list||5.004000|
 call_method|5.006000||p
 call_pv|5.006000||p
@@ -1857,6 +2002,7 @@ check_type_and_open|||
 check_uni|||
 checkcomma|||
 checkposixcc|||
+ckWARN|||p
 ck_anoncode|||
 ck_bitop|||
 ck_concat|||
@@ -1901,21 +2047,25 @@ ck_trunc|||
 ck_unpack|||
 ckwarn_d||5.009003|
 ckwarn||5.009003|
-cl_and|||
-cl_anything|||
-cl_init_zero|||
-cl_init|||
-cl_is_anything|||
-cl_or|||
+cl_and|||n
+cl_anything|||n
+cl_init_zero|||n
+cl_init|||n
+cl_is_anything|||n
+cl_or|||n
+clear_placeholders|||
 closest_cop|||
 convert|||
 cop_free|||
 cr_textfilter|||
+create_eval_scope|||
 croak_nocontext|||vn
 croak|||v
 csighandler||5.009003|n
+curmad|||
 custom_op_desc||5.007003|
 custom_op_name||5.007003|
+cv_ckproto_len|||
 cv_ckproto|||
 cv_clone|||
 cv_const_sv||5.004000|
@@ -1939,6 +2089,7 @@ dTHXa|5.006000||p
 dTHXoa|5.006000||p
 dTHX|5.006000||p
 dUNDERBAR|5.009002||p
+dVAR|5.009003||p
 dXCPT|5.009002||p
 dXSARGS|||
 dXSI32|||
@@ -1954,6 +2105,7 @@ debstackptrs||5.007003|
 debstack||5.007003|
 deb||5.007003|v
 del_sv|||
+delete_eval_scope|||
 delimcpy||5.004000|
 deprecate_old|||
 deprecate|||
@@ -1989,11 +2141,13 @@ do_msgrcv|||
 do_msgsnd|||
 do_oddball|||
 do_op_dump||5.006000|
+do_op_xmldump|||
 do_open9||5.006000|
 do_openn||5.007001|
 do_open||5.004000|
 do_pipe|||
 do_pmop_dump||5.006000|
+do_pmop_xmldump|||
 do_print|||
 do_readline|||
 do_seek|||
@@ -2060,8 +2214,10 @@ filter_add|||
 filter_del|||
 filter_gets|||
 filter_read|||
+find_array_subscript|||
 find_beginning|||
 find_byclass|||
+find_hash_subscript|||
 find_in_my_stash|||
 find_runcv|||
 find_rundefsvoffset||5.009002|
@@ -2083,6 +2239,7 @@ free_global_struct|||
 free_tied_hv_pool|||
 free_tmps|||
 gen_constant_list|||
+get_arena|||
 get_av|5.006000||p
 get_context||5.006000|n
 get_cv|5.006000||p
@@ -2101,6 +2258,10 @@ get_sv|5.006000||p
 get_vtbl||5.005030|
 getcwd_sv||5.007002|
 getenv_len|||
+glob_2number|||
+glob_2pv|||
+glob_assign_glob|||
+glob_assign_ref|||
 gp_dup|||
 gp_free|||
 gp_ref|||
@@ -2136,6 +2297,7 @@ gv_fullname|||
 gv_handler||5.007001|
 gv_init_sv|||
 gv_init|||
+gv_name_set||5.009004|
 gv_stashpvn|5.006000||p
 gv_stashpv|||
 gv_stashsv|||
@@ -2144,10 +2306,11 @@ hek_dup|||
 hfreeentries|||
 hsplit|||
 hv_assert||5.009001|
-hv_auxinit|||
+hv_auxinit|||n
 hv_backreferences_p|||
 hv_clear_placeholders||5.009001|
 hv_clear|||
+hv_copy_hints_hv|||
 hv_delayfree_ent||5.004000|
 hv_delete_common|||
 hv_delete_ent||5.004000|
@@ -2158,6 +2321,7 @@ hv_exists_ent||5.004000|
 hv_exists|||
 hv_fetch_common|||
 hv_fetch_ent||5.004000|
+hv_fetchs|5.009003||p
 hv_fetch|||
 hv_free_ent||5.004000|
 hv_iterinit|||
@@ -2169,7 +2333,7 @@ hv_iternext|||
 hv_iterval|||
 hv_kill_backrefs|||
 hv_ksplit||5.004000|
-hv_magic_check|||
+hv_magic_check|||n
 hv_magic|||
 hv_name_set||5.009003|
 hv_notallowed|||
@@ -2181,6 +2345,7 @@ hv_riter_set||5.009003|
 hv_scalar||5.009001|
 hv_store_ent||5.004000|
 hv_store_flags||5.008000|
+hv_stores|5.009004||p
 hv_store|||
 hv_undef|||
 ibcmp_locale||5.004000|
@@ -2220,7 +2385,7 @@ isUPPER|||
 is_an_int|||
 is_gv_magical_sv|||
 is_gv_magical|||
-is_handle_constructor|||
+is_handle_constructor|||n
 is_list_assignment|||
 is_lvalue_sub||5.007001|
 is_uni_alnum_lc||5.006000|
@@ -2255,7 +2420,7 @@ is_utf8_alnumc||5.006000|
 is_utf8_alnum||5.006000|
 is_utf8_alpha||5.006000|
 is_utf8_ascii||5.006000|
-is_utf8_char_slow|||
+is_utf8_char_slow|||n
 is_utf8_char||5.006000|
 is_utf8_cntrl||5.006000|
 is_utf8_common|||
@@ -2298,8 +2463,12 @@ mXPUSHi|5.009002||p
 mXPUSHn|5.009002||p
 mXPUSHp|5.009002||p
 mXPUSHu|5.009002||p
+mad_free|||
+madlex|||
+madparse|||
 magic_clear_all_env|||
 magic_clearenv|||
+magic_clearhint|||
 magic_clearpack|||
 magic_clearsig|||
 magic_dump||5.006000|
@@ -2309,7 +2478,6 @@ magic_freeovrld|||
 magic_freeregexp|||
 magic_getarylen|||
 magic_getdefelem|||
-magic_getglob|||
 magic_getnkeys|||
 magic_getpack|||
 magic_getpos|||
@@ -2338,6 +2506,7 @@ magic_setdefelem|||
 magic_setenv|||
 magic_setfm|||
 magic_setglob|||
+magic_sethint|||
 magic_setisa|||
 magic_setmglob|||
 magic_setnkeys|||
@@ -2385,6 +2554,8 @@ missingterm|||
 mode_from_discipline|||
 modkids|||
 mod|||
+more_bodies|||
+more_sv|||
 moreswitches|||
 mul128|||
 mulexp10|||n
@@ -2435,6 +2606,7 @@ my_pclose||5.004000|
 my_popen_list||5.007001|
 my_popen||5.004000|
 my_setenv|||
+my_snprintf|5.009004||pvn
 my_socketpair||5.007003|n
 my_sprintf||5.009003|vn
 my_stat|||
@@ -2442,6 +2614,7 @@ my_strftime||5.007002|
 my_swabn|||n
 my_swap|||
 my_unexec|||
+my_vsnprintf||5.009004|n
 my|||
 need_utf8|||n
 newANONATTRSUB||5.006000|
@@ -2461,6 +2634,7 @@ newFORM|||
 newFOROP|||
 newGIVENOP||5.009003|
 newGIVWHENOP|||
+newGP|||
 newGVOP|||
 newGVREF|||
 newGVgen|||
@@ -2472,7 +2646,9 @@ newLISTOP|||
 newLOGOP|||
 newLOOPEX|||
 newLOOPOP|||
-newMYSUB||5.006000|
+newMADPROP|||
+newMADsv|||
+newMYSUB|||
 newNULLLIST|||
 newOP|||
 newPADOP||5.006000|
@@ -2495,14 +2671,17 @@ newSVpvf_nocontext|||vn
 newSVpvf||5.004000|v
 newSVpvn_share||5.007001|
 newSVpvn|5.006000||p
+newSVpvs|5.009003||p
 newSVpv|||
 newSVrv|||
 newSVsv|||
 newSVuv|5.006000||p
 newSV|||
+newTOKEN|||
 newUNOP|||
 newWHENOP||5.009003|
 newWHILEOP||5.009003|
+newXS_flags||5.009004|
 newXSproto||5.006000|
 newXS||5.006000|
 new_collate||5.006000|
@@ -2513,6 +2692,7 @@ new_logop|||
 new_numeric||5.006000|
 new_stackinfo||5.005000|
 new_version||5.009000|
+new_warnings_bitfield|||
 next_symbol|||
 nextargv|||
 nextchar|||
@@ -2532,14 +2712,18 @@ op_clear|||
 op_const_sv|||
 op_dump||5.006000|
 op_free|||
+op_getmad_weak|||
+op_getmad|||
 op_null||5.007002|
 op_refcnt_lock||5.009002|
 op_refcnt_unlock||5.009002|
+op_xmldump|||
 open_script|||
 pMY_CXT_|5.007003||p
 pMY_CXT|5.007003||p
 pTHX_|5.006000||p
 pTHX|5.006000||p
+packWARN|5.007003||p
 pack_cat||5.007003|
 pack_rec|||
 package|||
@@ -2556,16 +2740,17 @@ pad_fixup_inner_anons|||
 pad_free|||
 pad_leavemy|||
 pad_new|||
+pad_peg|||n
 pad_push|||
 pad_reset|||
 pad_setsv|||
-pad_sv|||
+pad_sv||5.009004|
 pad_swipe|||
 pad_tidy|||
 pad_undef|||
 parse_body|||
 parse_unicode_opts|||
-path_is_absolute|||
+path_is_absolute|||n
 peep|||
 pending_ident|||
 perl_alloc_using|||n
@@ -2578,8 +2763,10 @@ perl_free|||n
 perl_parse||5.006000|n
 perl_run|||n
 pidgone|||
+pm_description|||
 pmflag|||
 pmop_dump||5.006000|
+pmop_xmldump|||
 pmruntime|||
 pmtrans|||
 pop_scope|||
@@ -2587,9 +2774,12 @@ pregcomp|||
 pregexec|||
 pregfree|||
 prepend_elem|||
+prepend_madprops|||
+printbuf|||
 printf_nocontext|||vn
 ptr_table_clear|||
 ptr_table_fetch|||
+ptr_table_find|||n
 ptr_table_free|||
 ptr_table_new|||
 ptr_table_split|||
@@ -2609,6 +2799,9 @@ reentrant_init|||
 reentrant_retry|||vn
 reentrant_size|||
 ref_array_or_hash|||
+refcounted_he_chain_2hv|||
+refcounted_he_free|||
+refcounted_he_new|||
 refkids|||
 refto|||
 ref||5.009003|
@@ -2616,32 +2809,28 @@ reg_node|||
 reganode|||
 regatom|||
 regbranch|||
-regclass_swash||5.007003|
+regclass_swash||5.009004|
 regclass|||
 regcppop|||
 regcppush|||
-regcurly|||
+regcurly|||n
 regdump||5.005000|
 regexec_flags||5.005000|
-reghop3|||
-reghopmaybe3|||
-reghopmaybe|||
-reghop|||
+reghop3|||n
+reghopmaybe3|||n
 reginclass|||
 reginitcolors||5.006000|
 reginsert|||
 regmatch|||
 regnext||5.005000|
-regoptail|||
 regpiece|||
 regpposixcc|||
 regprop|||
-regrepeat_hard|||
 regrepeat|||
 regtail|||
 regtry|||
 reguni|||
-regwhite|||
+regwhite|||n
 reg|||
 repeatcpy|||
 report_evil_fh|||
@@ -2686,7 +2875,7 @@ save_generic_pvref||5.006001|
 save_generic_svref||5.005030|
 save_gp||5.004000|
 save_hash|||
-save_hek_flags|||
+save_hek_flags|||n
 save_helem||5.004050|
 save_hints||5.005000|
 save_hptr|||
@@ -2709,7 +2898,6 @@ save_set_svflags||5.009000|
 save_shared_pvref||5.007003|
 save_sptr|||
 save_svref|||
-save_threadsv||5.005000|
 save_vptr||5.006000|
 savepvn|||
 savepv|||
@@ -2718,7 +2906,7 @@ savestack_grow_cnt||5.008001|
 savestack_grow|||
 savesvpv||5.009002|
 sawparens|||
-scalar_mod_type|||
+scalar_mod_type|||n
 scalarboolean|||
 scalarkids|||
 scalarseq|||
@@ -2745,6 +2933,7 @@ scope|||
 screaminstr||5.005000|
 seed||5.008001|
 sequence_num|||
+sequence_tail|||
 sequence|||
 set_context||5.006000|n
 set_csh|||
@@ -2758,17 +2947,22 @@ share_hek||5.004000|
 si_dup|||
 sighandler|||n
 simplify_sort|||
+skipspace0|||
+skipspace1|||
+skipspace2|||
 skipspace|||
 sortcv_stacked|||
 sortcv_xsub|||
 sortcv|||
 sortsv_flags||5.009003|
 sortsv||5.007003|
+space_join_names_mortal|||
 ss_dup|||
 stack_grow|||
+start_force|||
 start_glob|||
 start_subparse||5.004000|
-stashpv_hvname_match||5.009003|
+stashpv_hvname_match||5.009004|
 stdize_locale|||
 strEQ|||
 strGE|||
@@ -2789,6 +2983,7 @@ sublex_start|||
 sv_2bool|||
 sv_2cv|||
 sv_2io|||
+sv_2iuv_common|||
 sv_2iuv_non_preserve|||
 sv_2iv_flags||5.009001|
 sv_2iv|||
@@ -2817,11 +3012,14 @@ sv_catpvn_flags||5.007002|
 sv_catpvn_mg|5.004050||p
 sv_catpvn_nomg|5.007002||p
 sv_catpvn|||
+sv_catpvs|5.009003||p
 sv_catpv|||
 sv_catsv_flags||5.007002|
 sv_catsv_mg|5.004050||p
 sv_catsv_nomg|5.007002||p
 sv_catsv|||
+sv_catxmlpvn|||
+sv_catxmlsv|||
 sv_chop|||
 sv_clean_all|||
 sv_clean_objs|||
@@ -2862,10 +3060,15 @@ sv_newmortal|||
 sv_newref|||
 sv_nolocking||5.007003|
 sv_nosharing||5.007003|
-sv_nounlocking||5.007003|
+sv_nounlocking|||
 sv_nv||5.005000|
 sv_peek||5.005000|
+sv_pos_b2u_forwards|||
+sv_pos_b2u_midway|||
 sv_pos_b2u||5.006000|
+sv_pos_u2b_cached|||
+sv_pos_u2b_forwards|||n
+sv_pos_u2b_midway|||n
 sv_pos_u2b||5.006000|
 sv_pvbyten_force||5.006000|
 sv_pvbyten||5.006000|
@@ -2899,6 +3102,7 @@ sv_setpviv_mg||5.008001|
 sv_setpviv||5.008001|
 sv_setpvn_mg|5.006000||p
 sv_setpvn|||
+sv_setpvs|5.009004||p
 sv_setpv|||
 sv_setref_iv|||
 sv_setref_nv|||
@@ -2922,7 +3126,8 @@ sv_unref_flags||5.007001|
 sv_unref|||
 sv_untaint||5.004000|
 sv_upgrade|||
-sv_usepvn_mg|5.006000||p
+sv_usepvn_flags||5.009004|
+sv_usepvn_mg|5.004050||p
 sv_usepvn|||
 sv_utf8_decode||5.006000|
 sv_utf8_downgrade||5.006000|
@@ -2936,6 +3141,7 @@ sv_vcatpvf|5.006000|5.004000|p
 sv_vsetpvf_mg|5.006000|5.004000|p
 sv_vsetpvfn||5.004000|
 sv_vsetpvf|5.006000|5.004000|p
+sv_xmlpeek|||
 svtype|||
 swallow_bom|||
 swash_fetch||5.007002|
@@ -2963,6 +3169,8 @@ to_utf8_lower||5.007003|
 to_utf8_substr|||
 to_utf8_title||5.007003|
 to_utf8_upper||5.007003|
+token_free|||
+token_getmad|||
 tokenize_use|||
 tokeq|||
 tokereport|||
@@ -2984,8 +3192,7 @@ utf16_to_utf8||5.006001|
 utf8_distance||5.006000|
 utf8_hop||5.006000|
 utf8_length||5.007001|
-utf8_mg_pos_init|||
-utf8_mg_pos|||
+utf8_mg_pos_cache_update|||
 utf8_to_bytes||5.006001|
 utf8_to_uvchr||5.007001|
 utf8_to_uvuni||5.007001|
@@ -3020,12 +3227,20 @@ vwarn||5.006000|
 wait4pid|||
 warn_nocontext|||vn
 warner_nocontext|||vn
-warner||5.006000|v
+warner|5.006000|5.004000|pv
 warn|||v
 watch|||
 whichsig|||
 write_no_mem|||
 write_to_stderr|||
+xmldump_all|||
+xmldump_attr|||
+xmldump_eval|||
+xmldump_form|||
+xmldump_indent|||v
+xmldump_packsubs|||
+xmldump_sub|||
+xmldump_vindent|||
 yyerror|||
 yylex|||
 yyparse|||
@@ -4219,12 +4434,33 @@ __DATA__
 #    define PERL_UNUSED_DECL
 #  endif
 #endif
+
+#ifndef PERL_UNUSED_ARG
+#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+#    include <note.h>
+#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+#  else
+#    define PERL_UNUSED_ARG(x) ((void)x)
+#  endif
+#endif
+
+#ifndef PERL_UNUSED_VAR
+#  define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
+#ifndef PERL_UNUSED_CONTEXT
+#  ifdef USE_ITHREADS
+#    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
+#  else
+#    define PERL_UNUSED_CONTEXT
+#  endif
+#endif
 #ifndef NOOP
-#  define NOOP                           (void)0
+#  define NOOP                           /*EMPTY*/(void)0
 #endif
 
 #ifndef dNOOP
-#  define dNOOP                          extern int Perl___notused PERL_UNUSED_DECL
+#  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
 #endif
 
 #ifndef NVTYPE
@@ -4383,6 +4619,15 @@ typedef NVTYPE NV;
           return;                                         \
       } STMT_END
 #endif
+#ifndef PERL_ABS
+#  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x))
+#endif
+#ifndef dVAR
+#  define dVAR                           dNOOP
+#endif
+#ifndef SVf
+#  define SVf                            "_"
+#endif
 
 #ifndef PERL_SIGNALS_UNSAFE_FLAG
 
@@ -5097,6 +5342,267 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
      SvSETMAGIC(sv);                                                       \
    } STMT_END
 #endif
+#ifndef WARN_ALL
+#  define WARN_ALL                       0
+#endif
+
+#ifndef WARN_CLOSURE
+#  define WARN_CLOSURE                   1
+#endif
+
+#ifndef WARN_DEPRECATED
+#  define WARN_DEPRECATED                2
+#endif
+
+#ifndef WARN_EXITING
+#  define WARN_EXITING                   3
+#endif
+
+#ifndef WARN_GLOB
+#  define WARN_GLOB                      4
+#endif
+
+#ifndef WARN_IO
+#  define WARN_IO                        5
+#endif
+
+#ifndef WARN_CLOSED
+#  define WARN_CLOSED                    6
+#endif
+
+#ifndef WARN_EXEC
+#  define WARN_EXEC                      7
+#endif
+
+#ifndef WARN_LAYER
+#  define WARN_LAYER                     8
+#endif
+
+#ifndef WARN_NEWLINE
+#  define WARN_NEWLINE                   9
+#endif
+
+#ifndef WARN_PIPE
+#  define WARN_PIPE                      10
+#endif
+
+#ifndef WARN_UNOPENED
+#  define WARN_UNOPENED                  11
+#endif
+
+#ifndef WARN_MISC
+#  define WARN_MISC                      12
+#endif
+
+#ifndef WARN_NUMERIC
+#  define WARN_NUMERIC                   13
+#endif
+
+#ifndef WARN_ONCE
+#  define WARN_ONCE                      14
+#endif
+
+#ifndef WARN_OVERFLOW
+#  define WARN_OVERFLOW                  15
+#endif
+
+#ifndef WARN_PACK
+#  define WARN_PACK                      16
+#endif
+
+#ifndef WARN_PORTABLE
+#  define WARN_PORTABLE                  17
+#endif
+
+#ifndef WARN_RECURSION
+#  define WARN_RECURSION                 18
+#endif
+
+#ifndef WARN_REDEFINE
+#  define WARN_REDEFINE                  19
+#endif
+
+#ifndef WARN_REGEXP
+#  define WARN_REGEXP                    20
+#endif
+
+#ifndef WARN_SEVERE
+#  define WARN_SEVERE                    21
+#endif
+
+#ifndef WARN_DEBUGGING
+#  define WARN_DEBUGGING                 22
+#endif
+
+#ifndef WARN_INPLACE
+#  define WARN_INPLACE                   23
+#endif
+
+#ifndef WARN_INTERNAL
+#  define WARN_INTERNAL                  24
+#endif
+
+#ifndef WARN_MALLOC
+#  define WARN_MALLOC                    25
+#endif
+
+#ifndef WARN_SIGNAL
+#  define WARN_SIGNAL                    26
+#endif
+
+#ifndef WARN_SUBSTR
+#  define WARN_SUBSTR                    27
+#endif
+
+#ifndef WARN_SYNTAX
+#  define WARN_SYNTAX                    28
+#endif
+
+#ifndef WARN_AMBIGUOUS
+#  define WARN_AMBIGUOUS                 29
+#endif
+
+#ifndef WARN_BAREWORD
+#  define WARN_BAREWORD                  30
+#endif
+
+#ifndef WARN_DIGIT
+#  define WARN_DIGIT                     31
+#endif
+
+#ifndef WARN_PARENTHESIS
+#  define WARN_PARENTHESIS               32
+#endif
+
+#ifndef WARN_PRECEDENCE
+#  define WARN_PRECEDENCE                33
+#endif
+
+#ifndef WARN_PRINTF
+#  define WARN_PRINTF                    34
+#endif
+
+#ifndef WARN_PROTOTYPE
+#  define WARN_PROTOTYPE                 35
+#endif
+
+#ifndef WARN_QW
+#  define WARN_QW                        36
+#endif
+
+#ifndef WARN_RESERVED
+#  define WARN_RESERVED                  37
+#endif
+
+#ifndef WARN_SEMICOLON
+#  define WARN_SEMICOLON                 38
+#endif
+
+#ifndef WARN_TAINT
+#  define WARN_TAINT                     39
+#endif
+
+#ifndef WARN_THREADS
+#  define WARN_THREADS                   40
+#endif
+
+#ifndef WARN_UNINITIALIZED
+#  define WARN_UNINITIALIZED             41
+#endif
+
+#ifndef WARN_UNPACK
+#  define WARN_UNPACK                    42
+#endif
+
+#ifndef WARN_UNTIE
+#  define WARN_UNTIE                     43
+#endif
+
+#ifndef WARN_UTF8
+#  define WARN_UTF8                      44
+#endif
+
+#ifndef WARN_VOID
+#  define WARN_VOID                      45
+#endif
+
+#ifndef WARN_ASSERTIONS
+#  define WARN_ASSERTIONS                46
+#endif
+#ifndef packWARN
+#  define packWARN(a)                    (a)
+#endif
+
+#ifndef ckWARN
+#  ifdef G_WARN_ON
+#    define  ckWARN(a)                  (PL_dowarn & G_WARN_ON)
+#  else
+#    define  ckWARN(a)                  PL_dowarn
+#  endif
+#endif
+
+/* warner depends on vnewSVpvf */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(warner)
+#if defined(NEED_warner)
+static void DPPP_(my_warner)(U32 err, const char *pat, ...);
+static
+#else
+extern void DPPP_(my_warner)(U32 err, const char *pat, ...);
+#endif
+
+#define Perl_warner DPPP_(my_warner)
+
+#if defined(NEED_warner) || defined(NEED_warner_GLOBAL)
+
+void
+DPPP_(my_warner)(U32 err, const char *pat, ...)
+{
+  SV *sv;
+  va_list args;
+
+  PERL_UNUSED_ARG(err);
+
+  va_start(args, pat);
+  sv = vnewSVpvf(pat, &args);
+  va_end(args);
+  sv_2mortal(sv);
+  warn("%s", SvPV_nolen(sv));
+}
+
+#define warner  Perl_warner
+
+/* Perl_warner_nocontext depends on warner */
+#define Perl_warner_nocontext  Perl_warner
+
+#endif
+#endif
+
+/* concatenating with "" ensures that only literal strings are accepted as argument
+ * note that STR_WITH_LEN() can't be used as argument to macros or functions that
+ * under some configurations might be macros
+ */
+#ifndef STR_WITH_LEN
+#  define STR_WITH_LEN(s)                (s ""), (sizeof(s)-1)
+#endif
+#ifndef newSVpvs
+#  define newSVpvs(str)                  newSVpvn(str "", sizeof(str) - 1)
+#endif
+
+#ifndef sv_catpvs
+#  define sv_catpvs(sv, str)             sv_catpvn(sv, str "", sizeof(str) - 1)
+#endif
+
+#ifndef sv_setpvs
+#  define sv_setpvs(sv, str)             sv_setpvn(sv, str "", sizeof(str) - 1)
+#endif
+
+#ifndef hv_fetchs
+#  define hv_fetchs(hv,key,lval)         hv_fetch(hv, key "", sizeof(key) - 1, lval)
+#endif
+
+#ifndef hv_stores
+#  define hv_stores(hv,key,val,hash)     hv_store(hv, key "", sizeof(key) - 1, val, hash)
+#endif
 #ifndef SvGETMAGIC
 #  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
 #endif
@@ -5378,6 +5884,9 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
      SvSETMAGIC(TeMpSv);                \
    } STMT_END
 #endif
+#ifndef SvVSTRING_mg
+#  define SvVSTRING_mg(sv)               (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
+#endif
 
 #ifdef USE_ITHREADS
 #ifndef CopFILE
@@ -6096,6 +6605,40 @@ DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result)
 #endif
 #endif
 
+#if !defined(my_snprintf)
+#if defined(NEED_my_snprintf)
+static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
+static
+#else
+extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
+#endif
+
+#define my_snprintf DPPP_(my_my_snprintf)
+#define Perl_my_snprintf DPPP_(my_my_snprintf)
+
+#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL)
+
+int
+DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
+{
+    dTHX;
+    int retval;
+    va_list ap;
+    va_start(ap, format);
+#ifdef HAS_VSNPRINTF
+    retval = vsnprintf(buffer, len, format, ap);
+#else
+    retval = vsprintf(buffer, format, ap);
+#endif
+    va_end(ap);
+    if (retval >= (int)len)
+       Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
+    return retval;
+}
+
+#endif
+#endif
+
 #ifdef NO_XSLOCKS
 #  ifdef dJMPENV
 #    define dXCPT             dJMPENV; int rEtV = 0
index a2ebac4..b658e89 100644 (file)
@@ -51,6 +51,9 @@
 /* ---- from parts/inc/newRV ---- */
 #define NEED_newRV_noinc
 
+/* ---- from parts/inc/snprintf ---- */
+#define NEED_my_snprintf
+
 /* ---- from parts/inc/sv_xpvf ---- */
 #define NEED_vnewSVpvf
 #define NEED_sv_catpvf_mg
@@ -65,6 +68,9 @@
 /* ---- from parts/inc/variables ---- */
 #define NEED_PL_signals
 
+/* ---- from parts/inc/warn ---- */
+#define NEED_warner
+
 /* =========== END XSINIT =================================================== */
 
 #include "ppport.h"
@@ -563,6 +569,14 @@ sv_usepvn_mg(sv, sv2)
                Copy(str, copy, len+1, char);
                sv_usepvn_mg(sv, copy, len);
 
+int
+SvVSTRING_mg(sv)
+       SV *sv;
+       CODE:
+               RETVAL = SvVSTRING_mg(sv) != NULL;
+       OUTPUT:
+               RETVAL
+
 ##----------------------------------------------------------------------
 ##  XSUBs from parts/inc/memory
 ##----------------------------------------------------------------------
@@ -740,6 +754,20 @@ prepush()
                  XSRETURN(1);
                }
 
+int
+PERL_ABS(a)
+       int a
+
+void
+SVf(x)
+       SV *x
+       PPCODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+               x = newSVpvf("[%"SVf"]", x);
+#endif
+               XPUSHs(x);
+               XSRETURN(1);
+
 ##----------------------------------------------------------------------
 ##  XSUBs from parts/inc/mPUSH
 ##----------------------------------------------------------------------
@@ -884,6 +912,60 @@ newRV_noinc_REFCNT()
                RETVAL
 
 ##----------------------------------------------------------------------
+##  XSUBs from parts/inc/pvs
+##----------------------------------------------------------------------
+
+void
+newSVpvs()
+       PPCODE:
+               XPUSHs(newSVpvs("newSVpvs"));
+               XSRETURN(1);
+
+void
+sv_catpvs(sv)
+       SV *sv
+       PPCODE:
+               sv_catpvs(sv, "sv_catpvs");
+
+void
+sv_setpvs(sv)
+       SV *sv
+       PPCODE:
+               sv_setpvs(sv, "sv_setpvs");
+
+void
+hv_fetchs(hv)
+       SV *hv
+       PREINIT:
+               SV **s;
+       PPCODE:
+               s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0);
+               XPUSHs(sv_mortalcopy(*s));
+               XSRETURN(1);
+
+void
+hv_stores(hv, sv)
+       SV *hv
+       SV *sv
+       PPCODE:
+               hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0);
+
+##----------------------------------------------------------------------
+##  XSUBs from parts/inc/snprintf
+##----------------------------------------------------------------------
+
+void
+my_snprintf()
+       PREINIT:
+               char buf[128];
+               int len;
+       PPCODE:
+               len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42);
+               XPUSHs(newSViv(len));
+               XPUSHs(newSVpv(buf, 0));
+               XSRETURN(2);
+
+##----------------------------------------------------------------------
 ##  XSUBs from parts/inc/Sv_set
 ##----------------------------------------------------------------------
 
@@ -913,6 +995,15 @@ TestSvPVX_mutable(sv)
         OUTPUT:
                 RETVAL
 
+void
+TestSvSTASH_set(sv, name)
+        SV *sv
+       char *name
+        CODE:
+               sv = SvRV(sv);
+               SvREFCNT_dec(SvSTASH(sv));
+                SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0)));
+
 ##----------------------------------------------------------------------
 ##  XSUBs from parts/inc/sv_xpvf
 ##----------------------------------------------------------------------
@@ -1118,3 +1209,36 @@ compare_PL_signals()
                }
        OUTPUT:
                RETVAL
+
+##----------------------------------------------------------------------
+##  XSUBs from parts/inc/warn
+##----------------------------------------------------------------------
+
+void
+warner()
+       CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+               warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner()
+       CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+               Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner_nocontext()
+       CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+               Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42);
+#endif
+
+void
+ckWARN()
+       CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+               if (ckWARN(WARN_MISC))
+                 Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42);
+#endif
index ee6ec75..c6a3f8b 100644 (file)
@@ -4,9 +4,9 @@
 #
 ################################################################################
 #
-#  $Revision: 41 $
+#  $Revision: 42 $
 #  $Author: mhx $
-#  $Date: 2006/01/14 18:07:56 +0100 $
+#  $Date: 2006/05/18 23:13:47 +0200 $
 #
 ################################################################################
 #
@@ -335,9 +335,9 @@ __DATA__
 #
 ################################################################################
 #
-#  $Revision: 41 $
+#  $Revision: 42 $
 #  $Author: mhx $
-#  $Date: 2006/01/14 18:07:56 +0100 $
+#  $Date: 2006/05/18 23:13:47 +0200 $
 #
 ################################################################################
 #
@@ -499,7 +499,7 @@ require DynaLoader;
 use strict;
 use vars qw($VERSION @ISA $data);
 
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
 
 @ISA = qw(DynaLoader);
 
@@ -603,12 +603,18 @@ __DATA__
 
 %include sv_xpvf
 
+%include warn
+
+%include pvs
+
 %include magic
 
 %include cop
 
 %include grok
 
+%include snprintf
+
 %include exception
 
 #endif /* _P_P_PORTABILITY_H_ */
index 3728069..6214d6c 100644 (file)
@@ -1,5 +1,13 @@
 TODO:
 
+* see if we can add more stuff from recent perls
+
+* see if we can implement sv_catpvf() for < 5.004
+
+* add hv_stores() to blead
+
+* Andy's SvREFCNT_inc patches?
+
 * MULTICALL ?
 
 * improve apicheck (things like utf8_mg_pos_init() are
index d17345b..5a43ce0 100644 (file)
@@ -5,9 +5,9 @@
 #
 ################################################################################
 #
-#  $Revision: 14 $
+#  $Revision: 16 $
 #  $Author: mhx $
-#  $Date: 2006/01/14 18:07:58 +0100 $
+#  $Date: 2006/05/19 16:15:51 +0200 $
 #
 ################################################################################
 #
@@ -152,6 +152,7 @@ print OUT <<HEAD;
 #define NEED_grok_number
 #define NEED_grok_numeric_radix
 #define NEED_grok_oct
+#define NEED_my_snprintf
 #define NEED_newCONSTSUB
 #define NEED_newRV_noinc
 #define NEED_sv_2pv_nolen
@@ -161,6 +162,7 @@ print OUT <<HEAD;
 #define NEED_sv_setpvf_mg
 #define NEED_sv_setpvf_mg_nocontext
 #define NEED_vnewSVpvf
+#define NEED_warner
 
 
 #include "ppport.h"
@@ -200,6 +202,7 @@ for $f (@f) {
     }
     my($n, $p, $d) = $a =~ /^ (\w+(?:\s+\w+)*)\s*  # type name  => $n
                               (\**)                # pointer    => $p
+                              (?:\s*const\s*)?     # const
                               ((?:\[[^\]]*\])*)    # dimension  => $d
                             $/x
                      or die "$0 - cannot parse argument: [$a]\n";
index 1a7609b..337e217 100644 (file)
@@ -34,6 +34,7 @@ Am|bool|SvVOK|SV* sv
 Am|char*|HePV|HE* he|STRLEN len
 Am|char*|HvNAME|HV* stash
 Am|char*|SvEND|SV* sv
+Am|char*|SvGAMAGIC|SV* sv
 Am|char *|SvGROW|SV* sv|STRLEN len
 Am|char*|SvPVbyte_force|SV* sv|STRLEN len
 Am|char*|SvPVbyte_nolen|SV* sv
@@ -113,9 +114,14 @@ Am|SV*|HeSVKEY|HE* he
 Am|SV*|HeSVKEY_set|HE* he|SV* sv
 Am|SV*|HeVAL|HE* he
 Am|SV*|newRV_inc|SV* sv
-Am|SV*|NEWSV|int id|STRLEN len
 Am|SV*|ST|int ix
+Am|SV*|SvREFCNT_inc_NN|SV* sv
+Am|SV*|SvREFCNT_inc_simple_NN|SV* sv
+Am|SV*|SvREFCNT_inc_simple|SV* sv
+Am|SV*|SvREFCNT_inc_simple_void|SV* sv
 Am|SV*|SvREFCNT_inc|SV* sv
+Am|SV*|SvREFCNT_inc_void_NN|SV* sv
+Am|SV*|SvREFCNT_inc_void|SV* sv
 Am|SV*|SvRV|SV* sv
 Am|svtype|SvTYPE|SV* sv
 Ams||XCPT_RETHROW
@@ -177,7 +183,9 @@ Am|void|mXPUSHu|UV uv
 Am|void|Newxc|void* ptr|int nitems|type|cast
 Am|void|Newx|void* ptr|int nitems|type
 Am|void|Newxz|void* ptr|int nitems|type
+Am|void|PoisonNew|void* dest|int nitems|type
 Am|void|Poison|void* dest|int nitems|type
+Am|void|PoisonWith|void* dest|int nitems|type|U8 byte
 Am|void|PUSHi|IV iv
 Am|void|PUSHMARK|SP
 Am|void|PUSHmortal
@@ -222,7 +230,7 @@ Am|void|sv_setsv_nomg|SV* dsv|SV* ssv
 Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv
 Am|void|SvSetSV|SV* dsb|SV* ssv
 Am|void|SvSHARE|SV* sv
-Am|void|SvSTASH_set|SV* sv|STASH* val
+Am|void|SvSTASH_set|SV* sv|HV* val
 Am|void|SvTAINTED_off|SV* sv
 Am|void|SvTAINTED_on|SV* sv
 Am|void|SvTAINT|SV* sv
index 0888015..fdd3c62 100644 (file)
@@ -6,6 +6,7 @@ PL_sv_yes                      # E
 SvGETMAGIC                     # U
 sv_catpvn_mg                   # U
 sv_catsv_mg                    # U
+sv_usepvn_mg                   # U
 AvFILLp                        # added by devel/scanprov
 DEFSV                          # added by devel/scanprov
 ERRSV                          # added by devel/scanprov
index 9d9f62c..46ab41a 100644 (file)
@@ -222,7 +222,6 @@ newBINOP                       # E (Perl_newBINOP)
 newCONDOP                      # E (Perl_newCONDOP)
 newCONSTSUB                    # E (Perl_newCONSTSUB)
 newCVREF                       # E (Perl_newCVREF)
-newFORM                        # E (Perl_newFORM)
 newFOROP                       # E (Perl_newFOROP)
 newGVOP                        # E (Perl_newGVOP)
 newGVREF                       # E (Perl_newGVREF)
@@ -235,7 +234,6 @@ newLISTOP                      # E (Perl_newLISTOP)
 newLOGOP                       # E (Perl_newLOGOP)
 newLOOPEX                      # E (Perl_newLOOPEX)
 newLOOPOP                      # E (Perl_newLOOPOP)
-newMYSUB                       # E
 newNULLLIST                    # E (Perl_newNULLLIST)
 newOP                          # E (Perl_newOP)
 newPADOP                       # E
@@ -269,7 +267,6 @@ new_stackinfo                  # E (Perl_new_stackinfo)
 ninstr                         # E (Perl_ninstr)
 op_dump                        # E
 op_free                        # E (Perl_op_free)
-pad_sv                         # E (Perl_pad_sv)
 perl_parse                     # E (perl_parse)
 pmflag                         # E (Perl_pmflag)
 pmop_dump                      # E
@@ -326,7 +323,6 @@ save_re_context                # E
 save_scalar                    # E (Perl_save_scalar)
 save_sptr                      # E (Perl_save_sptr)
 save_svref                     # E (Perl_save_svref)
-save_threadsv                  # E (Perl_save_threadsv)
 save_vptr                      # E
 savepv                         # E (Perl_savepv)
 savepvn                        # E (Perl_savepvn)
@@ -422,8 +418,6 @@ 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_usepvn                      # E (Perl_sv_usepvn)
-sv_usepvn_mg                   # E (Perl_sv_usepvn_mg)
 sv_utf8_decode                 # E
 sv_utf8_downgrade              # E
 sv_utf8_encode                 # E
@@ -480,11 +474,57 @@ PTR2IV                         # added by devel/scanprov
 PTR2NV                         # added by devel/scanprov
 PTR2UV                         # added by devel/scanprov
 PTRV                           # added by devel/scanprov
+Perl_warner                    # added by devel/scanprov
+Perl_warner_nocontext          # added by devel/scanprov
 UVSIZE                         # added by devel/scanprov
 UVTYPE                         # added by devel/scanprov
 UVof                           # added by devel/scanprov
 UVuf                           # added by devel/scanprov
 UVxf                           # added by devel/scanprov
+WARN_ALL                       # added by devel/scanprov
+WARN_AMBIGUOUS                 # added by devel/scanprov
+WARN_BAREWORD                  # added by devel/scanprov
+WARN_CLOSED                    # added by devel/scanprov
+WARN_CLOSURE                   # added by devel/scanprov
+WARN_DEBUGGING                 # added by devel/scanprov
+WARN_DEPRECATED                # added by devel/scanprov
+WARN_DIGIT                     # added by devel/scanprov
+WARN_EXEC                      # added by devel/scanprov
+WARN_EXITING                   # added by devel/scanprov
+WARN_GLOB                      # added by devel/scanprov
+WARN_INPLACE                   # added by devel/scanprov
+WARN_INTERNAL                  # added by devel/scanprov
+WARN_IO                        # added by devel/scanprov
+WARN_MALLOC                    # added by devel/scanprov
+WARN_MISC                      # added by devel/scanprov
+WARN_NEWLINE                   # added by devel/scanprov
+WARN_NUMERIC                   # added by devel/scanprov
+WARN_ONCE                      # added by devel/scanprov
+WARN_OVERFLOW                  # added by devel/scanprov
+WARN_PACK                      # added by devel/scanprov
+WARN_PARENTHESIS               # added by devel/scanprov
+WARN_PIPE                      # added by devel/scanprov
+WARN_PORTABLE                  # added by devel/scanprov
+WARN_PRECEDENCE                # added by devel/scanprov
+WARN_PRINTF                    # added by devel/scanprov
+WARN_PROTOTYPE                 # added by devel/scanprov
+WARN_QW                        # added by devel/scanprov
+WARN_RECURSION                 # added by devel/scanprov
+WARN_REDEFINE                  # added by devel/scanprov
+WARN_REGEXP                    # added by devel/scanprov
+WARN_RESERVED                  # added by devel/scanprov
+WARN_SEMICOLON                 # added by devel/scanprov
+WARN_SEVERE                    # added by devel/scanprov
+WARN_SIGNAL                    # added by devel/scanprov
+WARN_SUBSTR                    # added by devel/scanprov
+WARN_SYNTAX                    # added by devel/scanprov
+WARN_TAINT                     # added by devel/scanprov
+WARN_UNINITIALIZED             # added by devel/scanprov
+WARN_UNOPENED                  # added by devel/scanprov
+WARN_UNPACK                    # added by devel/scanprov
+WARN_UNTIE                     # added by devel/scanprov
+WARN_UTF8                      # added by devel/scanprov
+WARN_VOID                      # added by devel/scanprov
 XSprePUSH                      # added by devel/scanprov
 aTHX                           # added by devel/scanprov
 aTHX_                          # added by devel/scanprov
index eaebd56..5daad5a 100644 (file)
@@ -1,4 +1,5 @@
 5.006001
+SvGAMAGIC                      # E
 apply_attrs_string             # U
 bytes_to_utf8                  # E
 gv_efullname4                  # U
index 8efc978..a526903 100644 (file)
@@ -69,3 +69,4 @@ PERL_MAGIC_tiedscalar          # added by devel/scanprov
 PERL_MAGIC_uvar                # added by devel/scanprov
 PERL_MAGIC_vec                 # added by devel/scanprov
 PERL_UNUSED_DECL               # added by devel/scanprov
+PERL_UNUSED_VAR                # added by devel/scanprov
index 2d41668..63a0449 100644 (file)
@@ -41,7 +41,6 @@ my_socketpair                  # E
 pack_cat                       # E
 perl_destruct                  # E (perl_destruct)
 pv_uni_display                 # E
-regclass_swash                 # E (Perl_regclass_swash)
 save_shared_pvref              # E
 savesharedpv                   # E
 sortsv                         # E
@@ -49,7 +48,6 @@ sv_copypv                      # E
 sv_magicext                    # E
 sv_nolocking                   # E
 sv_nosharing                   # E
-sv_nounlocking                 # E
 sv_pvn_nomg                    # E
 sv_recode_to_utf8              # E
 sv_uni_display                 # E
@@ -84,3 +82,4 @@ dMY_CXT                        # added by devel/scanprov
 dMY_CXT_SV                     # added by devel/scanprov
 pMY_CXT                        # added by devel/scanprov
 pMY_CXT_                       # added by devel/scanprov
+packWARN                       # added by devel/scanprov
index 5af2a55..9a91f3d 100644 (file)
@@ -4,3 +4,5 @@ hv_iternext_flags              # E
 hv_store_flags                 # E
 is_utf8_idcont                 # U
 nothreadhook                   # U
+WARN_LAYER                     # added by devel/scanprov
+WARN_THREADS                   # added by devel/scanprov
index 2060d15..d0fec85 100644 (file)
@@ -14,6 +14,7 @@ sv_setpviv                     # U
 sv_setpviv_mg                  # U
 unpackstring                   # U
 IN_PERL_COMPILETIME            # added by devel/scanprov
+PERL_ABS                       # added by devel/scanprov
 PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov
 PERL_MAGIC_utf8                # added by devel/scanprov
 PERL_MAGIC_vstring             # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5008008 b/ext/Devel/PPPort/parts/base/5008008
new file mode 100644 (file)
index 0000000..f17b19f
--- /dev/null
@@ -0,0 +1 @@
+5.008008
index 8b45dc7..8c39ded 100644 (file)
@@ -5,3 +5,4 @@ upg_version                    # E
 vcmp                           # U
 vnumify                        # E
 vstringify                     # E
+WARN_ASSERTIONS                # added by devel/scanprov
index c448c06..e50d5f1 100644 (file)
@@ -1,13 +1,9 @@
 5.009003
-MULTICALL                      # E
 Newx                           # E
 Newxc                          # E
 Newxz                          # E
-POP_MULTICALL                  # E
-PUSH_MULTICALL                 # E
 SvMAGIC_set                    # U
 SvRV_set                       # U
-SvSTASH_set                    # E
 SvUV_set                       # U
 av_arylen_p                    # E
 ckwarn                         # U
@@ -33,8 +29,12 @@ newWHENOP                      # E
 newWHILEOP                     # E (Perl_newWHILEOP)
 ref                            # E (Perl_ref)
 sortsv_flags                   # U
-stashpv_hvname_match           # U
 vverify                        # U
-PERL_BCDVERSION                # added by devel/scanprov
+PERL_UNUSED_ARG                # added by devel/scanprov
+STR_WITH_LEN                   # added by devel/scanprov
 SvPVX_const                    # added by devel/scanprov
 SvPVX_mutable                  # added by devel/scanprov
+dVAR                           # added by devel/scanprov
+hv_fetchs                      # added by devel/scanprov
+newSVpvs                       # added by devel/scanprov
+sv_catpvs                      # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5009004 b/ext/Devel/PPPort/parts/base/5009004
new file mode 100644 (file)
index 0000000..eca5e86
--- /dev/null
@@ -0,0 +1,26 @@
+5.009004
+MULTICALL                      # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+PoisonNew                      # E
+PoisonWith                     # E
+SvREFCNT_inc_NN                # E
+SvREFCNT_inc_simple            # E
+SvREFCNT_inc_simple_NN         # E
+SvREFCNT_inc_simple_void       # E
+SvREFCNT_inc_void              # E
+SvREFCNT_inc_void_NN           # E
+SvSTASH_set                    # E
+gv_name_set                    # U
+my_snprintf                    # U
+my_vsnprintf                   # U
+newXS_flags                    # E
+pad_sv                         # U
+regclass_swash                 # E (Perl_regclass_swash)
+stashpv_hvname_match           # U
+sv_usepvn_flags                # U
+PERL_BCDVERSION                # added by devel/scanprov
+PERL_UNUSED_CONTEXT            # added by devel/scanprov
+SvVSTRING_mg                   # added by devel/scanprov
+hv_stores                      # added by devel/scanprov
+sv_setpvs                      # added by devel/scanprov
index 2f0a8fd..dac19c7 100644 (file)
@@ -129,6 +129,7 @@ ApR |UV     |cast_uv        |NV f
 ApR    |I32    |my_chsize      |int fd|Off_t length
 #endif
 pR     |OP*    |convert        |I32 optype|I32 flags|NULLOK OP* o
+pM     |PERL_CONTEXT*  |create_eval_scope|U32 flags
 : croak()'s first parm can be NULL.  Otherwise, mod_perl breaks.
 Afprd  |void   |croak          |NULLOK const char* pat|...
 Apr    |void   |vcroak         |NN const char* pat|NULLOK va_list* args
@@ -149,7 +150,10 @@ Afnp       |void   |sv_setpvf_mg_nocontext|NN SV* sv|NN const char* pat|...
 Afnp   |int    |fprintf_nocontext|NN PerlIO* stream|NN const char* fmt|...
 Afnp   |int    |printf_nocontext|NN const char* fmt|...
 #endif
-p      |void   |cv_ckproto     |NN const CV* cv|NULLOK const GV* gv|NULLOK const char* p
+bp     |void   |cv_ckproto     |NN const CV* cv|NULLOK const GV* gv\
+                               |NULLOK const char* p
+p      |void   |cv_ckproto_len |NN const CV* cv|NULLOK const GV* gv\
+                               |NULLOK const char* p|const STRLEN len
 pd     |CV*    |cv_clone       |NN CV* proto
 ApdR   |SV*    |gv_const_sv    |NN GV* gv
 ApdR   |SV*    |cv_const_sv    |NULLOK CV* cv
@@ -164,7 +168,7 @@ ApPR        |char** |get_op_names
 pPR    |const char*    |get_no_modify
 pPR    |U32*   |get_opargs
 ApPR   |PPADDR_t*|get_ppaddr
-EpR    |I32    |cxinc
+EXpR   |I32    |cxinc
 Afp    |void   |deb            |NN const char* pat|...
 Ap     |void   |vdeb           |NN const char* pat|NULLOK va_list* args
 Ap     |void   |debprofdump
@@ -173,6 +177,7 @@ Ap  |I32    |debstack
 Ap     |I32    |debstackptrs
 Ap     |char*  |delimcpy       |NN char* to|NN const char* toend|NN const char* from \
                                |NN const char* fromend|int delim|NN I32* retlen
+pM     |void   |delete_eval_scope
 p      |void   |deprecate      |NN const char* s
 p      |void   |deprecate_old  |NN const char* s
 Afp    |OP*    |die            |NULLOK const char* pat|...
@@ -180,7 +185,7 @@ p   |OP*    |vdie           |NULLOK const char* pat|NULLOK va_list* args
 p      |OP*    |die_where      |NULLOK const char* message|STRLEN msglen
 Ap     |void   |dounwind       |I32 cxix
 pmb    |bool   |do_aexec       |NULLOK SV* really|NN SV** mark|NN SV** sp
-p      |bool   |do_aexec5      |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int flag
+p      |bool   |do_aexec5      |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
 Ap     |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 p      |void   |do_chop        |NN SV* asv|NN SV* sv
 Ap     |bool   |do_close       |NN GV* gv|bool not_implicit
@@ -198,7 +203,7 @@ Ap  |int    |do_spawn       |NN char* cmd
 Ap     |int    |do_spawn_nowait|NN char* cmd
 #endif
 #if !defined(WIN32)
-p      |bool   |do_exec3       |NN const char* cmd|int fd|int flag
+p      |bool   |do_exec3       |NN const char* cmd|int fd|int do_report
 #endif
 p      |void   |do_execfree
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
@@ -277,11 +282,14 @@ Ap        |GV*    |gv_fetchpv     |NN const char* name|I32 add|I32 sv_type
 Ap     |void   |gv_fullname    |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_fullname3   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
+pMox   |GP *   |newGP          |NN GV *const gv
 Ap     |void   |gv_init        |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi
+Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
 Apd    |HV*    |gv_stashpv     |NN const char* name|I32 create
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 create
 Apd    |HV*    |gv_stashsv     |NULLOK SV* sv|I32 create
 Apd    |void   |hv_clear       |NULLOK HV* tb
+poM    |HV *   |hv_copy_hints_hv|NN HV *const ohv
 Ap     |void   |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry
 Apd    |SV*    |hv_delete      |NULLOK HV* tb|NN const char* key|I32 klen|I32 flags
 Apd    |SV*    |hv_delete_ent  |NULLOK HV* tb|NN SV* key|I32 flags|U32 hash
@@ -299,6 +307,11 @@ ApMdR      |HE*    |hv_iternext_flags|NN HV* tb|I32 flags
 ApdR   |SV*    |hv_iterval     |NN HV* tb|NN HE* entry
 Ap     |void   |hv_ksplit      |NN HV* hv|IV newmax
 Apdbm  |void   |hv_magic       |NN HV* hv|NULLOK GV* gv|int how
+dpoM   |HV *   |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c
+dpoM   |void   |refcounted_he_free|NULLOK struct refcounted_he *he
+dpoM   |struct refcounted_he *|refcounted_he_new \
+                               |NULLOK struct refcounted_he *const parent \
+                               |NULLOK SV *const key|NULLOK SV *const value
 Apd    |SV**   |hv_store       |NULLOK HV* tb|NULLOK const char* key|I32 klen|NULLOK SV* val \
                                |U32 hash
 Apd    |HE*    |hv_store_ent   |NULLOK HV* tb|NULLOK SV* key|NULLOK SV* val|U32 hash
@@ -398,6 +411,7 @@ ApdR        |bool   |grok_numeric_radix|NN const char **sp|NN const char *send
 Apd    |UV     |grok_oct       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 p      |int    |magic_clearenv |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clear_all_env|NN SV* sv|NN MAGIC* mg
+dp     |int    |magic_clearhint|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clearpack|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clearsig |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_existspack|NN SV* sv|NN MAGIC* mg
@@ -406,7 +420,6 @@ p   |int    |magic_freeovrld|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_get      |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getarylen|NN SV* sv|NN const MAGIC* mg
 p      |int    |magic_getdefelem|NN SV* sv|NN MAGIC* mg
-p      |int    |magic_getglob  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getnkeys |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getpack  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_getpos   |NN SV* sv|NN MAGIC* mg
@@ -429,6 +442,7 @@ p   |int    |magic_setdbline|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setdefelem|NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setenv   |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setfm    |NN SV* sv|NN MAGIC* mg
+dp     |int    |magic_sethint  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setisa   |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setglob  |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_setmglob |NN SV* sv|NN MAGIC* mg
@@ -454,8 +468,8 @@ p   |char*  |mem_collxfrm   |NN const char* s|STRLEN len|NN STRLEN* xlen
 Afp    |SV*    |mess           |NN const char* pat|...
 Ap     |SV*    |vmess          |NN const char* pat|NULLOK va_list* args
 p      |void   |qerror         |NN SV* err
-Apd    |void   |sortsv         |NN SV** array|size_t num_elts|SVCOMPARE_t cmp
-Apd    |void   |sortsv_flags   |NN SV** array|size_t num_elts|SVCOMPARE_t cmp|U32 flags
+Apd    |void   |sortsv         |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp
+Apd    |void   |sortsv_flags   |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags
 Apd    |int    |mg_clear       |NN SV* sv
 Apd    |int    |mg_copy        |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen
 pd     |void   |mg_localize    |NN SV* sv|NN SV* nsv
@@ -509,7 +523,11 @@ Ap |OP*    |newANONSUB     |I32 floor|NULLOK OP* proto|NULLOK OP* block
 Apa    |OP*    |newASSIGNOP    |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right
 Apa    |OP*    |newCONDOP      |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop
 Apd    |CV*    |newCONSTSUB    |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv
+#ifdef PERL_MAD
+Ap     |OP*    |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
+#else
 Ap     |void   |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
+#endif
 Apa    |OP*    |newFOROP       |I32 flags|NULLOK char* label|line_t forline \
                                |NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont
 Apa    |OP*    |newGIVENOP     |NN OP* cond|NN OP* block|PADOFFSET defsv_off
@@ -523,6 +541,9 @@ Apa |OP*    |newRANGE       |I32 flags|NN OP* left|NN OP* right
 Apa    |OP*    |newSLICEOP     |I32 flags|NULLOK OP* subscript|NULLOK OP* listop
 Apa    |OP*    |newSTATEOP     |I32 flags|NULLOK char* label|NULLOK OP* o
 Ap     |CV*    |newSUB         |I32 floor|NULLOK OP* o|NULLOK OP* proto|NULLOK OP* block
+ApM    |CV *   |newXS_flags    |NULLOK const char *name|NN XSUBADDR_t subaddr\
+                               |NN const char *const filename \
+                               |NULLOK const char *const proto|U32 flags
 Apd    |CV*    |newXS          |NULLOK const char* name|NN XSUBADDR_t f|NN const char* filename
 Apda   |AV*    |newAV
 Apa    |OP*    |newAVREF       |NN OP* o
@@ -539,8 +560,8 @@ Apa |OP*    |newLISTOP      |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
 Apa    |OP*    |newPADOP       |I32 type|I32 flags|NULLOK SV* sv
 Apa    |OP*    |newPMOP        |I32 type|I32 flags
 Apa    |OP*    |newPVOP        |I32 type|I32 flags|NULLOK char* pv
-Apa    |SV*    |newRV          |NN SV* pref
-Apda   |SV*    |newRV_noinc    |NN SV *sv
+Apa    |SV*    |newRV          |NN SV* sv
+Apda   |SV*    |newRV_noinc    |NN SV* sv
 Apda   |SV*    |newSV          |STRLEN len
 Apa    |OP*    |newSVREF       |NN OP* o
 Apa    |OP*    |newSVOP        |I32 type|I32 flags|NN SV* sv
@@ -553,7 +574,7 @@ Apda        |SV*    |newSVhek       |NULLOK const HEK *hek
 Apda   |SV*    |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash
 Afpda  |SV*    |newSVpvf       |NN const char* pat|...
 Apa    |SV*    |vnewSVpvf      |NN const char* pat|NULLOK va_list* args
-Apda   |SV*    |newSVrv        |NN SV* rv|NULLOK const char* classname
+Apd    |SV*    |newSVrv        |NN SV* rv|NULLOK const char* classname
 Apda   |SV*    |newSVsv        |NULLOK SV* old
 Apa    |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
 Apa    |OP*    |newWHENOP      |NULLOK OP* cond|NN OP* block
@@ -575,9 +596,13 @@ ApP        |char*  |ninstr         |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
 pr     |OP*    |oopsCV         |NN OP* o
 Ap     |void   |op_free        |NULLOK OP* arg
+#ifdef PERL_MAD
+p      |OP*    |package        |NN OP* o
+#else
 p      |void   |package        |NN OP* o
+#endif
 pd     |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
-p      |PADOFFSET|allocmy      |NN char* name
+p      |PADOFFSET|allocmy      |NN const char *const name
 pdR    |PADOFFSET|pad_findmy   |NN const char* name
 Ap     |PADOFFSET|find_rundefsvoffset  |
 pR     |OP*    |oopsAV         |NN OP* o
@@ -631,8 +656,8 @@ p   |OP*    |prepend_elem   |I32 optype|NULLOK OP* head|NULLOK OP* tail
 Ap     |void   |push_scope
 Amb    |OP*    |ref            |NULLOK OP* o|I32 type
 p      |OP*    |refkids        |NULLOK OP* o|I32 type
-Ap     |void   |regdump        |NN regexp* r
-Ap     |SV*    |regclass_swash |NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp
+Ap     |void   |regdump        |NN const regexp* r
+Ap     |SV*    |regclass_swash |NULLOK const regexp *prog|NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp
 Ap     |I32    |pregexec       |NN regexp* prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg|I32 minend \
                                |NN SV* screamer|U32 nosave
@@ -646,7 +671,7 @@ Ap  |I32    |regexec_flags  |NN regexp* prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg|I32 minend \
                                |NN SV* screamer|NULLOK void* data|U32 flags
 ApR    |regnode*|regnext       |NN regnode* p
-Ep     |void   |regprop        |NN SV* sv|NN const regnode* o
+Ep     |void   |regprop        |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o
 Ap     |void   |repeatcpy      |NN char* to|NN const char* from|I32 len|I32 count
 ApP    |char*  |rninstr        |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
@@ -666,7 +691,7 @@ Apda        |char*  |savesharedpv   |NULLOK const char* pv
 Apda   |char*  |savesvpv       |NN SV* sv
 Ap     |void   |savestack_grow
 Ap     |void   |savestack_grow_cnt     |I32 need
-Ap     |void   |save_aelem     |NN const AV* av|I32 idx|NN SV **sptr
+Ap     |void   |save_aelem     |NN AV* av|I32 idx|NN SV **sptr
 Ap     |I32    |save_alloc     |I32 size|I32 pad
 Ap     |void   |save_aptr      |NN AV** aptr
 Ap     |AV*    |save_ary       |NN GV* gv
@@ -704,7 +729,6 @@ Ap  |void   |save_re_context
 Ap     |void   |save_padsv     |PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Ap     |SV*    |save_svref     |NN SV** sptr
-Apr    |SV**   |save_threadsv  |PADOFFSET i
 p      |OP*    |sawparens      |NULLOK OP* o
 p      |OP*    |scalar         |NULLOK OP* o
 p      |OP*    |scalarkids     |NULLOK OP* o
@@ -735,6 +759,10 @@ p  |void   |sub_crush_depth|NN CV* cv
 Apd    |bool   |sv_2bool       |NN SV* sv
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV** st|NN GV** gvp|I32 lref
 Apd    |IO*    |sv_2io         |NN SV* sv
+#ifdef PERL_IN_SV_C
+s      |bool   |glob_2number   |NN GV* const gv
+s      |char*  |glob_2pv       |NN GV* const gv|NULLOK STRLEN * const len
+#endif
 Amb    |IV     |sv_2iv         |NN SV* sv
 Apd    |IV     |sv_2iv_flags   |NN SV* sv|I32 flags
 Apd    |SV*    |sv_2mortal     |NULLOK SV* sv
@@ -790,7 +818,7 @@ Apd |STRLEN |sv_len         |NULLOK SV* sv
 Apd    |STRLEN |sv_len_utf8    |NULLOK SV* sv
 Apd    |void   |sv_magic       |NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name \
                                |I32 namlen
-Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK const MGVTBL *vtbl \
+Apd    |MAGIC *|sv_magicext    |NN SV* sv|NULLOK SV* obj|int how|NULLOK MGVTBL *vtbl \
                                |NULLOK const char* name|I32 namlen
 ApdaR  |SV*    |sv_mortalcopy  |NULLOK SV* oldsv
 ApdR   |SV*    |sv_newmortal
@@ -829,7 +857,9 @@ Apdmb       |void   |sv_unref       |NN SV* sv
 Apd    |void   |sv_unref_flags |NN SV* sv|U32 flags
 Apd    |void   |sv_untaint     |NN SV* sv
 Apd    |void   |sv_upgrade     |NN SV* sv|U32 mt
-Apd    |void   |sv_usepvn      |NN SV* sv|NULLOK char* ptr|STRLEN len
+Apdmb  |void   |sv_usepvn      |NN SV* sv|NULLOK char* ptr|STRLEN len
+Apd    |void   |sv_usepvn_flags|NN SV* sv|NULLOK char* ptr|STRLEN len\
+                               |U32 flags
 Apd    |void   |sv_vcatpvfn    |NN SV* sv|NN const char* pat|STRLEN patlen \
                                |NULLOK va_list* args|NULLOK SV** svargs|I32 svmax \
                                |NULLOK bool *maybe_tainted
@@ -856,8 +886,13 @@ Apd        |I32    |unpack_str     |NN const char *pat|NN const char *patend|NN const char *s
 Apd    |I32    |unpackstring   |NN const char *pat|NN const char *patend|NN const char *s \
                                |NN const char *strend|U32 flags
 Ap     |void   |unsharepvn     |NULLOK const char* sv|I32 len|U32 hash
-p      |void   |unshare_hek    |NULLOK HEK* hek
+XEp    |void   |unshare_hek    |NULLOK HEK* hek
+#ifdef PERL_MAD
+p      |OP *   |utilize        |int aver|I32 floor|NULLOK OP* version \
+                               |NN OP* idop|NULLOK OP* arg
+#else
 p      |void   |utilize        |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg
+#endif
 Ap     |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 Ap     |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 AdpPR  |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
@@ -936,7 +971,7 @@ Apd |void   |sv_setnv_mg    |NN SV *sv|NV num
 Apd    |void   |sv_setpv_mg    |NN SV *sv|NULLOK const char *ptr
 Apd    |void   |sv_setpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
 Apd    |void   |sv_setsv_mg    |NN SV *dstr|NULLOK SV *sstr
-Apd    |void   |sv_usepvn_mg   |NN SV *sv|NULLOK char *ptr|STRLEN len
+Apdbm  |void   |sv_usepvn_mg   |NN SV *sv|NULLOK char *ptr|STRLEN len
 ApR    |MGVTBL*|get_vtbl       |int vtbl_id
 Ap     |char*  |pv_display     |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \
                                |STRLEN pvlim
@@ -971,7 +1006,12 @@ Apd       |SV*    |sv_rvweaken    |NN SV *sv
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
 Ap     |OP*    |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
 Ap     |CV*    |newATTRSUB     |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+#ifdef PERL_MAD
+Apr    |OP *   |newMYSUB       |I32 floor|NULLOK OP *o|NULLOK OP *proto \
+                               |NULLOK OP *attrs|NULLOK OP *block
+#else
 Apr    |void   |newMYSUB       |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+#endif
 p      |OP *   |my_attrs       |NN OP *o|NULLOK OP *attrs
 p      |void   |boot_core_xsutils
 #if defined(USE_ITHREADS)
@@ -1012,18 +1052,22 @@ pMX     |int    |sv_release_IVX |NN SV *sv
 
 Adp    |void   |sv_nosharing   |NULLOK SV *sv
 Adpbm  |void   |sv_nolocking   |NULLOK SV *sv
+#ifdef NO_MATHOMS
 Adpbm  |void   |sv_nounlocking |NULLOK SV *sv
+#else
+Adpb   |void   |sv_nounlocking |NULLOK SV *sv
+#endif
 Adp    |int    |nothreadhook
 
 END_EXTERN_C
 
 #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
-sR     |I32    |do_trans_simple        |NN SV *sv
-sR     |I32    |do_trans_count         |NN SV *sv
-sR     |I32    |do_trans_complex       |NN SV *sv
-sR     |I32    |do_trans_simple_utf8   |NN SV *sv
-sR     |I32    |do_trans_count_utf8    |NN SV *sv
-sR     |I32    |do_trans_complex_utf8  |NN SV *sv
+sR     |I32    |do_trans_simple        |NN SV * const sv
+sR     |I32    |do_trans_count         |NN SV * const sv
+sR     |I32    |do_trans_complex       |NN SV * const sv
+sR     |I32    |do_trans_simple_utf8   |NN SV * const sv
+sR     |I32    |do_trans_count_utf8    |NN SV * const sv
+sR     |I32    |do_trans_complex_utf8  |NN SV * const sv
 #endif
 
 #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
@@ -1031,20 +1075,25 @@ s       |void   |gv_init_sv     |NN GV *gv|I32 sv_type
 s      |void   |require_errno  |NN GV *gv
 #endif
 
+: #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+paRxo  |void*  |get_arena      |int svtype
+: #endif
+
 #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
 s      |void   |hsplit         |NN HV *hv
 s      |void   |hfreeentries   |NN HV *hv
 sa     |HE*    |new_he
-sa     |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
-s      |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
+sanR   |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
+sn     |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
 s      |void   |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
 sR     |HEK*   |share_hek_flags|NN const char* sv|I32 len|U32 hash|int flags
 rs     |void   |hv_notallowed  |int flags|NN const char *key|I32 klen|NN const char *msg
-s      |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+sn     |struct xpvhv_aux*|hv_auxinit|NN HV *hv
 sM     |SV*    |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
                |STRLEN klen|int k_flags|I32 d_flags|U32 hash
 sM     |HE*    |hv_fetch_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
                |STRLEN klen|int flags|int action|NULLOK SV* val|U32 hash
+sM     |void   |clear_placeholders     |NN HV* hb|U32 items
 #endif
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
@@ -1100,7 +1149,7 @@ pR        |OP*    |ck_substr      |NN OP *o
 pR     |OP*    |ck_svconst     |NN OP *o
 pR     |OP*    |ck_trunc       |NN OP *o
 pR     |OP*    |ck_unpack      |NN OP *o
-sR     |bool   |is_handle_constructor|NN const OP *o|I32 numargs
+sRn    |bool   |is_handle_constructor|NN const OP *o|I32 numargs
 sR     |I32    |is_list_assignment|NULLOK const OP *o
 s      |void   |cop_free       |NN COP *cop
 s      |OP*    |modkids        |NULLOK OP *o|I32 type
@@ -1109,7 +1158,7 @@ sR        |OP*    |newDEFSVOP
 sR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
 s      |void   |simplify_sort  |NN OP *o
 s      |const char*    |gv_ename       |NN GV *gv
-s      |bool   |scalar_mod_type|NN const OP *o|I32 type
+sRn    |bool   |scalar_mod_type|NN const OP *o|I32 type
 s      |OP *   |my_kid         |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
 s      |OP *   |dup_attrlist   |NN OP *o
 s      |void   |apply_attrs    |NN HV *stash|NN SV *target|NULLOK OP *attrs|bool for_my
@@ -1119,7 +1168,7 @@ s |void   |no_bareword_allowed|NN const OP *o
 sR     |OP*    |no_fh_allowed|NN OP *o
 sR     |OP*    |too_few_arguments|NN OP *o|NN const char* name
 sR     |OP*    |too_many_arguments|NN OP *o|NN const char* name
-s      |bool   |looks_like_bool|NN OP* o
+s      |bool   |looks_like_bool|NN const OP* o
 s      |OP*    |newGIVWHENOP   |NULLOK OP* cond|NN OP *block \
                                |I32 enter_opcode|I32 leave_opcode \
                                |PADOFFSET entertarg
@@ -1132,7 +1181,7 @@ Ap        |void   |Slab_Free      |NN void *op
 
 #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 s      |void   |find_beginning
-s      |void   |forbid_setid   |NN const char * s
+s      |void   |forbid_setid   |const char flag|const int suidscript
 s      |void   |incpush        |NULLOK const char *dir|bool addsubdirs|bool addoldvers|bool usesep|bool canrelocate
 s      |void   |init_interp
 s      |void   |init_ids
@@ -1143,16 +1192,17 @@ s       |void   |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env
 s      |void   |init_predump_symbols
 rs     |void   |my_exit_jump
 s      |void   |nuke_stacks
-s      |void   |open_script    |NN const char *scriptname|bool dosearch|NN SV *sv
+s      |int    |open_script    |NN const char *scriptname|bool dosearch \
+                               |NN SV *sv|NN int *suidscript
 s      |void   |usage          |NN const char *name
-s      |void   |validate_suid  |NN const char *validarg|NN const char *scriptname
+s      |void   |validate_suid  |NN const char *validarg \
+                               |NN const char *scriptname|int fdscript \
+                               |int suidscript
 #  if defined(IAMSUID)
 s      |int    |fd_on_nosuid_fs|int fd
 #  endif
 s      |void*  |parse_body     |NULLOK char **env|XSINIT_t xsinit
 rs     |void   |run_body       |I32 oldscope
-s      |void   |call_body      |NN const OP *myop|bool is_eval
-s      |void*  |call_list_body |NN CV *cv
 s      |SV *   |incpush_if_exists|NN SV *dir
 #endif
 
@@ -1174,6 +1224,7 @@ sR        |const char *|get_num   |NN const char *ppat|NN I32 *lenptr
 ns     |bool   |need_utf8      |NN const char *pat|NN const char *patend
 ns     |char   |first_symbol   |NN const char *pat|NN const char *patend
 sR     |char * |sv_exp_grow    |NN SV *sv|STRLEN needed
+sR     |char * |bytes_to_uni   |NN const U8 *start|STRLEN len|NN char *dest
 #endif
 
 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
@@ -1193,7 +1244,7 @@ s |void   |save_lines     |NULLOK AV *array|NN SV *sv
 sR     |OP*    |doeval         |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq
 sR     |PerlIO *|check_type_and_open|NN const char *name|NN const char *mode
 sR     |PerlIO *|doopen_pm     |NN const char *name|NN const char *mode
-sR     |bool   |path_is_absolute|NN const char *name
+sRn    |bool   |path_is_absolute|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
 sR     |PMOP*  |make_matcher   |NN regexp* re
 sR     |bool   |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
@@ -1225,6 +1276,7 @@ s |int    |emulate_eaccess|NN const char* path|Mode_t mode
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 sR     |int    |dooneliner     |NN const char *cmd|NN const char *filename
 #  endif
+s      |SV *   |space_join_names_mortal|NN char *const *array
 #endif
 
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
@@ -1232,34 +1284,34 @@ Es      |regnode*|reg           |NN struct RExC_state_t *state|I32 paren|NN I32 *flagp
 Es     |regnode*|reganode      |NN struct RExC_state_t *state|U8 op|U32 arg
 Es     |regnode*|regatom       |NN struct RExC_state_t *state|NN I32 *flagp
 Es     |regnode*|regbranch     |NN struct RExC_state_t *state|NN I32 *flagp|I32 first
-Es     |void   |reguni         |NN const struct RExC_state_t *state|UV uv|NN char *s|NN STRLEN *lenp
+Es     |STRLEN |reguni         |NN const struct RExC_state_t *state|UV uv|NN char *s
 Es     |regnode*|regclass      |NN struct RExC_state_t *state
-ERs    |I32    |regcurly       |NN const char *
+ERsn   |I32    |regcurly       |NN const char *
 Es     |regnode*|reg_node      |NN struct RExC_state_t *state|U8 op
 Es     |regnode*|regpiece      |NN struct RExC_state_t *state|NN I32 *flagp
 Es     |void   |reginsert      |NN struct RExC_state_t *state|U8 op|NN regnode *opnd
-Es     |void   |regoptail      |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
-Es     |void   |regtail        |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
-Es     |char*  |regwhite       |NN char *p|NN const char *e
+Es     |void   |regtail        |NN const struct RExC_state_t *state|NN regnode *p|NN const regnode *val
+EsRn   |char*  |regwhite       |NN char *p|NN const char *e
 Es     |char*  |nextchar       |NN struct RExC_state_t *state
 #  ifdef DEBUGGING
-Es     |regnode*|dumpuntil     |NN regnode *start|NN regnode *node \
-                               |NULLOK regnode *last|NN SV* sv|I32 l
+Es     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
+                               |NN const regnode *node \
+                               |NULLOK const regnode *last|NN SV* sv|I32 l
 Es     |void   |put_byte       |NN SV* sv|int c
 #  endif
-Es     |void   |scan_commit    |NN struct RExC_state_t* state|NN struct scan_data_t *data
-Es     |void   |cl_anything    |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
-Es     |void   |cl_init        |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |void   |cl_init_zero   |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es     |void   |cl_and         |NN struct regnode_charclass_class *cl \
+Es     |void   |scan_commit    |NN const struct RExC_state_t* state|NN struct scan_data_t *data
+Esn    |void   |cl_anything    |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+EsRn   |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
+Esn    |void   |cl_init        |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn    |void   |cl_init_zero   |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn    |void   |cl_and         |NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *and_with
-Es     |void   |cl_or          |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
+Esn    |void   |cl_or          |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *or_with
 Es     |I32    |study_chunk    |NN struct RExC_state_t* state|NN regnode **scanp \
                                |NN I32 *deltap|NN regnode *last|NULLOK struct scan_data_t *data \
                                |U32 flags|U32 depth
-Es     |I32    |add_data       |NN struct RExC_state_t* state|I32 n|NN const char *s
+EsRn   |I32    |add_data       |NN struct RExC_state_t* state|I32 n|NN const char *s
 rs     |void   |re_croak2      |NN const char* pat1|NN const char* pat2|...
 Es     |I32    |regpposixcc    |NN struct RExC_state_t* state|I32 value
 Es     |void   |checkposixcc   |NN struct RExC_state_t* state
@@ -1270,20 +1322,16 @@ Es      |I32    |make_trie      |NN struct RExC_state_t* state|NN regnode *startbranch \
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
-ERs    |I32    |regmatch       |NN regnode *prog
-ERs    |I32    |regrepeat      |NN const regnode *p|I32 max
-ERs    |I32    |regrepeat_hard |NN regnode *p|I32 max|NN I32 *lp
-ERs    |I32    |regtry         |NN regexp *prog|NN char *startpos
-ERs    |bool   |reginclass     |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
+ERs    |I32    |regmatch       |NN const regmatch_info *reginfo|NN regnode *prog
+ERs    |I32    |regrepeat      |NN const regexp *prog|NN const regnode *p|I32 max
+ERs    |I32    |regtry         |NN const regmatch_info *reginfo|NN char *startpos
+ERs    |bool   |reginclass     |NULLOK const regexp *prog|NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
                                |bool do_utf8sv_is_utf8
 Es     |CHECKPOINT|regcppush   |I32 parenfloor
-Es     |char*|regcppop
-Es     |void   |cache_re       |NN regexp *prog
-ERs    |U8*    |reghop         |NN U8 *pos|I32 off
-ERs    |U8*    |reghop3        |NN U8 *pos|I32 off|NN U8 *lim
-ERs    |U8*    |reghopmaybe    |NN U8 *pos|I32 off
-ERs    |U8*    |reghopmaybe3   |NN U8 *pos|I32 off|NN U8 *lim
-ERs    |char*  |find_byclass   |NN regexp * prog|NN regnode *c|NN char *s|NN const char *strend|I32 norun
+Es     |char*  |regcppop       |NN const regexp *rex
+ERsn   |U8*    |reghop3        |NN U8 *pos|I32 off|NN const U8 *lim
+ERsn   |U8*    |reghopmaybe3   |NN U8 *pos|I32 off|NN const U8 *lim
+ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c|NN char *s|NN const char *strend|NULLOK const regmatch_info *reginfo
 Es     |void   |to_utf8_substr |NN regexp * prog
 Es     |void   |to_byte_substr |NN regexp * prog
 #endif
@@ -1292,7 +1340,9 @@ Es        |void   |to_byte_substr |NN regexp * prog
 s      |CV*    |deb_curcv      |I32 ix
 s      |void   |debprof        |NN const OP *o
 s      |void   |sequence       |NULLOK const OP *o
+s      |void   |sequence_tail  |NULLOK const OP *o
 s      |UV     |sequence_num   |NULLOK const OP *o
+s      |SV*    |pm_description |NN const PMOP *pm
 #endif
 
 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
@@ -1323,18 +1373,34 @@ s       |int    |sv_2iuv_non_preserve   |NN SV *sv|I32 numtype
 #  endif
 sR     |I32    |expect_number  |NN char** pattern
 #
-s      |bool   |utf8_mg_pos    |NN SV *sv|NN MAGIC **mgp|NN STRLEN **cachep \
-                               |I32 i|NN I32 *offsetp|I32 uoff \
-                               |NN const U8 **sp|NN const U8 *start \
-                               |NN const U8 *send
-s      |bool   |utf8_mg_pos_init       |NN SV *sv|NN MAGIC **mgp \
-                               |NN STRLEN **cachep|I32 i|I32 offsetp \
-                               |NN const U8 *s|NN const U8 *start
+sn     |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \
+               |NN const U8 *const send|STRLEN uoffset
+sn     |STRLEN |sv_pos_u2b_midway|NN const U8 *const start \
+               |NN const U8 *send|STRLEN uoffset|STRLEN uend
+s      |STRLEN |sv_pos_u2b_cached|NN SV *sv|NN MAGIC **mgp \
+               |NN const U8 *const start|NN const U8 *const send \
+               |STRLEN uoffset|STRLEN uoffset0|STRLEN boffset0
+s      |void   |utf8_mg_pos_cache_update|NN SV *sv|NN MAGIC **mgp \
+               |STRLEN byte|STRLEN utf8|STRLEN blen
+s      |STRLEN |sv_pos_b2u_forwards|NN const U8 *s|NN const U8 *const target
+s      |STRLEN |sv_pos_b2u_midway|NN const U8 *s|NN const U8 *const target \
+               |NN const U8 *end|STRLEN endu
 s      |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp
 sn     |char * |F0convert      |NV nv|NN char *endbuf|NN STRLEN *len
-#if defined(PERL_OLD_COPY_ON_WRITE)
+#  if defined(PERL_OLD_COPY_ON_WRITE)
 sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after
-#endif
+#  endif
+s      |SV *   |more_sv
+s      |void * |more_bodies    |svtype sv_type
+s      |bool   |sv_2iuv_common |NN SV *sv
+s      |void   |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
+s      |void   |glob_assign_ref|NN SV *dstr|NN SV *sstr
+#  if defined(USE_ITHREADS)
+sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
+#  endif
+s      |SV *   |find_hash_subscript|NULLOK HV *hv|NN SV *val
+s      |I32    |find_array_subscript|NULLOK AV *av|NN SV *val
+s      |SV *   |find_uninit_var|NULLOK OP *obase|NULLOK SV *uninit_sv|bool match
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -1359,8 +1425,9 @@ s |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
                                |int allow_package|NN STRLEN *slp
 sR     |char*  |skipspace      |NN char *s
 sR     |char*  |swallow_bom    |NN U8 *s
-s      |void   |checkcomma     |NN char *s|NN const char *name|NN const char *what
-s      |bool   |feature_is_enabled|NN char* name|STRLEN namelen
+s      |void   |checkcomma     |NN const char *s|NN const char *name \
+                               |NN const char *what
+s      |bool   |feature_is_enabled|NN const char* name|STRLEN namelen
 s      |void   |force_ident    |NN const char *s|int kind
 s      |void   |incline        |NN char *s
 s      |int    |intuit_method  |NN char *s|NULLOK GV *gv|NULLOK CV *cv
@@ -1385,11 +1452,12 @@ s       |void   |strip_return   |NN SV *sv
 #  endif
 #  if defined(DEBUGGING)
 s      |int    |tokereport     |I32 rv
+s      |void   |printbuf       |NN const char* fmt|NN const char* s
 #  endif
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-s      |SV*|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
+s      |bool|isa_lookup        |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
 #endif
 
 #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
@@ -1399,7 +1467,7 @@ s |char*  |stdize_locale  |NN char* locs
 #endif
 
 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
-s      |COP*   |closest_cop    |NN COP *cop|NULLOK const OP *o
+s      |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
 s      |SV*    |mess_alloc
 s      |const char *|vdie_croak_common|NULLOK const char *pat|NULLOK va_list *args \
                                |NULLOK STRLEN *msglen|NULLOK I32* utf8
@@ -1413,7 +1481,7 @@ sn        |NV|mulexp10    |NV value|I32 exponent
 #endif
 
 #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT)
-s      |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
+sRn    |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
 sR     |bool   |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
 sR     |SV*    |swash_get      |NN SV* swash|UV start|UV span
 #endif
@@ -1468,7 +1536,7 @@ s |void   |deb_stack_n    |NN SV** stack_base|I32 stack_min \
 pda    |PADLIST*|pad_new       |int flags
 pd     |void   |pad_undef      |NN CV* cv
 pd     |PADOFFSET|pad_add_name |NN const char *name\
-                               |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone
+                               |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone|bool state
 pd     |PADOFFSET|pad_add_anon |NN SV* sv|OPCODE op_type
 pd     |void   |pad_check_dup  |NN const char* name|bool is_our|NN const HV* ourstash
 #ifdef DEBUGGING
@@ -1503,7 +1571,7 @@ ApoR      |I32*   |hv_riter_p     |NN HV* hv
 ApoR   |HE**   |hv_eiter_p     |NN HV* hv
 Apo    |void   |hv_riter_set   |NN HV* hv|I32 riter
 Apo    |void   |hv_eiter_set   |NN HV* hv|NULLOK HE* eiter
-Ap     |void   |hv_name_set    |NN HV* hv|NULLOK const char *name|I32 len|int flags
+Ap     |void   |hv_name_set    |NN HV* hv|NULLOK const char *name|U32 len|U32 flags
 poM    |AV**   |hv_backreferences_p    |NN HV* hv
 #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
 poM    |void   |hv_kill_backrefs       |NN HV* hv
@@ -1609,6 +1677,8 @@ Ap        |GV*    |gv_SVadd       |NN GV* gv
 #endif
 Apo    |bool   |ckwarn         |U32 w
 Apo    |bool   |ckwarn_d       |U32 w
+XEopMa |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
+                               |NN const char *const bits|STRLEN size
 
 p      |void   |offer_nice_chunk       |NN void *chunk|U32 chunk_size
 
@@ -1616,12 +1686,63 @@ p       |void   |offer_nice_chunk       |NN void *chunk|U32 chunk_size
 Apnod  |int    |my_sprintf     |NN char *buffer|NN const char *pat|...
 #endif
 
+Apnod  |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
+Apnod  |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+
 px     |void   |my_clearenv
 
 #ifdef PERL_IMPLICIT_CONTEXT
 Apo    |void*  |my_cxt_init    |NN int *index|size_t size
 #endif
 
+#ifdef PERL_MAD
+Mnp    |void   |pad_peg        |NN const char* s
+#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
+sf     |void   |xmldump_attr   |I32 level|NN PerlIO *file|NN const char* pat \
+                               |...
+#endif
+Mfp    |void   |xmldump_indent |I32 level|NN PerlIO *file|NN const char* pat \
+                               |...
+Mp     |void   |xmldump_vindent|I32 level|NN PerlIO *file|NN const char* pat \
+                               |NULLOK va_list *args
+Mp     |void   |xmldump_all
+Mp     |void   |xmldump_packsubs       |NN const HV* stash
+Mp     |void   |xmldump_sub    |NN const GV* gv
+Mp     |void   |xmldump_form   |NN const GV* gv
+Mp     |void   |xmldump_eval
+Mp     |char*  |sv_catxmlsv    |NN SV *dsv|NN SV *ssv
+Mp     |char*  |sv_catxmlpvn   |NN SV *dsv|NN char *pv|STRLEN len|int utf8
+Mp     |char*  |sv_xmlpeek     |NN SV* sv
+Mp     |void   |do_pmop_xmldump|I32 level|NN PerlIO *file \
+                               |NULLOK const PMOP *pm
+Mp     |void   |pmop_xmldump   |NULLOK const PMOP* pm
+Mp     |void   |do_op_xmldump  |I32 level|NN PerlIO *file|NULLOK const OP *o
+Mp     |void   |op_xmldump     |NN const OP* arg
+
+Mp     |TOKEN* |newTOKEN       |I32 optype|YYSTYPE lval \
+                               |NULLOK MADPROP* madprop
+Mp     |void   |token_free     |NN TOKEN* arg
+Mp     |void   |token_getmad   |NN TOKEN* arg|NULLOK OP* o|char slot
+Mp     |void   |op_getmad_weak |NULLOK OP* from|NULLOK OP* o|char slot
+Mp     |void   |op_getmad      |NULLOK OP* from|NULLOK OP* o|char slot
+Mp     |void   |prepend_madprops|NULLOK MADPROP* mp|NULLOK OP* o|char slot
+Mp     |void   |append_madprops|NULLOK MADPROP* tm|NULLOK OP* o|char slot
+Mp     |void   |addmad         |NULLOK MADPROP* tm|NULLOK MADPROP** root \
+                               |char slot
+Mp     |MADPROP*|newMADsv      |char key|NN SV* sv
+Mp     |MADPROP*|newMADPROP    |char key|char type|NULLOK void* val|I32 vlen
+Mp     |void   |mad_free       |NULLOK MADPROP* mp
+
+#  if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
+s      |char*  |skipspace0     |NN char *s
+s      |char*  |skipspace1     |NN char *s
+s      |char*  |skipspace2     |NN char *s|NULLOK SV **sv
+s      |void   |start_force    |int where
+s      |void   |curmad         |char slot|NULLOK SV *sv
+#  endif
+Mp     |int    |madlex
+Mp     |int    |madparse
+#endif
 
 END_EXTERN_C
 /*
index 2463478..4c374da 100644 (file)
@@ -1,8 +1,8 @@
 ################################################################################
 ##
-##  $Revision: 3 $
+##  $Revision: 4 $
 ##  $Author: mhx $
-##  $Date: 2006/01/14 18:07:58 +0100 $
+##  $Date: 2006/05/19 23:58:03 +0200 $
 ##
 ################################################################################
 ##
@@ -91,9 +91,34 @@ TestSvPVX_mutable(sv)
         OUTPUT:
                 RETVAL
 
-=tests plan => 3
+void
+TestSvSTASH_set(sv, name)
+        SV *sv
+       char *name
+        CODE:
+               sv = SvRV(sv);
+               SvREFCNT_dec(SvSTASH(sv));
+                SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0)));
+
+=tests plan => 5
 
 my $foo = 5;
 ok(&Devel::PPPort::TestSvUV_set($foo, 12345), 42);
 ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43);
 ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44);
+
+my $bar = [];
+
+bless $bar, 'foo';
+ok($bar->x(), 'foobar');
+
+Devel::PPPort::TestSvSTASH_set($bar, 'bar');
+ok($bar->x(), 'hacker');
+
+package foo;
+
+sub x { 'foobar' }
+
+package bar;
+
+sub x { 'hacker' }
index f649f5d..bdbdc5a 100644 (file)
@@ -1,8 +1,8 @@
 ################################################################################
 ##
-##  $Revision: 9 $
+##  $Revision: 10 $
 ##  $Author: mhx $
-##  $Date: 2006/01/14 18:08:03 +0100 $
+##  $Date: 2006/05/18 23:10:24 +0200 $
 ##
 ################################################################################
 ##
@@ -164,6 +164,8 @@ __UNDEFINED__  SvUV_nomg          SvUV
    } STMT_END
 #endif
 
+__UNDEFINED__  SvVSTRING_mg(sv)  (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
+
 =xsubs
 
 void
@@ -250,7 +252,15 @@ sv_usepvn_mg(sv, sv2)
                Copy(str, copy, len+1, char);
                sv_usepvn_mg(sv, copy, len);
 
-=tests plan => 10
+int
+SvVSTRING_mg(sv)
+       SV *sv;
+       CODE:
+               RETVAL = SvVSTRING_mg(sv) != NULL;
+       OUTPUT:
+               RETVAL
+
+=tests plan => 13
 
 use Tie::Hash;
 my %h;
@@ -288,3 +298,8 @@ ok($h{sv}, 4711);
 &Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl');
 ok($h{sv}, 'Perl');
 
+my $ver = eval qq[qv("v1.2.0")];
+ok($[ < 5.009 || $@ eq '');
+ok($@ || Devel::PPPort::SvVSTRING_mg($ver));
+ok(!Devel::PPPort::SvVSTRING_mg(4711));
+
index b22c973..17a81e7 100644 (file)
@@ -1,8 +1,8 @@
 ################################################################################
 ##
-##  $Revision: 30 $
+##  $Revision: 35 $
 ##  $Author: mhx $
-##  $Date: 2006/01/14 18:08:03 +0100 $
+##  $Date: 2006/05/19 23:57:26 +0200 $
 ##
 ################################################################################
 ##
@@ -19,6 +19,9 @@
 
 __UNDEFINED__
 PERL_UNUSED_DECL
+PERL_UNUSED_ARG
+PERL_UNUSED_VAR
+PERL_UNUSED_CONTEXT
 PERL_GCC_BRACE_GROUPS_FORBIDDEN
 NVTYPE
 INT2PTR
@@ -86,8 +89,29 @@ XSRETURN
 #  endif
 #endif
 
-__UNDEFINED__  NOOP          (void)0
-__UNDEFINED__  dNOOP         extern int Perl___notused PERL_UNUSED_DECL
+#ifndef PERL_UNUSED_ARG
+#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+#    include <note.h>
+#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+#  else
+#    define PERL_UNUSED_ARG(x) ((void)x)
+#  endif
+#endif
+
+#ifndef PERL_UNUSED_VAR
+#  define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
+#ifndef PERL_UNUSED_CONTEXT
+#  ifdef USE_ITHREADS
+#    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
+#  else
+#    define PERL_UNUSED_CONTEXT
+#  endif
+#endif
+
+__UNDEFINED__  NOOP          /*EMPTY*/(void)0
+__UNDEFINED__  dNOOP         extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
 
 #ifndef NVTYPE
 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
@@ -213,6 +237,12 @@ __UNDEFINED__  XSprePUSH       (sp = PL_stack_base + ax - 1)
       } STMT_END
 #endif
 
+__UNDEFINED__  PERL_ABS(x)     ((x) < 0 ? -(x) : (x))
+
+__UNDEFINED__  dVAR            dNOOP
+
+__UNDEFINED__  SVf             "_"
+
 =xsmisc
 
 XS(XS_Devel__PPPort_dXSTARG);  /* prototype */
@@ -386,7 +416,21 @@ prepush()
                  XSRETURN(1);
                }
 
-=tests plan => 38
+int
+PERL_ABS(a)
+       int a
+
+void
+SVf(x)
+       SV *x
+       PPCODE:
+#if { VERSION >= 5.004 }
+               x = newSVpvf("[%"SVf"]", x);
+#endif
+               XPUSHs(x);
+               XSRETURN(1);
+
+=tests plan => 42
 
 use vars qw($my_sv @my_av %my_hv);
 
@@ -458,3 +502,10 @@ ok(Devel::PPPort::prepush(), 42);
 
 ok(join(':', Devel::PPPort::xsreturn(0)), 'test1');
 ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2');
+
+ok(Devel::PPPort::PERL_ABS(42), 42);
+ok(Devel::PPPort::PERL_ABS(-13), 13);
+
+ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42');
+ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc');
+
diff --git a/ext/Devel/PPPort/parts/inc/pvs b/ext/Devel/PPPort/parts/inc/pvs
new file mode 100644 (file)
index 0000000..83fb6e8
--- /dev/null
@@ -0,0 +1,91 @@
+################################################################################
+##
+##  $Revision: 2 $
+##  $Author: mhx $
+##  $Date: 2006/05/19 23:00:18 +0200 $
+##
+################################################################################
+##
+##  Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz.
+##  Version 2.x, Copyright (C) 2001, Paul Marquess.
+##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+##
+##  This program is free software; you can redistribute it and/or
+##  modify it under the same terms as Perl itself.
+##
+################################################################################
+
+=provides
+
+__UNDEFINED__
+
+=implementation
+
+/* concatenating with "" ensures that only literal strings are accepted as argument
+ * note that STR_WITH_LEN() can't be used as argument to macros or functions that
+ * under some configurations might be macros
+ */
+
+__UNDEFINED__  STR_WITH_LEN(s)             (s ""), (sizeof(s)-1)
+
+__UNDEFINED__  newSVpvs(str)               newSVpvn(str "", sizeof(str) - 1)
+__UNDEFINED__  sv_catpvs(sv, str)          sv_catpvn(sv, str "", sizeof(str) - 1)
+__UNDEFINED__  sv_setpvs(sv, str)          sv_setpvn(sv, str "", sizeof(str) - 1)
+__UNDEFINED__  hv_fetchs(hv,key,lval)      hv_fetch(hv, key "", sizeof(key) - 1, lval)
+__UNDEFINED__  hv_stores(hv,key,val,hash)  hv_store(hv, key "", sizeof(key) - 1, val, hash)
+
+=xsubs
+
+void
+newSVpvs()
+       PPCODE:
+               XPUSHs(newSVpvs("newSVpvs"));
+               XSRETURN(1);
+
+void
+sv_catpvs(sv)
+       SV *sv
+       PPCODE:
+               sv_catpvs(sv, "sv_catpvs");
+
+void
+sv_setpvs(sv)
+       SV *sv
+       PPCODE:
+               sv_setpvs(sv, "sv_setpvs");
+
+void
+hv_fetchs(hv)
+       SV *hv
+       PREINIT:
+               SV **s;
+       PPCODE:
+               s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0);
+               XPUSHs(sv_mortalcopy(*s));
+               XSRETURN(1);
+
+void
+hv_stores(hv, sv)
+       SV *hv
+       SV *sv
+       PPCODE:
+               hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0);
+
+=tests plan => 7
+
+my $x = 'foo';
+
+ok(Devel::PPPort::newSVpvs(), "newSVpvs");
+
+Devel::PPPort::sv_catpvs($x);
+ok($x, "foosv_catpvs");
+
+Devel::PPPort::sv_setpvs($x);
+ok($x, "sv_setpvs");
+
+my %h = ('hv_fetchs' => 42);
+Devel::PPPort::hv_stores(\%h, 4711);
+ok(scalar keys %h, 2);
+ok(exists $h{'hv_stores'});
+ok($h{'hv_stores'}, 4711);
+ok(Devel::PPPort::hv_fetchs(\%h), 42);
diff --git a/ext/Devel/PPPort/parts/inc/snprintf b/ext/Devel/PPPort/parts/inc/snprintf
new file mode 100644 (file)
index 0000000..8890db1
--- /dev/null
@@ -0,0 +1,70 @@
+################################################################################
+##
+##  $Revision: 1 $
+##  $Author: mhx $
+##  $Date: 2006/05/18 23:12:23 +0200 $
+##
+################################################################################
+##
+##  Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz.
+##  Version 2.x, Copyright (C) 2001, Paul Marquess.
+##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+##
+##  This program is free software; you can redistribute it and/or
+##  modify it under the same terms as Perl itself.
+##
+################################################################################
+
+=provides
+
+my_snprintf
+
+=implementation
+
+#if !defined(my_snprintf)
+#if { NEED my_snprintf }
+
+int
+my_snprintf(char *buffer, const Size_t len, const char *format, ...)
+{
+    dTHX;
+    int retval;
+    va_list ap;
+    va_start(ap, format);
+#ifdef HAS_VSNPRINTF
+    retval = vsnprintf(buffer, len, format, ap);
+#else
+    retval = vsprintf(buffer, format, ap);
+#endif
+    va_end(ap);
+    if (retval >= (int)len)
+       Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
+    return retval;
+}
+
+#endif
+#endif
+
+=xsinit
+
+#define NEED_my_snprintf
+
+=xsubs
+
+void
+my_snprintf()
+       PREINIT:
+               char buf[128];
+               int len;
+       PPCODE:
+               len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42);
+               XPUSHs(newSViv(len));
+               XPUSHs(newSVpv(buf, 0));
+               XSRETURN(2);
+
+=tests plan => 2
+
+my($l, $s) = Devel::PPPort::my_snprintf();
+ok($l, 8);
+ok($s, "foobar42");
+
diff --git a/ext/Devel/PPPort/parts/inc/warn b/ext/Devel/PPPort/parts/inc/warn
new file mode 100644 (file)
index 0000000..a29b98c
--- /dev/null
@@ -0,0 +1,177 @@
+################################################################################
+##
+##  $Revision: 2 $
+##  $Author: mhx $
+##  $Date: 2006/05/20 10:57:02 +0200 $
+##
+################################################################################
+##
+##  Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz.
+##  Version 2.x, Copyright (C) 2001, Paul Marquess.
+##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+##
+##  This program is free software; you can redistribute it and/or
+##  modify it under the same terms as Perl itself.
+##
+################################################################################
+
+=provides
+
+__UNDEFINED__
+ckWARN
+warner
+Perl_warner
+Perl_warner_nocontext
+
+=implementation
+
+__UNDEFINED__  WARN_ALL                        0
+__UNDEFINED__  WARN_CLOSURE            1
+__UNDEFINED__  WARN_DEPRECATED         2
+__UNDEFINED__  WARN_EXITING            3
+__UNDEFINED__  WARN_GLOB               4
+__UNDEFINED__  WARN_IO                 5
+__UNDEFINED__  WARN_CLOSED             6
+__UNDEFINED__  WARN_EXEC               7
+__UNDEFINED__  WARN_LAYER              8
+__UNDEFINED__  WARN_NEWLINE            9
+__UNDEFINED__  WARN_PIPE               10
+__UNDEFINED__  WARN_UNOPENED           11
+__UNDEFINED__  WARN_MISC               12
+__UNDEFINED__  WARN_NUMERIC            13
+__UNDEFINED__  WARN_ONCE               14
+__UNDEFINED__  WARN_OVERFLOW           15
+__UNDEFINED__  WARN_PACK               16
+__UNDEFINED__  WARN_PORTABLE           17
+__UNDEFINED__  WARN_RECURSION          18
+__UNDEFINED__  WARN_REDEFINE           19
+__UNDEFINED__  WARN_REGEXP             20
+__UNDEFINED__  WARN_SEVERE             21
+__UNDEFINED__  WARN_DEBUGGING          22
+__UNDEFINED__  WARN_INPLACE            23
+__UNDEFINED__  WARN_INTERNAL           24
+__UNDEFINED__  WARN_MALLOC             25
+__UNDEFINED__  WARN_SIGNAL             26
+__UNDEFINED__  WARN_SUBSTR             27
+__UNDEFINED__  WARN_SYNTAX             28
+__UNDEFINED__  WARN_AMBIGUOUS          29
+__UNDEFINED__  WARN_BAREWORD           30
+__UNDEFINED__  WARN_DIGIT              31
+__UNDEFINED__  WARN_PARENTHESIS                32
+__UNDEFINED__  WARN_PRECEDENCE         33
+__UNDEFINED__  WARN_PRINTF             34
+__UNDEFINED__  WARN_PROTOTYPE          35
+__UNDEFINED__  WARN_QW                 36
+__UNDEFINED__  WARN_RESERVED           37
+__UNDEFINED__  WARN_SEMICOLON          38
+__UNDEFINED__  WARN_TAINT              39
+__UNDEFINED__  WARN_THREADS            40
+__UNDEFINED__  WARN_UNINITIALIZED      41
+__UNDEFINED__  WARN_UNPACK             42
+__UNDEFINED__  WARN_UNTIE              43
+__UNDEFINED__  WARN_UTF8               44
+__UNDEFINED__  WARN_VOID               45
+__UNDEFINED__  WARN_ASSERTIONS         46
+
+__UNDEFINED__  packWARN(a)              (a)
+
+#ifndef ckWARN
+#  ifdef G_WARN_ON
+#    define  ckWARN(a)                  (PL_dowarn & G_WARN_ON)
+#  else
+#    define  ckWARN(a)                  PL_dowarn
+#  endif
+#endif
+
+/* warner depends on vnewSVpvf */
+#if { VERSION >= 5.004 } && !defined(warner)
+#if { NEED warner }
+
+void
+warner(U32 err, const char *pat, ...)
+{
+  SV *sv;
+  va_list args;
+
+  PERL_UNUSED_ARG(err);
+
+  va_start(args, pat);
+  sv = vnewSVpvf(pat, &args);
+  va_end(args);
+  sv_2mortal(sv);
+  warn("%s", SvPV_nolen(sv));
+}
+
+#define warner  Perl_warner
+
+/* Perl_warner_nocontext depends on warner */
+#define Perl_warner_nocontext  Perl_warner
+
+#endif
+#endif
+
+=xsinit
+
+#define NEED_warner
+
+=xsubs
+
+void
+warner()
+       CODE:
+#if { VERSION >= 5.004 }
+               warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner()
+       CODE:
+#if { VERSION >= 5.004 }
+               Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner_nocontext()
+       CODE:
+#if { VERSION >= 5.004 }
+               Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42);
+#endif
+
+void
+ckWARN()
+       CODE:
+#if { VERSION >= 5.004 }
+               if (ckWARN(WARN_MISC))
+                 Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42);
+#endif
+
+=tests plan => 5
+
+$^W = 0;
+
+my $warning;
+
+$SIG{'__WARN__'} = sub { $warning = $_[0] };
+
+$warning = '';
+Devel::PPPort::warner();
+ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner_nocontext();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($warning, '');
+
+$^W = 1;
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq '');
+
index e4fa09a..9ec8545 100644 (file)
@@ -64,3 +64,4 @@ sv_vsetpvf_mg                  # U
 sv_vsetpvfn                    # U
 unsharepvn                     # U
 vnewSVpvf                      # E
+warner                         # U
index 443a693..5c469b1 100644 (file)
@@ -12,14 +12,13 @@ mg_length                      # U
 mg_size                        # U
 newHVhv                        # E
 new_stackinfo                  # E
-regdump                        # U
+regdump                        # E
 regexec_flags                  # U
 regnext                        # E (Perl_regnext)
 runops_debug                   # U
 runops_standard                # U
 save_hints                     # U
 save_iv                        # U (save_iv)
-save_threadsv                  # E
 screaminstr                    # E (Perl_screaminstr)
 sv_iv                          # U
 sv_nv                          # U
index 2bd073b..09e97c3 100644 (file)
@@ -92,7 +92,6 @@ my_atof                        # U
 my_fflush_all                  # U
 newANONATTRSUB                 # E
 newATTRSUB                     # E
-newMYSUB                       # U
 newPADOP                       # E
 newXS                          # E (Perl_newXS)
 newXSproto                     # E
@@ -153,4 +152,3 @@ vload_module                   # U
 vmess                          # E
 vwarn                          # U
 vwarner                        # U
-warner                         # U
index bb24f78..59ceb46 100644 (file)
@@ -1,4 +1,5 @@
 5.006001
+SvGAMAGIC                      # E
 apply_attrs_string             # U
 bytes_to_utf8                  # E
 gv_efullname4                  # U
index a742bdc..9a81d8d 100644 (file)
@@ -38,7 +38,6 @@ my_socketpair                  # E
 pack_cat                       # E
 perl_destruct                  # E (perl_destruct)
 pv_uni_display                 # E
-regclass_swash                 # E (Perl_regclass_swash)
 save_shared_pvref              # E
 savesharedpv                   # E
 sortsv                         # E
@@ -46,7 +45,6 @@ sv_copypv                      # E
 sv_magicext                    # E
 sv_nolocking                   # E
 sv_nosharing                   # E
-sv_nounlocking                 # E
 sv_recode_to_utf8              # E
 sv_uni_display                 # E
 to_uni_fold                    # E
diff --git a/ext/Devel/PPPort/parts/todo/5008008 b/ext/Devel/PPPort/parts/todo/5008008
new file mode 100644 (file)
index 0000000..f17b19f
--- /dev/null
@@ -0,0 +1 @@
+5.008008
index 26b4e46..b3d4437 100644 (file)
@@ -1,8 +1,4 @@
 5.009003
-MULTICALL                      # E
-POP_MULTICALL                  # E
-PUSH_MULTICALL                 # E
-SvSTASH_set                    # E
 av_arylen_p                    # E
 ckwarn                         # U
 ckwarn_d                       # U
@@ -26,5 +22,4 @@ newWHENOP                      # E
 newWHILEOP                     # E (Perl_newWHILEOP)
 ref                            # E (Perl_ref)
 sortsv_flags                   # U
-stashpv_hvname_match           # U
 vverify                        # U
diff --git a/ext/Devel/PPPort/parts/todo/5009004 b/ext/Devel/PPPort/parts/todo/5009004
new file mode 100644 (file)
index 0000000..78a700d
--- /dev/null
@@ -0,0 +1,19 @@
+5.009004
+MULTICALL                      # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+PoisonNew                      # E
+PoisonWith                     # E
+SvREFCNT_inc_NN                # E
+SvREFCNT_inc_simple            # E
+SvREFCNT_inc_simple_NN         # E
+SvREFCNT_inc_simple_void       # E
+SvREFCNT_inc_void              # E
+SvREFCNT_inc_void_NN           # E
+gv_name_set                    # U
+my_vsnprintf                   # U
+newXS_flags                    # E
+pad_sv                         # U
+regclass_swash                 # E (Perl_regclass_swash)
+stashpv_hvname_match           # U
+sv_usepvn_flags                # U
index 86801a1..7b7ffe7 100644 (file)
@@ -32,7 +32,7 @@ use Pod::Usage;
 use List::Util qw(max);
 use Config;
 
-my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
 
 $| = 1;
 my $verbose = 0;
index 20956ed..cb68641 100644 (file)
@@ -24,10 +24,10 @@ BEGIN {
   eval "use Test";
   if ($@) {
     require 'testutil.pl';
-    print "1..3\n";
+    print "1..5\n";
   }
   else {
-    plan(tests => 3);
+    plan(tests => 5);
   }
 }
 
@@ -40,3 +40,19 @@ ok(&Devel::PPPort::TestSvUV_set($foo, 12345), 42);
 ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43);
 ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44);
 
+my $bar = [];
+
+bless $bar, 'foo';
+ok($bar->x(), 'foobar');
+
+Devel::PPPort::TestSvSTASH_set($bar, 'bar');
+ok($bar->x(), 'hacker');
+
+package foo;
+
+sub x { 'foobar' }
+
+package bar;
+
+sub x { 'hacker' }
+
index 8f73dc6..81c257d 100644 (file)
@@ -24,10 +24,10 @@ BEGIN {
   eval "use Test";
   if ($@) {
     require 'testutil.pl';
-    print "1..10\n";
+    print "1..13\n";
   }
   else {
-    plan(tests => 10);
+    plan(tests => 13);
   }
 }
 
@@ -71,3 +71,8 @@ ok($h{sv}, 4711);
 &Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl');
 ok($h{sv}, 'Perl');
 
+my $ver = eval qq[qv("v1.2.0")];
+ok($[ < 5.009 || $@ eq '');
+ok($@ || Devel::PPPort::SvVSTRING_mg($ver));
+ok(!Devel::PPPort::SvVSTRING_mg(4711));
+
index 81dde3e..711b547 100644 (file)
@@ -24,10 +24,10 @@ BEGIN {
   eval "use Test";
   if ($@) {
     require 'testutil.pl';
-    print "1..38\n";
+    print "1..42\n";
   }
   else {
-    plan(tests => 38);
+    plan(tests => 42);
   }
 }
 
@@ -106,3 +106,9 @@ ok(Devel::PPPort::prepush(), 42);
 ok(join(':', Devel::PPPort::xsreturn(0)), 'test1');
 ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2');
 
+ok(Devel::PPPort::PERL_ABS(42), 42);
+ok(Devel::PPPort::PERL_ABS(-13), 13);
+
+ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42');
+ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc');
+
diff --git a/ext/Devel/PPPort/t/pvs.t b/ext/Devel/PPPort/t/pvs.t
new file mode 100644 (file)
index 0000000..dc925c3
--- /dev/null
@@ -0,0 +1,54 @@
+################################################################################
+#
+#            !!!!!   Do NOT edit this file directly!   !!!!!
+#
+#            Edit mktests.PL and/or parts/inc/pvs instead.
+#
+################################################################################
+
+BEGIN {
+  if ($ENV{'PERL_CORE'}) {
+    chdir 't' if -d 't';
+    @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext';
+    require Config; import Config;
+    use vars '%Config';
+    if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
+      print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
+      exit 0;
+    }
+  }
+  else {
+    unshift @INC, 't';
+  }
+
+  eval "use Test";
+  if ($@) {
+    require 'testutil.pl';
+    print "1..7\n";
+  }
+  else {
+    plan(tests => 7);
+  }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+my $x = 'foo';
+
+ok(Devel::PPPort::newSVpvs(), "newSVpvs");
+
+Devel::PPPort::sv_catpvs($x);
+ok($x, "foosv_catpvs");
+
+Devel::PPPort::sv_setpvs($x);
+ok($x, "sv_setpvs");
+
+my %h = ('hv_fetchs' => 42);
+Devel::PPPort::hv_stores(\%h, 4711);
+ok(scalar keys %h, 2);
+ok(exists $h{'hv_stores'});
+ok($h{'hv_stores'}, 4711);
+ok(Devel::PPPort::hv_fetchs(\%h), 42);
+
diff --git a/ext/Devel/PPPort/t/snprintf.t b/ext/Devel/PPPort/t/snprintf.t
new file mode 100644 (file)
index 0000000..f70f71f
--- /dev/null
@@ -0,0 +1,41 @@
+################################################################################
+#
+#            !!!!!   Do NOT edit this file directly!   !!!!!
+#
+#            Edit mktests.PL and/or parts/inc/snprintf instead.
+#
+################################################################################
+
+BEGIN {
+  if ($ENV{'PERL_CORE'}) {
+    chdir 't' if -d 't';
+    @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext';
+    require Config; import Config;
+    use vars '%Config';
+    if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
+      print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
+      exit 0;
+    }
+  }
+  else {
+    unshift @INC, 't';
+  }
+
+  eval "use Test";
+  if ($@) {
+    require 'testutil.pl';
+    print "1..2\n";
+  }
+  else {
+    plan(tests => 2);
+  }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+my($l, $s) = Devel::PPPort::my_snprintf();
+ok($l, 8);
+ok($s, "foobar42");
+
diff --git a/ext/Devel/PPPort/t/warn.t b/ext/Devel/PPPort/t/warn.t
new file mode 100644 (file)
index 0000000..2607bf6
--- /dev/null
@@ -0,0 +1,65 @@
+################################################################################
+#
+#            !!!!!   Do NOT edit this file directly!   !!!!!
+#
+#            Edit mktests.PL and/or parts/inc/warn instead.
+#
+################################################################################
+
+BEGIN {
+  if ($ENV{'PERL_CORE'}) {
+    chdir 't' if -d 't';
+    @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext';
+    require Config; import Config;
+    use vars '%Config';
+    if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
+      print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
+      exit 0;
+    }
+  }
+  else {
+    unshift @INC, 't';
+  }
+
+  eval "use Test";
+  if ($@) {
+    require 'testutil.pl';
+    print "1..5\n";
+  }
+  else {
+    plan(tests => 5);
+  }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+$^W = 0;
+
+my $warning;
+
+$SIG{'__WARN__'} = sub { $warning = $_[0] };
+
+$warning = '';
+Devel::PPPort::warner();
+ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner_nocontext();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($warning, '');
+
+$^W = 1;
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq '');
+