Changeset 2067


Ignore:
Timestamp:
09/12/09 08:25:33 (2 years ago)
Author:
karpet
Message:

fresh 5.10 ppport.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Search-Tools/xs-tokenizer/ppport.h

    r767 r2067  
    55---------------------------------------------------------------------- 
    66 
    7     ppport.h -- Perl/Pollution/Portability Version 3.03  
    8     
    9     Automatically created by Devel::PPPort running under 
    10     perl 5.008006 on Tue Jul 11 09:34:09 2006. 
    11      
     7    ppport.h -- Perl/Pollution/Portability Version 3.13 
     8 
     9    Automatically created by Devel::PPPort running under perl 5.010000. 
     10 
    1211    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the 
    1312    includes in parts/inc/ instead. 
    14   
     13 
    1514    Use 'perldoc ppport.h' to view the documentation below. 
    1615 
     
    2322=head1 NAME 
    2423 
    25 ppport.h - Perl/Pollution/Portability version 3.03 
     24ppport.h - Perl/Pollution/Portability version 3.13 
    2625 
    2726=head1 SYNOPSIS 
    2827 
    29   perl ppport.h [options] [files] 
     28  perl ppport.h [options] [source files] 
     29 
     30  Searches current directory for files if no [source files] are given 
    3031 
    3132  --help                      show short help 
     33 
     34  --version                   show version 
    3235 
    3336  --patch=file                write one patch file with changes 
     
    4245  --nohints                   don't show hints 
    4346  --nochanges                 don't suggest changes 
     47  --nofilter                  don't filter input files 
     48 
     49  --strip                     strip all script and doc functionality from 
     50                              ppport.h 
    4451 
    4552  --list-provided             list provided API 
    4653  --list-unsupported          list unsupported API 
     54  --api-info=name             show Perl API portability information 
    4755 
    4856=head1 COMPATIBILITY 
    4957 
    5058This version of F<ppport.h> is designed to support operation with Perl 
    51 installations back to 5.003, and has been tested up to 5.9.2. 
     59installations back to 5.003, and has been tested up to 5.10.0. 
    5260 
    5361=head1 OPTIONS 
     
    5664 
    5765Display a brief usage summary. 
     66 
     67=head2 --version 
     68 
     69Display the version of F<ppport.h>. 
    5870 
    5971=head2 --patch=I<file> 
     
    6779If this option is given, a copy of each file will be saved with 
    6880the given suffix that contains the suggested changes. This does 
    69 not require any external programs. 
     81not require any external programs. Note that this does not 
     82automagially add a dot between the original filename and the 
     83suffix. If you want the dot, you have to include it in the option 
     84argument. 
    7085 
    7186If neither C<--patch> or C<--copy> are given, the default is to 
     
    85100version 5.003. You can use this option to reduce the output 
    86101of F<ppport.h> if you intend to be backward compatible only 
    87 up to a certain Perl version. 
     102down to a certain Perl version. 
    88103 
    89104=head2 --cplusplus 
     
    106121 
    107122Don't output any hints. Hints often contain useful portability 
    108 notes. 
     123notes. Warnings will still be displayed. 
    109124 
    110125=head2 --nochanges 
     
    113128unless these are also deactivated. 
    114129 
     130=head2 --nofilter 
     131 
     132Don't filter the list of input files. By default, files not looking 
     133like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. 
     134 
     135=head2 --strip 
     136 
     137Strip all script and documentation functionality from F<ppport.h>. 
     138This reduces the size of F<ppport.h> dramatically and may be useful 
     139if you want to include F<ppport.h> in smaller modules without 
     140increasing their distribution size too much. 
     141 
     142The stripped F<ppport.h> will have a C<--unstrip> option that allows 
     143you to undo the stripping, but only if an appropriate C<Devel::PPPort> 
     144module is installed. 
     145 
    115146=head2 --list-provided 
    116147 
    117148Lists the API elements for which compatibility is provided by 
    118149F<ppport.h>. Also lists if it must be explicitly requested, 
    119 if it has dependencies, and if there are hints for it. 
     150if it has dependencies, and if there are hints or warnings for it. 
    120151 
    121152=head2 --list-unsupported 
     
    124155F<ppport.h> and below which version of Perl they probably 
    125156won't be available or work. 
     157 
     158=head2 --api-info=I<name> 
     159 
     160Show portability information for API elements matching I<name>. 
     161If I<name> is surrounded by slashes, it is interpreted as a regular 
     162expression. 
    126163 
    127164=head1 DESCRIPTION 
     
    152189=item * 
    153190 
    154 If you use one of a few functions that were not present in earlier 
    155 versions of Perl, and that can't be provided using a macro, you have 
    156 to explicitly request support for these functions by adding one or 
     191If you use one of a few functions or variables that were not present in 
     192earlier versions of Perl, and that can't be provided using a macro, you 
     193have to explicitly request support for these functions by adding one or 
    157194more C<#define>s in your source code before the inclusion of F<ppport.h>. 
    158195 
    159 These functions will be marked C<explicit> in the list shown by 
    160 C<--list-provided>. 
     196These functions or variables will be marked C<explicit> in the list shown 
     197by C<--list-provided>. 
    161198 
    162199Depending on whether you module has a single or multiple files that 
    163 use such functions, you want either C<static> or global variants. 
    164  
    165 For a C<static> function, use: 
     200use such functions or variables, you want either C<static> or global 
     201variants. 
     202 
     203For a C<static> function or variable (used only in a single source 
     204file), use: 
    166205 
    167206    #define NEED_function 
    168  
    169 For a global function, use: 
     207    #define NEED_variable 
     208 
     209For a global function or variable (used in multiple source files), 
     210use: 
    170211 
    171212    #define NEED_function_GLOBAL 
    172  
    173 Note that you mustn't have more than one global request for one 
    174 function in your project. 
    175  
    176     Function                  Static Request               Global Request                     
     213    #define NEED_variable_GLOBAL 
     214 
     215Note that you mustn't have more than one global request for the 
     216same function or variable in your project. 
     217 
     218    Function / Variable       Static Request               Global Request 
    177219    ----------------------------------------------------------------------------------------- 
    178     eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL                
    179     grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL               
    180     grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL               
    181     grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL            
    182     grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL     
    183     grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL               
    184     newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL            
    185     newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL            
    186     sv_2pv_nolen()            NEED_sv_2pv_nolen            NEED_sv_2pv_nolen_GLOBAL           
    187     sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL             
    188     sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL           
     220    PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL 
     221    eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL 
     222    grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL 
     223    grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL 
     224    grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL 
     225    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL 
     226    grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL 
     227    load_module()             NEED_load_module             NEED_load_module_GLOBAL 
     228    my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL 
     229    my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL 
     230    my_strlcpy()              NEED_my_strlcpy              NEED_my_strlcpy_GLOBAL 
     231    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL 
     232    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL 
     233    newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL 
     234    sv_2pv_flags()            NEED_sv_2pv_flags            NEED_sv_2pv_flags_GLOBAL 
     235    sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL 
     236    sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL 
    189237    sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL 
    190     sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL           
     238    sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL 
     239    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL 
    191240    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL 
    192     vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL              
     241    vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL 
     242    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL 
     243    warner()                  NEED_warner                  NEED_warner_GLOBAL 
    193244 
    194245To avoid namespace conflicts, you can change the namespace of the 
    195 explicitly exported functions using the C<DPPP_NAMESPACE> macro. 
    196 Just C<#define> the macro before including C<ppport.h>: 
     246explicitly exported functions / variables using the C<DPPP_NAMESPACE> 
     247macro. Just C<#define> the macro before including C<ppport.h>: 
    197248 
    198249    #define DPPP_NAMESPACE MyOwnNamespace_ 
     
    239290This would output context diffs with 10 lines of context. 
    240291 
     292If you want to create patched copies of your files instead, use: 
     293 
     294    perl ppport.h --copy=.new 
     295 
     296To display portability information for the C<newSVpvn> function, 
     297use: 
     298 
     299    perl ppport.h --api-info=newSVpvn 
     300 
     301Since the argument to C<--api-info> can be a regular expression, 
     302you can use 
     303 
     304    perl ppport.h --api-info=/_nomg$/ 
     305 
     306to display portability information for all C<_nomg> functions or 
     307 
     308    perl ppport.h --api-info=/./ 
     309 
     310to display information for all known API elements. 
     311 
    241312=head1 BUGS 
    242313 
     
    281352=head1 COPYRIGHT 
    282353 
    283 Version 3.x, Copyright (c) 2004, Marcus Holland-Moritz. 
     354Version 3.x, Copyright (c) 2004-2007, Marcus Holland-Moritz. 
    284355 
    285356Version 2.x, Copyright (C) 2001, Paul Marquess. 
     
    297368 
    298369use strict; 
     370 
     371# Disable broken TRIE-optimization 
     372BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } 
     373 
     374my $VERSION = 3.13; 
    299375 
    300376my %opt = ( 
     
    304380  changes   => 1, 
    305381  cplusplus => 0, 
     382  filter    => 1, 
     383  strip     => 0, 
     384  version   => 0, 
    306385); 
    307386 
     
    310389my $HS = "[ \t]";             # horizontal whitespace 
    311390 
     391# Never use C comments in this file! 
     392my $ccs  = '/'.'*'; 
     393my $cce  = '*'.'/'; 
     394my $rccs = quotemeta $ccs; 
     395my $rcce = quotemeta $cce; 
     396 
    312397eval { 
    313398  require Getopt::Long; 
    314399  Getopt::Long::GetOptions(\%opt, qw( 
    315     help quiet diag! hints! changes! cplusplus 
     400    help quiet diag! filter! hints! changes! cplusplus strip version 
    316401    patch=s copy=s diff=s compat-version=s 
    317     list-provided list-unsupported 
     402    list-provided list-unsupported api-info=s 
    318403  )) or usage(); 
    319404}; 
     
    324409} 
    325410 
     411if ($opt{version}) { 
     412  print "This is $0 $VERSION.\n"; 
     413  exit 0; 
     414} 
     415 
    326416usage() if $opt{help}; 
     417strip() if $opt{strip}; 
    327418 
    328419if (exists $opt{'compat-version'}) { 
     
    332423  } 
    333424  die "Only Perl 5 is supported\n" if $r != 5; 
    334   die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $v >= 1000; 
     425  die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; 
    335426  $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; 
    336427} 
     
    339430} 
    340431 
    341 # Never use C comments in this file!!!!! 
    342 my $ccs  = '/'.'*'; 
    343 my $cce  = '*'.'/'; 
    344 my $rccs = quotemeta $ccs; 
    345 my $rcce = quotemeta $cce; 
    346  
    347 my @files; 
    348  
    349 if (@ARGV) { 
    350   @files = map { glob $_ } @ARGV; 
    351 } 
    352 else { 
    353   eval { 
    354     require File::Find; 
    355     File::Find::find(sub { 
    356       $File::Find::name =~ /\.(xs|c|h|cc)$/i 
    357           and push @files, $File::Find::name; 
    358     }, '.'); 
    359   }; 
    360   if ($@) { 
    361     @files = map { glob $_ } qw(*.xs *.c *.h *.cc); 
    362   } 
    363   my %filter = map { /(.*)\.xs$/ ? ("$1.c" => 1) : () } @files; 
    364   @files = grep { !/\b\Q$ppport\E$/i && !exists $filter{$_} } @files; 
    365 } 
    366  
    367 unless (@files) { 
    368   die "No input files given!\n"; 
    369 } 
    370  
    371432my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ 
    372                 ? ( $1 => {  
     433                ? ( $1 => { 
    373434                      ($2                  ? ( base     => $2 ) : ()), 
    374435                      ($3                  ? ( todo     => $3 ) : ()), 
     
    405466EXTEND||| 
    406467EXTERN_C|5.005000||p 
     468F0convert|||n 
    407469FREETMPS||| 
    408470GIMME_V||5.004000|n 
     
    445507LVRET||| 
    446508MARK||| 
     509MULTICALL||5.009005| 
    447510MY_CXT_CLONE|5.009002||p 
    448511MY_CXT_INIT|5.007003||p 
     
    450513MoveD|5.009002||p 
    451514Move||| 
    452 NEWSV||| 
    453515NOOP|5.005000||p 
    454516NUM2PTR|5.006000||p 
     
    457519NVff|5.006001||p 
    458520NVgf|5.006001||p 
    459 Newc||| 
    460 Newz||| 
    461 New||| 
     521Newxc|5.009003||p 
     522Newxz|5.009003||p 
     523Newx|5.009003||p 
    462524Nullav||| 
    463525Nullch||| 
     
    469531PAD_CLONE_VARS||| 
    470532PAD_COMPNAME_FLAGS||| 
     533PAD_COMPNAME_GEN_set||| 
    471534PAD_COMPNAME_GEN||| 
    472535PAD_COMPNAME_OURSTASH||| 
     
    481544PAD_SVl||| 
    482545PAD_SV||| 
    483 PERL_BCDVERSION|5.009002||p 
     546PERL_ABS|5.008001||p 
     547PERL_BCDVERSION|5.009005||p 
    484548PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p 
     549PERL_HASH|5.004000||p 
    485550PERL_INT_MAX|5.004000||p 
    486551PERL_INT_MIN|5.004000||p 
     
    498563PERL_MAGIC_ext|5.007002||p 
    499564PERL_MAGIC_fm|5.007002||p 
    500 PERL_MAGIC_glob|5.007002||p 
     565PERL_MAGIC_glob|5.009005||p 
    501566PERL_MAGIC_isaelem|5.007002||p 
    502567PERL_MAGIC_isa|5.007002||p 
    503 PERL_MAGIC_mutex|5.007002||p 
     568PERL_MAGIC_mutex|5.009005||p 
    504569PERL_MAGIC_nkeys|5.007002||p 
    505570PERL_MAGIC_overload_elem|5.007002||p 
     
    535600PERL_SHORT_MAX|5.004000||p 
    536601PERL_SHORT_MIN|5.004000||p 
     602PERL_SIGNALS_UNSAFE_FLAG|5.008001||p 
    537603PERL_SUBVERSION|5.006000||p 
    538604PERL_UCHAR_MAX|5.004000||p 
     
    542608PERL_ULONG_MAX|5.004000||p 
    543609PERL_ULONG_MIN|5.004000||p 
     610PERL_UNUSED_ARG|5.009003||p 
     611PERL_UNUSED_CONTEXT|5.009004||p 
    544612PERL_UNUSED_DECL|5.007002||p 
     613PERL_UNUSED_VAR|5.007002||p 
    545614PERL_UQUAD_MAX|5.004000||p 
    546615PERL_UQUAD_MIN|5.004000||p 
     616PERL_USE_GCC_BRACE_GROUPS|5.009004||p 
    547617PERL_USHORT_MAX|5.004000||p 
    548618PERL_USHORT_MIN|5.004000||p 
    549619PERL_VERSION|5.006000||p 
     620PL_DBsignal|5.005000||p 
    550621PL_DBsingle|||pn 
    551622PL_DBsub|||pn 
    552 PL_DBtrace|||n 
     623PL_DBtrace|||pn 
    553624PL_Sv|5.005000||p 
    554625PL_compiling|5.004050||p 
    555 PL_copline|5.005000||p 
     626PL_copline|5.009005||p 
    556627PL_curcop|5.004050||p 
    557628PL_curstash|5.004050||p 
     
    562633PL_dowarn|||pn 
    563634PL_errgv|5.004050||p 
     635PL_expect|5.009005||p 
    564636PL_hexdigit|5.005000||p 
    565637PL_hints|5.005000||p 
    566638PL_last_in_gv|||n 
     639PL_laststatval|5.005000||p 
    567640PL_modglobal||5.005000|n 
    568641PL_na|5.004050||pn 
     
    575648PL_rsfp|5.004050||p 
    576649PL_rs|||n 
     650PL_signals|5.008001||p 
    577651PL_stack_base|5.004050||p 
    578652PL_stack_sp|5.004050||p 
     653PL_statcache|5.005000||p 
    579654PL_stdingv|5.004050||p 
    580655PL_sv_arenaroot|5.004050||p 
     
    584659PL_tainted|5.004050||p 
    585660PL_tainting|5.004050||p 
     661POP_MULTICALL||5.009005| 
    586662POPi|||n 
    587663POPl|||n 
     
    597673PTRV|5.006000||p 
    598674PUSHMARK||| 
     675PUSH_MULTICALL||5.009005| 
    599676PUSHi||| 
    600677PUSHmortal|5.009002||p 
     
    606683PerlIO_clearerr||5.007003| 
    607684PerlIO_close||5.007003| 
     685PerlIO_context_layers||5.009004| 
    608686PerlIO_eof||5.007003| 
    609687PerlIO_error||5.007003| 
     
    626704PerlIO_unread||5.007003| 
    627705PerlIO_write||5.007003| 
     706Perl_signbit||5.009005|n 
     707PoisonFree|5.009004||p 
     708PoisonNew|5.009004||p 
     709PoisonWith|5.009004||p 
    628710Poison|5.008000||p 
    629711RETVAL|||n 
     
    641723STMT_END|||p 
    642724STMT_START|||p 
     725STR_WITH_LEN|5.009003||p 
    643726ST||| 
     727SV_CONST_RETURN|5.009003||p 
     728SV_COW_DROP_PV|5.008001||p 
     729SV_COW_SHARED_HASH_KEYS|5.009005||p 
     730SV_GMAGIC|5.007002||p 
     731SV_HAS_TRAILING_NUL|5.009004||p 
     732SV_IMMEDIATE_UNREF|5.007001||p 
     733SV_MUTABLE_RETURN|5.009003||p 
     734SV_NOSTEAL|5.009002||p 
     735SV_SMAGIC|5.009003||p 
     736SV_UTF8_NO_ENCODING|5.008001||p 
     737SVf|5.006000||p 
    644738SVt_IV||| 
    645739SVt_NV||| 
     
    652746Slab_Alloc||| 
    653747Slab_Free||| 
     748Slab_to_rw||| 
    654749StructCopy||| 
    655750SvCUR_set||| 
    656751SvCUR||| 
    657752SvEND||| 
     753SvGAMAGIC||5.006001| 
    658754SvGETMAGIC|5.004050||p 
    659755SvGROW||| 
     
    668764SvIVX||| 
    669765SvIV_nomg|5.009001||p 
     766SvIV_set||| 
    670767SvIVx||| 
    671768SvIV||| 
    672769SvIsCOW_shared_hash||5.008003| 
    673770SvIsCOW||5.008003| 
     771SvLEN_set||| 
    674772SvLEN||| 
    675773SvLOCK||5.007003| 
     774SvMAGIC_set|5.009003||p 
    676775SvNIOK_off||| 
    677776SvNIOKp||| 
     
    683782SvNOK||| 
    684783SvNVX||| 
     784SvNV_set||| 
    685785SvNVx||| 
    686786SvNV||| 
     
    693793SvPOKp||| 
    694794SvPOK||| 
     795SvPVX_const|5.009003||p 
     796SvPVX_mutable|5.009003||p 
    695797SvPVX||| 
     798SvPV_const|5.009003||p 
     799SvPV_flags_const_nolen|5.009003||p 
     800SvPV_flags_const|5.009003||p 
     801SvPV_flags_mutable|5.009003||p 
     802SvPV_flags|5.007002||p 
     803SvPV_force_flags_mutable|5.009003||p 
     804SvPV_force_flags_nolen|5.009003||p 
     805SvPV_force_flags|5.007002||p 
     806SvPV_force_mutable|5.009003||p 
     807SvPV_force_nolen|5.009003||p 
     808SvPV_force_nomg_nolen|5.009003||p 
    696809SvPV_force_nomg|5.007002||p 
    697 SvPV_force||| 
     810SvPV_force|||p 
     811SvPV_mutable|5.009003||p 
     812SvPV_nolen_const|5.009003||p 
    698813SvPV_nolen|5.006000||p 
     814SvPV_nomg_const_nolen|5.009003||p 
     815SvPV_nomg_const|5.009003||p 
    699816SvPV_nomg|5.007002||p 
     817SvPV_set||| 
    700818SvPVbyte_force||5.009002| 
    701819SvPVbyte_nolen||5.006000| 
     
    711829SvPV||| 
    712830SvREFCNT_dec||| 
    713 SvREFCNT_inc||| 
     831SvREFCNT_inc_NN|5.009004||p 
     832SvREFCNT_inc_simple_NN|5.009004||p 
     833SvREFCNT_inc_simple_void_NN|5.009004||p 
     834SvREFCNT_inc_simple_void|5.009004||p 
     835SvREFCNT_inc_simple|5.009004||p 
     836SvREFCNT_inc_void_NN|5.009004||p 
     837SvREFCNT_inc_void|5.009004||p 
     838SvREFCNT_inc|||p 
    714839SvREFCNT||| 
    715840SvROK_off||| 
    716841SvROK_on||| 
    717842SvROK||| 
     843SvRV_set|5.009003||p 
    718844SvRV||| 
     845SvRXOK||5.009005| 
     846SvRX||5.009005| 
    719847SvSETMAGIC||| 
     848SvSHARED_HASH|5.009003||p 
    720849SvSHARE||5.007003| 
     850SvSTASH_set|5.009003||p 
    721851SvSTASH||| 
    722852SvSetMagicSV_nosteal||5.004000| 
     
    731861SvTYPE||| 
    732862SvUNLOCK||5.007003| 
    733 SvUOK||5.007001| 
     863SvUOK|5.007001|5.006000|p 
    734864SvUPGRADE||| 
    735865SvUTF8_off||5.006000| 
     
    739869SvUVX|5.004000||p 
    740870SvUV_nomg|5.009001||p 
     871SvUV_set|5.009003||p 
    741872SvUVx|5.004000||p 
    742873SvUV|5.004000||p 
    743874SvVOK||5.008001| 
     875SvVSTRING_mg|5.009004||p 
    744876THIS|||n 
    745877UNDERBAR|5.009002||p 
     878UTF8_MAXBYTES|5.009002||p 
    746879UVSIZE|5.006000||p 
    747880UVTYPE|5.006000||p 
     
    750883UVuf|5.006000||p 
    751884UVxf|5.006000||p 
     885WARN_ALL|5.006000||p 
     886WARN_AMBIGUOUS|5.006000||p 
     887WARN_ASSERTIONS|5.009005||p 
     888WARN_BAREWORD|5.006000||p 
     889WARN_CLOSED|5.006000||p 
     890WARN_CLOSURE|5.006000||p 
     891WARN_DEBUGGING|5.006000||p 
     892WARN_DEPRECATED|5.006000||p 
     893WARN_DIGIT|5.006000||p 
     894WARN_EXEC|5.006000||p 
     895WARN_EXITING|5.006000||p 
     896WARN_GLOB|5.006000||p 
     897WARN_INPLACE|5.006000||p 
     898WARN_INTERNAL|5.006000||p 
     899WARN_IO|5.006000||p 
     900WARN_LAYER|5.008000||p 
     901WARN_MALLOC|5.006000||p 
     902WARN_MISC|5.006000||p 
     903WARN_NEWLINE|5.006000||p 
     904WARN_NUMERIC|5.006000||p 
     905WARN_ONCE|5.006000||p 
     906WARN_OVERFLOW|5.006000||p 
     907WARN_PACK|5.006000||p 
     908WARN_PARENTHESIS|5.006000||p 
     909WARN_PIPE|5.006000||p 
     910WARN_PORTABLE|5.006000||p 
     911WARN_PRECEDENCE|5.006000||p 
     912WARN_PRINTF|5.006000||p 
     913WARN_PROTOTYPE|5.006000||p 
     914WARN_QW|5.006000||p 
     915WARN_RECURSION|5.006000||p 
     916WARN_REDEFINE|5.006000||p 
     917WARN_REGEXP|5.006000||p 
     918WARN_RESERVED|5.006000||p 
     919WARN_SEMICOLON|5.006000||p 
     920WARN_SEVERE|5.006000||p 
     921WARN_SIGNAL|5.006000||p 
     922WARN_SUBSTR|5.006000||p 
     923WARN_SYNTAX|5.006000||p 
     924WARN_TAINT|5.006000||p 
     925WARN_THREADS|5.008000||p 
     926WARN_UNINITIALIZED|5.006000||p 
     927WARN_UNOPENED|5.006000||p 
     928WARN_UNPACK|5.006000||p 
     929WARN_UNTIE|5.006000||p 
     930WARN_UTF8|5.006000||p 
     931WARN_VOID|5.006000||p 
     932XCPT_CATCH|5.009002||p 
     933XCPT_RETHROW|5.009002||p 
     934XCPT_TRY_END|5.009002||p 
     935XCPT_TRY_START|5.009002||p 
    752936XPUSHi||| 
    753937XPUSHmortal|5.009002||p 
     
    764948XSRETURN_UV|5.008001||p 
    765949XSRETURN_YES||| 
    766 XSRETURN||| 
     950XSRETURN|||p 
    767951XST_mIV||| 
    768952XST_mNO||| 
     
    774958XS_VERSION_BOOTCHECK||| 
    775959XS_VERSION||| 
     960XSprePUSH|5.006000||p 
    776961XS||| 
    777962ZeroD|5.009002||p 
     
    781966aMY_CXT_|5.007003||p 
    782967aMY_CXT|5.007003||p 
     968aTHXR_|5.009005||p 
     969aTHXR|5.009005||p 
    783970aTHX_|5.006000||p 
    784971aTHX|5.006000||p 
    785 add_data||| 
     972add_data|||n 
     973addmad||| 
    786974allocmy||| 
    787975amagic_call||| 
     976amagic_cmp_locale||| 
     977amagic_cmp||| 
     978amagic_i_ncmp||| 
     979amagic_ncmp||| 
    788980any_dup||| 
    789981ao||| 
    790982append_elem||| 
    791983append_list||| 
     984append_madprops||| 
    792985apply_attrs_my||| 
    793986apply_attrs_string||5.006001| 
    794987apply_attrs||| 
    795988apply||| 
    796 asIV||| 
    797 asUV||| 
    798989atfork_lock||5.007003|n 
    799990atfork_unlock||5.007003|n 
     991av_arylen_p||5.009003| 
    800992av_clear||| 
     993av_create_and_push||5.009005| 
     994av_create_and_unshift_one||5.009005| 
    801995av_delete||5.006000| 
    802996av_exists||5.006000| 
     
    8231017boot_core_PerlIO||| 
    8241018boot_core_UNIVERSAL||| 
     1019boot_core_mro||| 
    8251020boot_core_xsutils||| 
    8261021bytes_from_utf8||5.007001| 
     1022bytes_to_uni|||n 
    8271023bytes_to_utf8||5.006001| 
    828 cache_re||| 
    8291024call_argv|5.006000||p 
    8301025call_atexit||5.006000| 
    831 call_body||| 
    832 call_list_body||| 
    8331026call_list||5.004000| 
    8341027call_method|5.006000||p 
     
    8411034cast_ulong||5.006000| 
    8421035cast_uv||5.006000| 
     1036check_type_and_open||| 
    8431037check_uni||| 
    8441038checkcomma||| 
    8451039checkposixcc||| 
    846 cl_and||| 
    847 cl_anything||| 
    848 cl_init_zero||| 
    849 cl_init||| 
    850 cl_is_anything||| 
    851 cl_or||| 
     1040ckWARN|5.006000||p 
     1041ck_anoncode||| 
     1042ck_bitop||| 
     1043ck_concat||| 
     1044ck_defined||| 
     1045ck_delete||| 
     1046ck_die||| 
     1047ck_eof||| 
     1048ck_eval||| 
     1049ck_exec||| 
     1050ck_exists||| 
     1051ck_exit||| 
     1052ck_ftst||| 
     1053ck_fun||| 
     1054ck_glob||| 
     1055ck_grep||| 
     1056ck_index||| 
     1057ck_join||| 
     1058ck_lengthconst||| 
     1059ck_lfun||| 
     1060ck_listiob||| 
     1061ck_match||| 
     1062ck_method||| 
     1063ck_null||| 
     1064ck_open||| 
     1065ck_readline||| 
     1066ck_repeat||| 
     1067ck_require||| 
     1068ck_retarget||| 
     1069ck_return||| 
     1070ck_rfun||| 
     1071ck_rvconst||| 
     1072ck_sassign||| 
     1073ck_select||| 
     1074ck_shift||| 
     1075ck_sort||| 
     1076ck_spair||| 
     1077ck_split||| 
     1078ck_subr||| 
     1079ck_substr||| 
     1080ck_svconst||| 
     1081ck_trunc||| 
     1082ck_unpack||| 
     1083ckwarn_d||5.009003| 
     1084ckwarn||5.009003| 
     1085cl_and|||n 
     1086cl_anything|||n 
     1087cl_init_zero|||n 
     1088cl_init|||n 
     1089cl_is_anything|||n 
     1090cl_or|||n 
     1091clear_placeholders||| 
    8521092closest_cop||| 
    8531093convert||| 
    8541094cop_free||| 
    8551095cr_textfilter||| 
     1096create_eval_scope||| 
    8561097croak_nocontext|||vn 
    8571098croak|||v 
    858 csighandler||5.007001|n 
     1099csighandler||5.009003|n 
     1100curmad||| 
    8591101custom_op_desc||5.007003| 
    8601102custom_op_name||5.007003| 
     1103cv_ckproto_len||| 
    8611104cv_ckproto||| 
    8621105cv_clone||| 
     
    8671110cx_dup||| 
    8681111cxinc||| 
     1112dAXMARK|5.009003||p 
    8691113dAX|5.007002||p 
    8701114dITEMS|5.007002||p 
    8711115dMARK||| 
     1116dMULTICALL||5.009003| 
    8721117dMY_CXT_SV|5.007003||p 
    8731118dMY_CXT|5.007003||p 
     
    8761121dSP||| 
    8771122dTHR|5.004050||p 
     1123dTHXR|5.009005||p 
    8781124dTHXa|5.006000||p 
    8791125dTHXoa|5.006000||p 
    8801126dTHX|5.006000||p 
    8811127dUNDERBAR|5.009002||p 
     1128dVAR|5.009003||p 
     1129dXCPT|5.009002||p 
    8821130dXSARGS||| 
    8831131dXSI32||| 
     1132dXSTARG|5.006000||p 
    8841133deb_curcv||| 
    8851134deb_nocontext|||vn 
     
    8911140debstackptrs||5.007003| 
    8921141debstack||5.007003| 
     1142debug_start_match||| 
    8931143deb||5.007003|v 
    894 default_protect|||v 
    895 del_he||| 
    8961144del_sv||| 
    897 del_xiv||| 
    898 del_xnv||| 
    899 del_xpvav||| 
    900 del_xpvbm||| 
    901 del_xpvcv||| 
    902 del_xpvhv||| 
    903 del_xpviv||| 
    904 del_xpvlv||| 
    905 del_xpvmg||| 
    906 del_xpvnv||| 
    907 del_xpv||| 
    908 del_xrv||| 
     1145delete_eval_scope||| 
    9091146delimcpy||5.004000| 
    910 depcom||| 
    9111147deprecate_old||| 
    9121148deprecate||| 
    9131149despatch_signals||5.007001| 
     1150destroy_matcher||| 
    9141151die_nocontext|||vn 
    9151152die_where||| 
     
    9421179do_oddball||| 
    9431180do_op_dump||5.006000| 
     1181do_op_xmldump||| 
    9441182do_open9||5.006000| 
    9451183do_openn||5.007001| 
     
    9471185do_pipe||| 
    9481186do_pmop_dump||5.006000| 
     1187do_pmop_xmldump||| 
    9491188do_print||| 
    9501189do_readline||| 
     
    9521191do_semop||| 
    9531192do_shmio||| 
     1193do_smartmatch||| 
    9541194do_spawn_nowait||| 
    9551195do_spawn||| 
     
    9701210docatch_body||| 
    9711211docatch||| 
    972 doencodes||| 
    9731212doeval||| 
    9741213dofile||| 
     
    9801219doparseform||| 
    9811220dopoptoeval||| 
     1221dopoptogiven||| 
    9821222dopoptolabel||| 
    9831223dopoptoloop||| 
    9841224dopoptosub_at||| 
    9851225dopoptosub||| 
     1226dopoptowhen||| 
     1227doref||5.009003| 
    9861228dounwind||| 
    9871229dowantarray||| 
    9881230dump_all||5.006000| 
    9891231dump_eval||5.006000| 
     1232dump_exec_pos||| 
    9901233dump_fds||| 
    9911234dump_form||5.006000| 
     
    9941237dump_packsubs||5.006000| 
    9951238dump_sub||5.006000| 
     1239dump_sv_child||| 
     1240dump_trie_interim_list||| 
     1241dump_trie_interim_table||| 
     1242dump_trie||| 
    9961243dump_vindent||5.006000| 
    9971244dumpuntil||| 
    9981245dup_attrlist||| 
     1246emulate_cop_io||| 
    9991247emulate_eaccess||| 
    10001248eval_pv|5.006000||p 
    10011249eval_sv|5.006000||p 
     1250exec_failed||| 
    10021251expect_number||| 
    10031252fbm_compile||5.005000| 
    10041253fbm_instr||5.005000| 
    10051254fd_on_nosuid_fs||| 
     1255feature_is_enabled||| 
    10061256filter_add||| 
    10071257filter_del||| 
    10081258filter_gets||| 
    10091259filter_read||| 
     1260find_and_forget_pmops||| 
     1261find_array_subscript||| 
    10101262find_beginning||| 
    10111263find_byclass||| 
     1264find_hash_subscript||| 
    10121265find_in_my_stash||| 
    1013 find_runcv||| 
     1266find_runcv||5.008001| 
    10141267find_rundefsvoffset||5.009002| 
    10151268find_script||| 
    10161269find_uninit_var||| 
     1270first_symbol|||n 
    10171271fold_constants||| 
    10181272forbid_setid||| 
     
    10221276force_version||| 
    10231277force_word||| 
     1278forget_pmop||| 
    10241279form_nocontext|||vn 
    10251280form||5.004000|v 
    10261281fp_dup||| 
    10271282fprintf_nocontext|||vn 
     1283free_global_struct||| 
    10281284free_tied_hv_pool||| 
    10291285free_tmps||| 
    10301286gen_constant_list||| 
     1287get_arena||| 
    10311288get_av|5.006000||p 
    10321289get_context||5.006000|n 
     1290get_cvn_flags||5.009005| 
    10331291get_cv|5.006000||p 
    10341292get_db_sub||| 
     
    10431301get_opargs||| 
    10441302get_ppaddr||5.006000| 
     1303get_re_arg||| 
    10451304get_sv|5.006000||p 
    10461305get_vtbl||5.005030| 
    10471306getcwd_sv||5.007002| 
    10481307getenv_len||| 
     1308glob_2number||| 
     1309glob_2pv||| 
     1310glob_assign_glob||| 
     1311glob_assign_ref||| 
    10491312gp_dup||| 
    10501313gp_free||| 
     
    10591322gv_HVadd||| 
    10601323gv_IOadd||| 
     1324gv_SVadd||| 
    10611325gv_autoload4||5.004000| 
    10621326gv_check||| 
     1327gv_const_sv||5.009003| 
    10631328gv_dump||5.006000| 
    10641329gv_efullname3||5.004000| 
     
    10661331gv_efullname||| 
    10671332gv_ename||| 
     1333gv_fetchfile_flags||5.009005| 
    10681334gv_fetchfile||| 
    10691335gv_fetchmeth_autoload||5.007003| 
     
    10711337gv_fetchmethod||| 
    10721338gv_fetchmeth||| 
     1339gv_fetchpvn_flags||5.009002| 
    10731340gv_fetchpv||| 
     1341gv_fetchsv||5.009002| 
    10741342gv_fullname3||5.004000| 
    10751343gv_fullname4||5.006001| 
     
    10781346gv_init_sv||| 
    10791347gv_init||| 
    1080 gv_share||| 
    1081 gv_stashpvn|5.006000||p 
     1348gv_name_set||5.009004| 
     1349gv_stashpvn|5.004000||p 
     1350gv_stashpvs||5.009003| 
    10821351gv_stashpv||| 
    10831352gv_stashsv||| 
    10841353he_dup||| 
     1354hek_dup||| 
    10851355hfreeentries||| 
    10861356hsplit||| 
    1087 hv_assert||5.009001| 
     1357hv_assert||5.009005| 
     1358hv_auxinit|||n 
     1359hv_backreferences_p||| 
    10881360hv_clear_placeholders||5.009001| 
    10891361hv_clear||| 
     1362hv_copy_hints_hv||| 
    10901363hv_delayfree_ent||5.004000| 
    10911364hv_delete_common||| 
    10921365hv_delete_ent||5.004000| 
    10931366hv_delete||| 
     1367hv_eiter_p||5.009003| 
     1368hv_eiter_set||5.009003| 
    10941369hv_exists_ent||5.004000| 
    10951370hv_exists||| 
    10961371hv_fetch_common||| 
    10971372hv_fetch_ent||5.004000| 
     1373hv_fetchs|5.009003||p 
    10981374hv_fetch||| 
    10991375hv_free_ent||5.004000| 
     
    11051381hv_iternext||| 
    11061382hv_iterval||| 
     1383hv_kill_backrefs||| 
    11071384hv_ksplit||5.004000| 
    1108 hv_magic_check||| 
     1385hv_magic_check|||n 
     1386hv_magic_uvar_xkey||| 
    11091387hv_magic||| 
     1388hv_name_set||5.009003| 
    11101389hv_notallowed||| 
     1390hv_placeholders_get||5.009003| 
     1391hv_placeholders_p||5.009003| 
     1392hv_placeholders_set||5.009003| 
     1393hv_riter_p||5.009003| 
     1394hv_riter_set||5.009003| 
    11111395hv_scalar||5.009001| 
    11121396hv_store_ent||5.004000| 
    11131397hv_store_flags||5.008000| 
     1398hv_stores|5.009004||p 
    11141399hv_store||| 
    11151400hv_undef||| 
     
    11191404incl_perldb||| 
    11201405incline||| 
     1406incpush_if_exists||| 
    11211407incpush||| 
    11221408ingroup||| 
    11231409init_argv_symbols||| 
    11241410init_debugger||| 
     1411init_global_struct||| 
    11251412init_i18nl10n||5.006000| 
    11261413init_i18nl14n||5.006000| 
    11271414init_ids||| 
    11281415init_interp||| 
    1129 init_lexer||| 
    11301416init_main_stash||| 
    11311417init_perllib||| 
     
    11471433isUPPER||| 
    11481434is_an_int||| 
     1435is_gv_magical_sv||| 
    11491436is_gv_magical||| 
    1150 is_handle_constructor||| 
     1437is_handle_constructor|||n 
     1438is_list_assignment||| 
    11511439is_lvalue_sub||5.007001| 
    11521440is_uni_alnum_lc||5.006000| 
     
    11821470is_utf8_alpha||5.006000| 
    11831471is_utf8_ascii||5.006000| 
     1472is_utf8_char_slow|||n 
    11841473is_utf8_char||5.006000| 
    11851474is_utf8_cntrl||5.006000| 
     1475is_utf8_common||| 
    11861476is_utf8_digit||5.006000| 
    11871477is_utf8_graph||5.006000| 
     
    11931483is_utf8_punct||5.006000| 
    11941484is_utf8_space||5.006000| 
     1485is_utf8_string_loclen||5.009003| 
    11951486is_utf8_string_loc||5.008001| 
    11961487is_utf8_string||5.006001| 
     
    12011492ix|||n 
    12021493jmaybe||| 
     1494join_exact||| 
    12031495keyword||| 
    12041496leave_scope||| 
     
    12061498lex_start||| 
    12071499linklist||| 
    1208 list_assignment||| 
    12091500listkids||| 
    12101501list||| 
    12111502load_module_nocontext|||vn 
    1212 load_module||5.006000|v 
     1503load_module|5.006000||pv 
    12131504localize||| 
     1505looks_like_bool||| 
    12141506looks_like_number||| 
    12151507lop||| 
     
    12221514mXPUSHp|5.009002||p 
    12231515mXPUSHu|5.009002||p 
     1516mad_free||| 
     1517madlex||| 
     1518madparse||| 
    12241519magic_clear_all_env||| 
    12251520magic_clearenv||| 
     1521magic_clearhint||| 
    12261522magic_clearpack||| 
    12271523magic_clearsig||| 
    12281524magic_dump||5.006000| 
    12291525magic_existspack||| 
     1526magic_freearylen_p||| 
    12301527magic_freeovrld||| 
    12311528magic_freeregexp||| 
    12321529magic_getarylen||| 
    12331530magic_getdefelem||| 
    1234 magic_getglob||| 
    12351531magic_getnkeys||| 
    12361532magic_getpack||| 
     
    12611557magic_setfm||| 
    12621558magic_setglob||| 
     1559magic_sethint||| 
    12631560magic_setisa||| 
    12641561magic_setmglob||| 
     
    12771574magic_wipepack||| 
    12781575magicname||| 
     1576make_matcher||| 
     1577make_trie_failtable||| 
     1578make_trie||| 
    12791579malloced_size|||n 
    12801580malloc||5.007002|n 
    12811581markstack_grow||| 
     1582matcher_matches_sv||| 
    12821583measure_struct||| 
    12831584memEQ|5.004000||p 
     
    12961597mg_get||| 
    12971598mg_length||5.005000| 
     1599mg_localize||| 
    12981600mg_magical||| 
    12991601mg_set||| 
     
    13041606modkids||| 
    13051607mod||| 
    1306 more_he||| 
     1608more_bodies||| 
    13071609more_sv||| 
    1308 more_xiv||| 
    1309 more_xnv||| 
    1310 more_xpvav||| 
    1311 more_xpvbm||| 
    1312 more_xpvcv||| 
    1313 more_xpvhv||| 
    1314 more_xpviv||| 
    1315 more_xpvlv||| 
    1316 more_xpvmg||| 
    1317 more_xpvnv||| 
    1318 more_xpv||| 
    1319 more_xrv||| 
    13201610moreswitches||| 
     1611mro_get_linear_isa_c3||5.009005| 
     1612mro_get_linear_isa_dfs||5.009005| 
     1613mro_get_linear_isa||5.009005| 
     1614mro_isa_changed_in||| 
     1615mro_meta_dup||| 
     1616mro_meta_init||| 
     1617mro_method_changed_in||5.009005| 
    13211618mul128||| 
    13221619mulexp10|||n 
     
    13331630my_bzero|||n 
    13341631my_chsize||| 
     1632my_clearenv||| 
     1633my_cxt_index||| 
     1634my_cxt_init||| 
     1635my_dirfd||5.009005| 
    13351636my_exit_jump||| 
    13361637my_exit||| 
     
    13661667my_popen||5.004000| 
    13671668my_setenv||| 
     1669my_snprintf|5.009004||pvn 
    13681670my_socketpair||5.007003|n 
     1671my_sprintf||5.009003|vn 
    13691672my_stat||| 
    13701673my_strftime||5.007002| 
     1674my_strlcat|5.009004||pn 
     1675my_strlcpy|5.009004||pn 
    13711676my_swabn|||n 
    13721677my_swap||| 
    13731678my_unexec||| 
     1679my_vsnprintf||5.009004|n 
    13741680my||| 
     1681need_utf8|||n 
    13751682newANONATTRSUB||5.006000| 
    13761683newANONHASH||| 
     
    13831690newBINOP||| 
    13841691newCONDOP||| 
    1385 newCONSTSUB|5.006000||p 
     1692newCONSTSUB|5.004050||p 
    13861693newCVREF||| 
    13871694newDEFSVOP||| 
    13881695newFORM||| 
    13891696newFOROP||| 
     1697newGIVENOP||5.009003| 
     1698newGIVWHENOP||| 
     1699newGP||| 
    13901700newGVOP||| 
    13911701newGVREF||| 
     
    13991709newLOOPEX||| 
    14001710newLOOPOP||| 
    1401 newMYSUB||5.006000| 
     1711newMADPROP||| 
     1712newMADsv||| 
     1713newMYSUB||| 
    14021714newNULLLIST||| 
    14031715newOP||| 
    1404 newPADOP||5.006000| 
     1716newPADOP||| 
    14051717newPMOP||| 
    14061718newPROG||| 
     
    14081720newRANGE||| 
    14091721newRV_inc|5.004000||p 
    1410 newRV_noinc|5.006000||p 
     1722newRV_noinc|5.004000||p 
    14111723newRV||| 
    14121724newSLICEOP||| 
     
    14151727newSVOP||| 
    14161728newSVREF||| 
     1729newSV_type||5.009005| 
     1730newSVhek||5.009003| 
    14171731newSViv||| 
    14181732newSVnv||| 
    14191733newSVpvf_nocontext|||vn 
    14201734newSVpvf||5.004000|v 
    1421 newSVpvn_share||5.007001| 
    1422 newSVpvn|5.006000||p 
     1735newSVpvn_share|5.007001||p 
     1736newSVpvn|5.004050||p 
     1737newSVpvs_share||5.009003| 
     1738newSVpvs|5.009003||p 
    14231739newSVpv||| 
    14241740newSVrv||| 
     
    14261742newSVuv|5.006000||p 
    14271743newSV||| 
     1744newTOKEN||| 
    14281745newUNOP||| 
    1429 newWHILEOP||5.004040| 
     1746newWHENOP||5.009003| 
     1747newWHILEOP||5.009003| 
     1748newXS_flags||5.009004| 
    14301749newXSproto||5.006000| 
    14311750newXS||5.006000| 
     
    14381757new_stackinfo||5.005000| 
    14391758new_version||5.009000| 
    1440 new_xiv||| 
    1441 new_xnv||| 
    1442 new_xpvav||| 
    1443 new_xpvbm||| 
    1444 new_xpvcv||| 
    1445 new_xpvhv||| 
    1446 new_xpviv||| 
    1447 new_xpvlv||| 
    1448 new_xpvmg||| 
    1449 new_xpvnv||| 
    1450 new_xpv||| 
    1451 new_xrv||| 
     1759new_warnings_bitfield||| 
    14521760next_symbol||| 
    14531761nextargv||| 
     
    14611769nuke_stacks||| 
    14621770num_overflow|||n 
     1771offer_nice_chunk||| 
    14631772oopsAV||| 
    14641773oopsCV||| 
     
    14681777op_dump||5.006000| 
    14691778op_free||| 
     1779op_getmad_weak||| 
     1780op_getmad||| 
    14701781op_null||5.007002| 
     1782op_refcnt_dec||| 
     1783op_refcnt_inc||| 
     1784op_refcnt_lock||5.009002| 
     1785op_refcnt_unlock||5.009002| 
     1786op_xmldump||| 
    14711787open_script||| 
    14721788pMY_CXT_|5.007003||p 
     
    14741790pTHX_|5.006000||p 
    14751791pTHX|5.006000||p 
     1792packWARN|5.007003||p 
    14761793pack_cat||5.007003| 
    14771794pack_rec||| 
     
    14831800pad_block_start||| 
    14841801pad_check_dup||| 
     1802pad_compname_type||| 
    14851803pad_findlex||| 
    14861804pad_findmy||| 
     
    14891807pad_leavemy||| 
    14901808pad_new||| 
     1809pad_peg|||n 
    14911810pad_push||| 
    14921811pad_reset||| 
    14931812pad_setsv||| 
    1494 pad_sv||| 
     1813pad_sv||5.009005| 
    14951814pad_swipe||| 
    14961815pad_tidy||| 
     
    14981817parse_body||| 
    14991818parse_unicode_opts||| 
    1500 path_is_absolute||| 
     1819parser_dup||| 
     1820parser_free||| 
     1821path_is_absolute|||n 
    15011822peep||| 
    1502 pending_ident||| 
     1823pending_Slabs_to_ro||| 
    15031824perl_alloc_using|||n 
    15041825perl_alloc|||n 
     
    15111832perl_run|||n 
    15121833pidgone||| 
     1834pm_description||| 
    15131835pmflag||| 
    15141836pmop_dump||5.006000| 
     1837pmop_xmldump||| 
    15151838pmruntime||| 
    15161839pmtrans||| 
    15171840pop_scope||| 
    1518 pregcomp||| 
     1841pregcomp||5.009005| 
    15191842pregexec||| 
    15201843pregfree||| 
    15211844prepend_elem||| 
     1845prepend_madprops||| 
     1846printbuf||| 
    15221847printf_nocontext|||vn 
    1523 ptr_table_clear||| 
    1524 ptr_table_fetch||| 
    1525 ptr_table_free||| 
    1526 ptr_table_new||| 
    1527 ptr_table_split||| 
    1528 ptr_table_store||| 
     1848process_special_blocks||| 
     1849ptr_table_clear||5.009005| 
     1850ptr_table_fetch||5.009005| 
     1851ptr_table_find|||n 
     1852ptr_table_free||5.009005| 
     1853ptr_table_new||5.009005| 
     1854ptr_table_split||5.009005| 
     1855ptr_table_store||5.009005| 
    15291856push_scope||| 
    15301857put_byte||| 
    15311858pv_display||5.006000| 
     1859pv_escape||5.009004| 
     1860pv_pretty||5.009004| 
    15321861pv_uni_display||5.007003| 
    15331862qerror||| 
     1863qsortsvu||| 
     1864re_compile||5.009005| 
    15341865re_croak2||| 
    15351866re_dup||| 
    1536 re_intuit_start||5.006000| 
     1867re_intuit_start||5.009005| 
    15371868re_intuit_string||5.006000| 
     1869readpipe_override||| 
    15381870realloc||5.007002|n 
    15391871reentrant_free||| 
     
    15411873reentrant_retry|||vn 
    15421874reentrant_size||| 
     1875ref_array_or_hash||| 
     1876refcounted_he_chain_2hv||| 
     1877refcounted_he_fetch||| 
     1878refcounted_he_free||| 
     1879refcounted_he_new||| 
     1880refcounted_he_value||| 
    15431881refkids||| 
    15441882refto||| 
    1545 ref||| 
     1883ref||5.009003| 
     1884reg_check_named_buff_matched||| 
     1885reg_named_buff_all||5.009005| 
     1886reg_named_buff_exists||5.009005| 
     1887reg_named_buff_fetch||5.009005| 
     1888reg_named_buff_firstkey||5.009005| 
     1889reg_named_buff_iter||| 
     1890reg_named_buff_nextkey||5.009005| 
     1891reg_named_buff_scalar||5.009005| 
     1892reg_named_buff||| 
     1893reg_namedseq||| 
    15461894reg_node||| 
     1895reg_numbered_buff_fetch||| 
     1896reg_numbered_buff_length||| 
     1897reg_numbered_buff_store||| 
     1898reg_qr_package||| 
     1899reg_recode||| 
     1900reg_scan_name||| 
     1901reg_skipcomment||| 
     1902reg_stringify||5.009005| 
     1903reg_temp_copy||| 
    15471904reganode||| 
    15481905regatom||| 
    15491906regbranch||| 
    1550 regclass_swash||5.007003| 
     1907regclass_swash||5.009004| 
    15511908regclass||| 
    1552 regcp_set_to||| 
    15531909regcppop||| 
    15541910regcppush||| 
    1555 regcurly||| 
     1911regcurly|||n 
     1912regdump_extflags||| 
    15561913regdump||5.005000| 
     1914regdupe_internal||| 
    15571915regexec_flags||5.005000| 
    1558 reghop3||| 
    1559 reghopmaybe3||| 
    1560 reghopmaybe||| 
    1561 reghop||| 
     1916regfree_internal||5.009005| 
     1917reghop3|||n 
     1918reghop4|||n 
     1919reghopmaybe3|||n 
    15621920reginclass||| 
    15631921reginitcolors||5.006000| 
     
    15651923regmatch||| 
    15661924regnext||5.005000| 
    1567 regoptail||| 
    15681925regpiece||| 
    15691926regpposixcc||| 
    15701927regprop||| 
    1571 regrepeat_hard||| 
    15721928regrepeat||| 
     1929regtail_study||| 
    15731930regtail||| 
    15741931regtry||| 
    15751932reguni||| 
    1576 regwhite||| 
     1933regwhite|||n 
    15771934reg||| 
    15781935repeatcpy||| 
    15791936report_evil_fh||| 
    15801937report_uninit||| 
    1581 require_errno||| 
    15821938require_pv||5.006000| 
     1939require_tie_mod||| 
     1940restore_magic||| 
    15831941rninstr||| 
    15841942rsignal_restore||| 
     
    15871945rsignal||5.004000| 
    15881946run_body||| 
     1947run_user_filter||| 
    15891948runops_debug||5.005000| 
    15901949runops_standard||5.005000| 
     1950rvpv_dup||| 
    15911951rxres_free||| 
    15921952rxres_restore||| 
     
    16161976save_gp||5.004000| 
    16171977save_hash||| 
    1618 save_hek_flags||| 
     1978save_hek_flags|||n 
    16191979save_helem||5.004050| 
    16201980save_hints||5.005000| 
     
    16391999save_sptr||| 
    16402000save_svref||| 
    1641 save_threadsv||5.005000| 
    16422001save_vptr||5.006000| 
    16432002savepvn||| 
     2003savepvs||5.009003| 
    16442004savepv||| 
     2005savesharedpvn||5.009005| 
    16452006savesharedpv||5.007003| 
    16462007savestack_grow_cnt||5.008001| 
    16472008savestack_grow||| 
     2009savesvpv||5.009002| 
    16482010sawparens||| 
    1649 scalar_mod_type||| 
     2011scalar_mod_type|||n 
    16502012scalarboolean||| 
    16512013scalarkids||| 
     
    16682030scan_trans||| 
    16692031scan_version||5.009001| 
    1670 scan_vstring||5.008001| 
     2032scan_vstring||5.009005| 
    16712033scan_word||| 
    16722034scope||| 
    16732035screaminstr||5.005000| 
    1674 seed||| 
     2036seed||5.008001| 
     2037sequence_num||| 
     2038sequence_tail||| 
     2039sequence||| 
    16752040set_context||5.006000|n 
    16762041set_csh||| 
     
    16812046setenv_getix||| 
    16822047share_hek_flags||| 
    1683 share_hek||| 
     2048share_hek||5.004000| 
    16842049si_dup||| 
    16852050sighandler|||n 
    16862051simplify_sort||| 
     2052skipspace0||| 
     2053skipspace1||| 
     2054skipspace2||| 
    16872055skipspace||| 
     2056softref2xv||| 
     2057sortcv_stacked||| 
     2058sortcv_xsub||| 
     2059sortcv||| 
     2060sortsv_flags||5.009003| 
    16882061sortsv||5.007003| 
     2062space_join_names_mortal||| 
    16892063ss_dup||| 
    16902064stack_grow||| 
     2065start_force||| 
    16912066start_glob||| 
    16922067start_subparse||5.004000| 
     2068stashpv_hvname_match||5.009005| 
    16932069stdize_locale||| 
    16942070strEQ||| 
     
    16992075strNE||| 
    17002076str_to_version||5.006000| 
     2077strip_return||| 
    17012078strnEQ||| 
    17022079strnNE||| 
     
    17092086sv_2cv||| 
    17102087sv_2io||| 
     2088sv_2iuv_common||| 
    17112089sv_2iuv_non_preserve||| 
    17122090sv_2iv_flags||5.009001| 
     
    17142092sv_2mortal||| 
    17152093sv_2nv||| 
    1716 sv_2pv_flags||5.007002| 
     2094sv_2pv_flags|5.007002||p 
    17172095sv_2pv_nolen|5.006000||p 
    1718 sv_2pvbyte_nolen||| 
     2096sv_2pvbyte_nolen|5.006000||p 
    17192097sv_2pvbyte|5.006000||p 
    17202098sv_2pvutf8_nolen||5.006000| 
     
    17282106sv_bless||| 
    17292107sv_cat_decode||5.008001| 
    1730 sv_catpv_mg|5.006000||p 
     2108sv_catpv_mg|5.004050||p 
    17312109sv_catpvf_mg_nocontext|||pvn 
    17322110sv_catpvf_mg|5.006000|5.004000|pv 
     
    17342112sv_catpvf||5.004000|v 
    17352113sv_catpvn_flags||5.007002| 
    1736 sv_catpvn_mg|5.006000||p 
     2114sv_catpvn_mg|5.004050||p 
    17372115sv_catpvn_nomg|5.007002||p 
    17382116sv_catpvn||| 
     2117sv_catpvs|5.009003||p 
    17392118sv_catpv||| 
    17402119sv_catsv_flags||5.007002| 
    1741 sv_catsv_mg|5.006000||p 
     2120sv_catsv_mg|5.004050||p 
    17422121sv_catsv_nomg|5.007002||p 
    17432122sv_catsv||| 
     2123sv_catxmlpvn||| 
     2124sv_catxmlsv||| 
    17442125sv_chop||| 
    17452126sv_clean_all||| 
     
    17542135sv_del_backref||| 
    17552136sv_derived_from||5.004000| 
     2137sv_does||5.009004| 
    17562138sv_dump||| 
    17572139sv_dup||| 
    17582140sv_eq||| 
     2141sv_exp_grow||| 
    17592142sv_force_normal_flags||5.007001| 
    17602143sv_force_normal||5.006000| 
     
    17642147sv_gets||5.004000| 
    17652148sv_grow||| 
     2149sv_i_ncmp||| 
    17662150sv_inc||| 
    17672151sv_insert||| 
     
    17692153sv_isobject||| 
    17702154sv_iv||5.005000| 
     2155sv_kill_backrefs||| 
    17712156sv_len_utf8||5.006000| 
    17722157sv_len||| 
     2158sv_magic_portable|5.009005|5.004000|p 
    17732159sv_magicext||5.007003| 
    17742160sv_magic||| 
    17752161sv_mortalcopy||| 
     2162sv_ncmp||| 
    17762163sv_newmortal||| 
    17772164sv_newref||| 
    17782165sv_nolocking||5.007003| 
    17792166sv_nosharing||5.007003| 
    1780 sv_nounlocking||5.007003| 
     2167sv_nounlocking||| 
    17812168sv_nv||5.005000| 
    17822169sv_peek||5.005000| 
     2170sv_pos_b2u_midway||| 
    17832171sv_pos_b2u||5.006000| 
     2172sv_pos_u2b_cached||| 
     2173sv_pos_u2b_forwards|||n 
     2174sv_pos_u2b_midway|||n 
    17842175sv_pos_u2b||5.006000| 
    17852176sv_pvbyten_force||5.006000| 
    17862177sv_pvbyten||5.006000| 
    17872178sv_pvbyte||5.006000| 
    1788 sv_pvn_force_flags||5.007002| 
    1789 sv_pvn_force|||p 
     2179sv_pvn_force_flags|5.007002||p 
     2180sv_pvn_force||| 
    17902181sv_pvn_nomg|5.007003||p 
    1791 sv_pvn|5.006000||p 
     2182sv_pvn||| 
    17922183sv_pvutf8n_force||5.006000| 
    17932184sv_pvutf8n||5.006000| 
     
    17972188sv_reftype||| 
    17982189sv_release_COW||| 
    1799 sv_release_IVX||| 
    18002190sv_replace||| 
    18012191sv_report_used||| 
    18022192sv_reset||| 
    18032193sv_rvweaken||5.006000| 
    1804 sv_setiv_mg|5.006000||p 
     2194sv_setiv_mg|5.004050||p 
    18052195sv_setiv||| 
    18062196sv_setnv_mg|5.006000||p 
    18072197sv_setnv||| 
    1808 sv_setpv_mg|5.006000||p 
     2198sv_setpv_mg|5.004050||p 
    18092199sv_setpvf_mg_nocontext|||pvn 
    18102200sv_setpvf_mg|5.006000|5.004000|pv 
     
    18132203sv_setpviv_mg||5.008001| 
    18142204sv_setpviv||5.008001| 
    1815 sv_setpvn_mg|5.006000||p 
     2205sv_setpvn_mg|5.004050||p 
    18162206sv_setpvn||| 
     2207sv_setpvs|5.009004||p 
    18172208sv_setpv||| 
    18182209sv_setref_iv||| 
     
    18232214sv_setsv_cow||| 
    18242215sv_setsv_flags||5.007002| 
    1825 sv_setsv_mg|5.006000||p 
     2216sv_setsv_mg|5.004050||p 
    18262217sv_setsv_nomg|5.007002||p 
    18272218sv_setsv||| 
    1828 sv_setuv_mg|5.006000||p 
    1829 sv_setuv|5.006000||p 
     2219sv_setuv_mg|5.004050||p 
     2220sv_setuv|5.004000||p 
    18302221sv_tainted||5.004000| 
    18312222sv_taint||5.004000| 
     
    18382229sv_untaint||5.004000| 
    18392230sv_upgrade||| 
    1840 sv_usepvn_mg|5.006000||p 
     2231sv_usepvn_flags||5.009004| 
     2232sv_usepvn_mg|5.004050||p 
    18412233sv_usepvn||| 
    18422234sv_utf8_decode||5.006000| 
     
    18452237sv_utf8_upgrade_flags||5.007002| 
    18462238sv_utf8_upgrade||5.007001| 
    1847 sv_uv|5.006000||p 
     2239sv_uv|5.005000||p 
    18482240sv_vcatpvf_mg|5.006000|5.004000|p 
    18492241sv_vcatpvfn||5.004000| 
     
    18522244sv_vsetpvfn||5.004000| 
    18532245sv_vsetpvf|5.006000|5.004000|p 
     2246sv_xmlpeek||| 
    18542247svtype||| 
    18552248swallow_bom||| 
     2249swap_match_buff||| 
    18562250swash_fetch||5.007002| 
     2251swash_get||| 
    18572252swash_init||5.006000| 
    18582253sys_intern_clear||| 
     
    18782273to_utf8_title||5.007003| 
    18792274to_utf8_upper||5.007003| 
     2275token_free||| 
     2276token_getmad||| 
     2277tokenize_use||| 
    18802278tokeq||| 
    18812279tokereport||| 
    18822280too_few_arguments||| 
    18832281too_many_arguments||| 
     2282uiv_2buf|||n 
    18842283unlnk||| 
    18852284unpack_rec||| 
     
    18892288unshare_hek||| 
    18902289unsharepvn||5.004000| 
    1891 upg_version||5.009000| 
     2290unwind_handler_stack||| 
     2291update_debugger_info||| 
     2292upg_version||5.009005| 
    18922293usage||| 
    1893 utf16_textfilter||| 
    18942294utf16_to_utf8_reversed||5.006001| 
    18952295utf16_to_utf8||5.006001| 
    1896 utf16rev_textfilter||| 
    18972296utf8_distance||5.006000| 
    18982297utf8_hop||5.006000| 
    18992298utf8_length||5.007001| 
    1900 utf8_mg_pos_init||| 
    1901 utf8_mg_pos||| 
     2299utf8_mg_pos_cache_update||| 
    19022300utf8_to_bytes||5.006001| 
    19032301utf8_to_uvchr||5.007001| 
    19042302utf8_to_uvuni||5.007001| 
    1905 utf8n_to_uvchr||5.007001| 
     2303utf8n_to_uvchr||| 
    19062304utf8n_to_uvuni||5.007001| 
    19072305utilize||| 
    19082306uvchr_to_utf8_flags||5.007003| 
    1909 uvchr_to_utf8||5.007001| 
     2307uvchr_to_utf8||| 
    19102308uvuni_to_utf8_flags||5.007003| 
    19112309uvuni_to_utf8||5.007001| 
    19122310validate_suid||| 
    1913 vcall_body||| 
    1914 vcall_list_body||| 
     2311varname||| 
    19152312vcmp||5.009000| 
    19162313vcroak||5.006000| 
    19172314vdeb||5.007003| 
    1918 vdefault_protect||| 
     2315vdie_common||| 
     2316vdie_croak_common||| 
    19192317vdie||| 
    1920 vdocatch_body||| 
    19212318vform||5.006000| 
    19222319visit||| 
    19232320vivify_defelem||| 
    19242321vivify_ref||| 
    1925 vload_module||5.006000| 
     2322vload_module|5.006000||p 
    19262323vmess||5.006000| 
    19272324vnewSVpvf|5.006000|5.004000|p 
    19282325vnormal||5.009002| 
    19292326vnumify||5.009000| 
    1930 vparse_body||| 
    1931 vrun_body||| 
    19322327vstringify||5.009000| 
     2328vverify||5.009003| 
    19332329vwarner||5.006000| 
    19342330vwarn||5.006000| 
     
    19362332warn_nocontext|||vn 
    19372333warner_nocontext|||vn 
    1938 warner||5.006000|v 
     2334warner|5.006000|5.004000|pv 
    19392335warn|||v 
    19402336watch||| 
    19412337whichsig||| 
     2338write_no_mem||| 
    19422339write_to_stderr||| 
     2340xmldump_all||| 
     2341xmldump_attr||| 
     2342xmldump_eval||| 
     2343xmldump_form||| 
     2344xmldump_indent|||v 
     2345xmldump_packsubs||| 
     2346xmldump_sub||| 
     2347xmldump_vindent||| 
    19432348yyerror||| 
    19442349yylex||| 
     
    19582363# Scan for possible replacement candidates 
    19592364 
    1960 my(%replace, %need, %hints, %depends); 
     2365my(%replace, %need, %hints, %warnings, %depends); 
    19612366my $replace = 0; 
    1962 my $hint = ''; 
     2367my($hint, $define, $function); 
     2368 
     2369sub find_api 
     2370{ 
     2371  my $code = shift; 
     2372  $code =~ s{ 
     2373    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) 
     2374  | "[^"\\]*(?:\\.[^"\\]*)*" 
     2375  | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; 
     2376  grep { exists $API{$_} } $code =~ /(\w+)/mg; 
     2377} 
    19632378 
    19642379while (<DATA>) { 
    19652380  if ($hint) { 
     2381    my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; 
    19662382    if (m{^\s*\*\s(.*?)\s*$}) { 
    1967       $hints{$hint} ||= '';  # suppress warning with older perls 
    1968       $hints{$hint} .= "$1\n"; 
     2383      for (@{$hint->[1]}) { 
     2384        $h->{$_} ||= '';  # suppress warning with older perls 
     2385        $h->{$_} .= "$1\n"; 
     2386      } 
     2387    } 
     2388    else { undef $hint } 
     2389  } 
     2390 
     2391  $hint = [$1, [split /,?\s+/, $2]] 
     2392      if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; 
     2393 
     2394  if ($define) { 
     2395    if ($define->[1] =~ /\\$/) { 
     2396      $define->[1] .= $_; 
    19692397    } 
    19702398    else { 
    1971       $hint = ''; 
     2399      if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { 
     2400        my @n = find_api($define->[1]); 
     2401        push @{$depends{$define->[0]}}, @n if @n 
     2402      } 
     2403      undef $define; 
    19722404    } 
    19732405  } 
    1974   $hint = $1 if m{^\s*$rccs\sHint:\s+(\w+)\s*$}; 
     2406 
     2407  $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; 
     2408 
     2409  if ($function) { 
     2410    if (/^}/) { 
     2411      if (exists $API{$function->[0]}) { 
     2412        my @n = find_api($function->[1]); 
     2413        push @{$depends{$function->[0]}}, @n if @n 
     2414      } 
     2415      undef $define; 
     2416    } 
     2417    else { 
     2418      $function->[1] .= $_; 
     2419    } 
     2420  } 
     2421 
     2422  $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; 
    19752423 
    19762424  $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; 
     
    19842432 
    19852433  $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; 
     2434} 
     2435 
     2436for (values %depends) { 
     2437  my %s; 
     2438  $_ = [sort grep !$s{$_}++, @$_]; 
     2439} 
     2440 
     2441if (exists $opt{'api-info'}) { 
     2442  my $f; 
     2443  my $count = 0; 
     2444  my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; 
     2445  for $f (sort { lc $a cmp lc $b } keys %API) { 
     2446    next unless $f =~ /$match/; 
     2447    print "\n=== $f ===\n\n"; 
     2448    my $info = 0; 
     2449    if ($API{$f}{base} || $API{$f}{todo}) { 
     2450      my $base = format_version($API{$f}{base} || $API{$f}{todo}); 
     2451      print "Supported at least starting from perl-$base.\n"; 
     2452      $info++; 
     2453    } 
     2454    if ($API{$f}{provided}) { 
     2455      my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; 
     2456      print "Support by $ppport provided back to perl-$todo.\n"; 
     2457      print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; 
     2458      print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; 
     2459      print "\n$hints{$f}" if exists $hints{$f}; 
     2460      print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; 
     2461      $info++; 
     2462    } 
     2463    print "No portability information available.\n" unless $info; 
     2464    $count++; 
     2465  } 
     2466  $count or print "Found no API matching '$opt{'api-info'}'."; 
     2467  print "\n"; 
     2468  exit 0; 
    19862469} 
    19872470 
     
    19942477    push @flags, 'depend'   if exists $depends{$f}; 
    19952478    push @flags, 'hint'     if exists $hints{$f}; 
     2479    push @flags, 'warning'  if exists $warnings{$f}; 
    19962480    my $flags = @flags ? '  ['.join(', ', @flags).']' : ''; 
    19972481    print "$f$flags\n"; 
     
    20002484} 
    20012485 
     2486my @files; 
     2487my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); 
     2488my $srcext = join '|', map { quotemeta $_ } @srcext; 
     2489 
     2490if (@ARGV) { 
     2491  my %seen; 
     2492  for (@ARGV) { 
     2493    if (-e) { 
     2494      if (-f) { 
     2495        push @files, $_ unless $seen{$_}++; 
     2496      } 
     2497      else { warn "'$_' is not a file.\n" } 
     2498    } 
     2499    else { 
     2500      my @new = grep { -f } glob $_ 
     2501          or warn "'$_' does not exist.\n"; 
     2502      push @files, grep { !$seen{$_}++ } @new; 
     2503    } 
     2504  } 
     2505} 
     2506else { 
     2507  eval { 
     2508    require File::Find; 
     2509    File::Find::find(sub { 
     2510      $File::Find::name =~ /($srcext)$/i 
     2511          and push @files, $File::Find::name; 
     2512    }, '.'); 
     2513  }; 
     2514  if ($@) { 
     2515    @files = map { glob "*$_" } @srcext; 
     2516  } 
     2517} 
     2518 
     2519if (!@ARGV || $opt{filter}) { 
     2520  my(@in, @out); 
     2521  my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; 
     2522  for (@files) { 
     2523    my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; 
     2524    push @{ $out ? \@out : \@in }, $_; 
     2525  } 
     2526  if (@ARGV && @out) { 
     2527    warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); 
     2528  } 
     2529  @files = @in; 
     2530} 
     2531 
     2532die "No input files given!\n" unless @files; 
     2533 
    20022534my(%files, %global, %revreplace); 
    20032535%revreplace = reverse %replace; 
     
    20182550  my %file = (orig => $c, changes => 0); 
    20192551 
    2020   # temporarily remove C comments from the code 
     2552  # Temporarily remove C/XS comments and strings from the code 
    20212553  my @ccom; 
     2554 
    20222555  $c =~ s{ 
    2023     ( 
    2024         [^"'/]+ 
    2025       | 
    2026         (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+ 
    2027       | 
    2028         (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+ 
    2029     ) 
    2030   | 
    2031     (/ (?: 
    2032         \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / 
    2033         | 
    2034         /[^\r\n]* 
    2035       )) 
    2036   }{ 
    2037     defined $2 and push @ccom, $2; 
    2038     defined $1 ? $1 : "$ccs$#ccom$cce"; 
    2039   }egsx; 
     2556    ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* 
     2557    | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) 
     2558  | ( ^$HS*\#[^\r\n]* 
     2559    | "[^"\\]*(?:\\.[^"\\]*)*" 
     2560    | '[^'\\]*(?:\\.[^'\\]*)*' 
     2561    | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) 
     2562  }{ defined $2 and push @ccom, $2; 
     2563     defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; 
    20402564 
    20412565  $file{ccom} = \@ccom; 
    20422566  $file{code} = $c; 
    2043   $file{has_inc_ppport} = ($c =~ /#.*include.*\Q$ppport\E/); 
     2567  $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; 
    20442568 
    20452569  my $func; 
     
    20522576      $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; 
    20532577      if (exists $API{$func}{provided}) { 
     2578        $file{uses_provided}{$func}++; 
    20542579        if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { 
    20552580          $file{uses}{$func}++; 
     
    20622587          } 
    20632588          for ($func, @deps) { 
    2064             if (exists $need{$_}) { 
    2065               $file{needs}{$_} = 'static'; 
    2066             } 
     2589            $file{needs}{$_} = 'static' if exists $need{$_}; 
    20672590          } 
    20682591        } 
     
    20802603      $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; 
    20812604    } 
    2082     else { 
    2083       warning("Possibly wrong #define $1 in $filename"); 
    2084     } 
     2605    else { warning("Possibly wrong #define $1 in $filename") } 
    20852606  } 
    20862607 
     
    21192640  my $func; 
    21202641  my $c = $file{code}; 
     2642  my $warnings = 0; 
    21212643 
    21222644  for $func (sort keys %{$file{uses_Perl}}) { 
    21232645    if ($API{$func}{varargs}) { 
    2124       my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 
    2125                             { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 
    2126       if ($changes) { 
    2127         warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 
    2128         $file{changes} += $changes; 
     2646      unless ($API{$func}{nothxarg}) { 
     2647        my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 
     2648                              { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 
     2649        if ($changes) { 
     2650          warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 
     2651          $file{changes} += $changes; 
     2652        } 
    21292653      } 
    21302654    } 
     
    21412665  } 
    21422666 
    2143   for $func (sort keys %{$file{uses}}) { 
    2144     next unless $file{uses}{$func};   # if it's only a dependency 
    2145     if (exists $file{uses_deps}{$func}) { 
    2146       diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); 
     2667  for $func (sort keys %{$file{uses_provided}}) { 
     2668    if ($file{uses}{$func}) { 
     2669      if (exists $file{uses_deps}{$func}) { 
     2670        diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); 
     2671      } 
     2672      else { 
     2673        diag("Uses $func"); 
     2674      } 
    21472675    } 
    2148     elsif (exists $replace{$func}) { 
    2149       warning("Uses $func instead of $replace{$func}"); 
    2150       $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); 
     2676    $warnings += hint($func); 
     2677  } 
     2678 
     2679  unless ($opt{quiet}) { 
     2680    for $func (sort keys %{$file{uses_todo}}) { 
     2681      print "*** WARNING: Uses $func, which may not be portable below perl ", 
     2682            format_version($API{$func}{todo}), ", even with '$ppport'\n"; 
     2683      $warnings++; 
    21512684    } 
    2152     else { 
    2153       diag("Uses $func"); 
    2154     } 
    2155     hint($func); 
    2156   } 
    2157  
    2158   for $func (sort keys %{$file{uses_todo}}) { 
    2159     warning("Uses $func, which may not be portable below perl ", 
    2160             format_version($API{$func}{todo})); 
    21612685  } 
    21622686 
     
    22562780    warning("Uses $cppc C++ style comment$s, which is not portable"); 
    22572781  } 
     2782 
     2783  my $s = $warnings != 1 ? 's' : ''; 
     2784  my $warn = $warnings ? " ($warnings warning$s)" : ''; 
     2785  info("Analysis completed$warn"); 
    22582786 
    22592787  if ($file{changes}) { 
     
    23112839 
    23122840 
     2841sub try_use { eval "use @_;"; return $@ eq '' } 
     2842 
    23132843sub mydiff 
    23142844{ 
     
    23212851  } 
    23222852 
    2323   if (!defined $diff and can_use('Text::Diff')) { 
     2853  if (!defined $diff and try_use('Text::Diff')) { 
    23242854    $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); 
    23252855    $diff = <<HEADER . $diff; 
     
    23432873 
    23442874  print F $diff; 
    2345  
    23462875} 
    23472876 
     
    23802909} 
    23812910 
    2382 sub can_use 
    2383 { 
    2384   eval "use @_;"; 
    2385   return $@ eq ''; 
    2386 } 
    2387  
    23882911sub rec_depend 
    23892912{ 
    2390   my $func = shift; 
    2391   my %seen; 
     2913  my($func, $seen) = @_; 
    23922914  return () unless exists $depends{$func}; 
    2393   grep !$seen{$_}++, map { ($_, rec_depend($_)) } @{$depends{$func}}; 
     2915  $seen = {%{$seen||{}}}; 
     2916  return () if $seen->{$func}++; 
     2917  my %s; 
     2918  grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; 
    23942919} 
    23952920 
     
    24712996 
    24722997my %given_hints; 
     2998my %given_warnings; 
    24732999sub hint 
    24743000{ 
    24753001  $opt{quiet} and return; 
    2476   $opt{hints} or return; 
    24773002  my $func = shift; 
    2478   exists $hints{$func} or return; 
    2479   $given_hints{$func}++ and return; 
    2480   my $hint = $hints{$func}; 
    2481   $hint =~ s/^/   /mg; 
    2482   print "   --- hint for $func ---\n", $hint; 
     3003  my $rv = 0; 
     3004  if (exists $warnings{$func} && !$given_warnings{$func}++) { 
     3005    my $warn = $warnings{$func}; 
     3006    $warn =~ s!^!*** !mg; 
     3007    print "*** WARNING: $func\n", $warn; 
     3008    $rv++; 
     3009  } 
     3010  if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { 
     3011    my $hint = $hints{$func}; 
     3012    $hint =~ s/^/   /mg; 
     3013    print "   --- hint for $func ---\n", $hint; 
     3014  } 
     3015  $rv; 
    24833016} 
    24843017 
     
    24993032 
    25003033  exit 2; 
     3034} 
     3035 
     3036sub strip 
     3037{ 
     3038  my $self = do { local(@ARGV,$/)=($0); <> }; 
     3039  my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; 
     3040  $copy =~ s/^(?=\S+)/    /gms; 
     3041  $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; 
     3042  $self =~ s/^SKIP.*(?=^__DATA__)/SKIP 
     3043if (\@ARGV && \$ARGV[0] eq '--unstrip') { 
     3044  eval { require Devel::PPPort }; 
     3045  \$@ and die "Cannot require Devel::PPPort, please install.\\n"; 
     3046  if (\$Devel::PPPort::VERSION < $VERSION) { 
     3047    die "$0 was originally generated with Devel::PPPort $VERSION.\\n" 
     3048      . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" 
     3049      . "Please install a newer version, or --unstrip will not work.\\n"; 
     3050  } 
     3051  Devel::PPPort::WriteFile(\$0); 
     3052  exit 0; 
     3053} 
     3054print <<END; 
     3055 
     3056Sorry, but this is a stripped version of \$0. 
     3057 
     3058To be able to use its original script and doc functionality, 
     3059please try to regenerate this file using: 
     3060 
     3061  \$^X \$0 --unstrip 
     3062 
     3063END 
     3064/ms; 
     3065  my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms; 
     3066  $c =~ s{ 
     3067    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) 
     3068  | ( "[^"\\]*(?:\\.[^"\\]*)*" 
     3069    | '[^'\\]*(?:\\.[^'\\]*)*' ) 
     3070  | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex; 
     3071  $c =~ s!\s+$!!mg; 
     3072  $c =~ s!^$LF!!mg; 
     3073  $c =~ s!^\s*#\s*!#!mg; 
     3074  $c =~ s!^\s+!!mg; 
     3075 
     3076  open OUT, ">$0" or die "cannot strip $0: $!\n"; 
     3077  print OUT "$pl$c\n"; 
     3078 
     3079  exit 0; 
    25013080} 
    25023081 
     
    25323111#endif 
    25333112 
    2534 #define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION) 
    2535  
    2536 /* It is very unlikely that anyone will try to use this with Perl 6  
     3113#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) 
     3114#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION)) 
     3115 
     3116/* It is very unlikely that anyone will try to use this with Perl 6 
    25373117   (or greater), but who knows. 
    25383118 */ 
     
    28783458#  define UVSIZE                         IVSIZE 
    28793459#endif 
    2880  
    28813460#ifndef sv_setuv 
    2882 #  define sv_setuv(sv, uv)                  \ 
    2883    STMT_START {                             \ 
    2884        UV TeMpUv = uv;                      \ 
    2885        if (TeMpUv <= IV_MAX)                \ 
    2886            sv_setiv(sv, TeMpUv);            \ 
    2887        else                                 \ 
    2888            sv_setnv(sv, (double)TeMpUv);    \ 
    2889    } STMT_END 
    2890 #endif 
    2891  
     3461#  define sv_setuv(sv, uv)               \ 
     3462               STMT_START {                         \ 
     3463                 UV TeMpUv = uv;                    \ 
     3464                 if (TeMpUv <= IV_MAX)              \ 
     3465                   sv_setiv(sv, TeMpUv);            \ 
     3466                 else                               \ 
     3467                   sv_setnv(sv, (double)TeMpUv);    \ 
     3468               } STMT_END 
     3469#endif 
    28923470#ifndef newSVuv 
    2893 #  define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) 
     3471#  define newSVuv(uv)                    ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) 
    28943472#endif 
    28953473#ifndef sv_2uv 
     
    29193497#  define sv_uv(sv)                      SvUVx(sv) 
    29203498#endif 
     3499 
     3500#if !defined(SvUOK) && defined(SvIOK_UV) 
     3501#  define SvUOK(sv) SvIOK_UV(sv) 
     3502#endif 
    29213503#ifndef XST_mUV 
    29223504#  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  ) 
     
    29343516#endif 
    29353517 
    2936 #if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)) 
     3518#ifdef HAS_MEMCMP 
     3519#ifndef memNE 
     3520#  define memNE(s1,s2,l)                 (memcmp(s1,s2,l)) 
     3521#endif 
     3522 
     3523#ifndef memEQ 
     3524#  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l)) 
     3525#endif 
     3526 
     3527#else 
     3528#ifndef memNE 
     3529#  define memNE(s1,s2,l)                 (bcmp(s1,s2,l)) 
     3530#endif 
     3531 
     3532#ifndef memEQ 
     3533#  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l)) 
     3534#endif 
     3535 
     3536#endif 
     3537#ifndef MoveD 
     3538#  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 
     3539#endif 
     3540 
     3541#ifndef CopyD 
     3542#  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 
     3543#endif 
     3544 
     3545#ifdef HAS_MEMSET 
     3546#ifndef ZeroD 
     3547#  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t)) 
     3548#endif 
     3549 
     3550#else 
     3551#ifndef ZeroD 
     3552#  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)), d) 
     3553#endif 
     3554 
     3555#endif 
     3556#ifndef PoisonWith 
     3557#  define PoisonWith(d,n,t,b)            (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) 
     3558#endif 
     3559 
     3560#ifndef PoisonNew 
     3561#  define PoisonNew(d,n,t)               PoisonWith(d,n,t,0xAB) 
     3562#endif 
     3563 
     3564#ifndef PoisonFree 
     3565#  define PoisonFree(d,n,t)              PoisonWith(d,n,t,0xEF) 
     3566#endif 
     3567 
     3568#ifndef Poison 
     3569#  define Poison(d,n,t)                  PoisonFree(d,n,t) 
     3570#endif 
     3571#ifndef Newx 
     3572#  define Newx(v,n,t)                    New(0,v,n,t) 
     3573#endif 
     3574 
     3575#ifndef Newxc 
     3576#  define Newxc(v,n,t,c)                 Newc(0,v,n,t,c) 
     3577#endif 
     3578 
     3579#ifndef Newxz 
     3580#  define Newxz(v,n,t)                   Newz(0,v,n,t) 
     3581#endif 
     3582 
     3583#ifndef PERL_UNUSED_DECL 
     3584#  ifdef HASATTRIBUTE 
     3585#    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 
     3586#      define PERL_UNUSED_DECL 
     3587#    else 
     3588#      define PERL_UNUSED_DECL __attribute__((unused)) 
     3589#    endif 
     3590#  else 
     3591#    define PERL_UNUSED_DECL 
     3592#  endif 
     3593#endif 
     3594 
     3595#ifndef PERL_UNUSED_ARG 
     3596#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ 
     3597#    include <note.h> 
     3598#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) 
     3599#  else 
     3600#    define PERL_UNUSED_ARG(x) ((void)x) 
     3601#  endif 
     3602#endif 
     3603 
     3604#ifndef PERL_UNUSED_VAR 
     3605#  define PERL_UNUSED_VAR(x) ((void)x) 
     3606#endif 
     3607 
     3608#ifndef PERL_UNUSED_CONTEXT 
     3609#  ifdef USE_ITHREADS 
     3610#    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) 
     3611#  else 
     3612#    define PERL_UNUSED_CONTEXT 
     3613#  endif 
     3614#endif 
     3615#ifndef NOOP 
     3616#  define NOOP                           /*EMPTY*/(void)0 
     3617#endif 
     3618 
     3619#ifndef dNOOP 
     3620#  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL 
     3621#endif 
     3622 
     3623#ifndef NVTYPE 
     3624#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 
     3625#    define NVTYPE long double 
     3626#  else 
     3627#    define NVTYPE double 
     3628#  endif 
     3629typedef NVTYPE NV; 
     3630#endif 
     3631 
     3632#ifndef INT2PTR 
     3633 
     3634#  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 
     3635#    define PTRV                  UV 
     3636#    define INT2PTR(any,d)        (any)(d) 
     3637#  else 
     3638#    if PTRSIZE == LONGSIZE 
     3639#      define PTRV                unsigned long 
     3640#    else 
     3641#      define PTRV                unsigned 
     3642#    endif 
     3643#    define INT2PTR(any,d)        (any)(PTRV)(d) 
     3644#  endif 
     3645 
     3646#  define NUM2PTR(any,d)  (any)(PTRV)(d) 
     3647#  define PTR2IV(p)       INT2PTR(IV,p) 
     3648#  define PTR2UV(p)       INT2PTR(UV,p) 
     3649#  define PTR2NV(p)       NUM2PTR(NV,p) 
     3650 
     3651#  if PTRSIZE == LONGSIZE 
     3652#    define PTR2ul(p)     (unsigned long)(p) 
     3653#  else 
     3654#    define PTR2ul(p)     INT2PTR(unsigned long,p) 
     3655#  endif 
     3656 
     3657#endif /* !INT2PTR */ 
     3658 
     3659#undef START_EXTERN_C 
     3660#undef END_EXTERN_C 
     3661#undef EXTERN_C 
     3662#ifdef __cplusplus 
     3663#  define START_EXTERN_C extern "C" { 
     3664#  define END_EXTERN_C } 
     3665#  define EXTERN_C extern "C" 
     3666#else 
     3667#  define START_EXTERN_C 
     3668#  define END_EXTERN_C 
     3669#  define EXTERN_C extern 
     3670#endif 
     3671 
     3672#if defined(PERL_GCC_PEDANTIC) 
     3673#  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 
     3674#    define PERL_GCC_BRACE_GROUPS_FORBIDDEN 
     3675#  endif 
     3676#endif 
     3677 
     3678#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 
     3679#  ifndef PERL_USE_GCC_BRACE_GROUPS 
     3680#    define PERL_USE_GCC_BRACE_GROUPS 
     3681#  endif 
     3682#endif 
     3683 
     3684#undef STMT_START 
     3685#undef STMT_END 
     3686#ifdef PERL_USE_GCC_BRACE_GROUPS 
     3687#  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */ 
     3688#  define STMT_END      ) 
     3689#else 
     3690#  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 
     3691#    define STMT_START  if (1) 
     3692#    define STMT_END    else (void)0 
     3693#  else 
     3694#    define STMT_START  do 
     3695#    define STMT_END    while (0) 
     3696#  endif 
     3697#endif 
     3698#ifndef boolSV 
     3699#  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no) 
     3700#endif 
     3701 
     3702/* DEFSV appears first in 5.004_56 */ 
     3703#ifndef DEFSV 
     3704#  define DEFSV                          GvSV(PL_defgv) 
     3705#endif 
     3706 
     3707#ifndef SAVE_DEFSV 
     3708#  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv)) 
     3709#endif 
     3710 
     3711/* Older perls (<=5.003) lack AvFILLp */ 
     3712#ifndef AvFILLp 
     3713#  define AvFILLp                        AvFILL 
     3714#endif 
     3715#ifndef ERRSV 
     3716#  define ERRSV                          get_sv("@",FALSE) 
     3717#endif 
     3718#ifndef newSVpvn 
     3719#  define newSVpvn(data,len)             ((data)                                              \ 
     3720                                    ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 
     3721                                    : newSV(0)) 
     3722#endif 
     3723 
     3724/* Hint: gv_stashpvn 
     3725 * This function's backport doesn't support the length parameter, but 
     3726 * rather ignores it. Portability can only be ensured if the length 
     3727 * parameter is used for speed reasons, but the length can always be 
     3728 * correctly computed from the string argument. 
     3729 */ 
     3730#ifndef gv_stashpvn 
     3731#  define gv_stashpvn(str,len,create)    gv_stashpv(str,create) 
     3732#endif 
     3733 
    29373734/* Replace: 1 */ 
     3735#ifndef get_cv 
     3736#  define get_cv                         perl_get_cv 
     3737#endif 
     3738 
     3739#ifndef get_sv 
     3740#  define get_sv                         perl_get_sv 
     3741#endif 
     3742 
     3743#ifndef get_av 
     3744#  define get_av                         perl_get_av 
     3745#endif 
     3746 
     3747#ifndef get_hv 
     3748#  define get_hv                         perl_get_hv 
     3749#endif 
     3750 
     3751/* Replace: 0 */ 
     3752#ifndef dUNDERBAR 
     3753#  define dUNDERBAR                      dNOOP 
     3754#endif 
     3755 
     3756#ifndef UNDERBAR 
     3757#  define UNDERBAR                       DEFSV 
     3758#endif 
     3759#ifndef dAX 
     3760#  define dAX                            I32 ax = MARK - PL_stack_base + 1 
     3761#endif 
     3762 
     3763#ifndef dITEMS 
     3764#  define dITEMS                         I32 items = SP - MARK 
     3765#endif 
     3766#ifndef dXSTARG 
     3767#  define dXSTARG                        SV * targ = sv_newmortal() 
     3768#endif 
     3769#ifndef dAXMARK 
     3770#  define dAXMARK                        I32 ax = POPMARK; \ 
     3771                               register SV ** const mark = PL_stack_base + ax++ 
     3772#endif 
     3773#ifndef XSprePUSH 
     3774#  define XSprePUSH                      (sp = PL_stack_base + ax - 1) 
     3775#endif 
     3776 
     3777#if (PERL_BCDVERSION < 0x5005000) 
     3778#  undef XSRETURN 
     3779#  define XSRETURN(off)                                   \ 
     3780      STMT_START {                                        \ 
     3781          PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ 
     3782          return;                                         \ 
     3783      } STMT_END 
     3784#endif 
     3785#ifndef PERL_ABS 
     3786#  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x)) 
     3787#endif 
     3788#ifndef dVAR 
     3789#  define dVAR                           dNOOP 
     3790#endif 
     3791#ifndef SVf 
     3792#  define SVf                            "_" 
     3793#endif 
     3794#ifndef UTF8_MAXBYTES 
     3795#  define UTF8_MAXBYTES                  UTF8_MAXLEN 
     3796#endif 
     3797#ifndef PERL_HASH 
     3798#  define PERL_HASH(hash,str,len)        \ 
     3799     STMT_START { \ 
     3800        const char *s_PeRlHaSh = str; \ 
     3801        I32 i_PeRlHaSh = len; \ 
     3802        U32 hash_PeRlHaSh = 0; \ 
     3803        while (i_PeRlHaSh--) \ 
     3804            hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ 
     3805        (hash) = hash_PeRlHaSh; \ 
     3806    } STMT_END 
     3807#endif 
     3808 
     3809#ifndef PERL_SIGNALS_UNSAFE_FLAG 
     3810 
     3811#define PERL_SIGNALS_UNSAFE_FLAG 0x0001 
     3812 
     3813#if (PERL_BCDVERSION < 0x5008000) 
     3814#  define D_PPP_PERL_SIGNALS_INIT   PERL_SIGNALS_UNSAFE_FLAG 
     3815#else 
     3816#  define D_PPP_PERL_SIGNALS_INIT   0 
     3817#endif 
     3818 
     3819#if defined(NEED_PL_signals) 
     3820static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 
     3821#elif defined(NEED_PL_signals_GLOBAL) 
     3822U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 
     3823#else 
     3824extern U32 DPPP_(my_PL_signals); 
     3825#endif 
     3826#define PL_signals DPPP_(my_PL_signals) 
     3827 
     3828#endif 
     3829 
     3830/* Hint: PL_ppaddr 
     3831 * Calling an op via PL_ppaddr requires passing a context argument 
     3832 * for threaded builds. Since the context argument is different for 
     3833 * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will 
     3834 * automatically be defined as the correct argument. 
     3835 */ 
     3836 
     3837#if (PERL_BCDVERSION <= 0x5005005) 
     3838/* Replace: 1 */ 
     3839#  define PL_ppaddr                 ppaddr 
     3840#  define PL_no_modify              no_modify 
     3841/* Replace: 0 */ 
     3842#endif 
     3843 
     3844#if (PERL_BCDVERSION <= 0x5004005) 
     3845/* Replace: 1 */ 
     3846#  define PL_DBsignal               DBsignal 
    29383847#  define PL_DBsingle               DBsingle 
    29393848#  define PL_DBsub                  DBsub 
     3849#  define PL_DBtrace                DBtrace 
    29403850#  define PL_Sv                     Sv 
    29413851#  define PL_compiling              compiling 
     
    29493859#  define PL_dowarn                 dowarn 
    29503860#  define PL_errgv                  errgv 
     3861#  define PL_expect                 expect 
    29513862#  define PL_hexdigit               hexdigit 
    29523863#  define PL_hints                  hints 
    2953 #  define PL_na                     na 
    2954 #  define PL_no_modify              no_modify 
     3864#  define PL_laststatval            laststatval 
     3865#  define PL_na                     na 
    29553866#  define PL_perl_destruct_level    perl_destruct_level 
    29563867#  define PL_perldb                 perldb 
    2957 #  define PL_ppaddr                 ppaddr 
    29583868#  define PL_rsfp_filters           rsfp_filters 
    29593869#  define PL_rsfp                   rsfp 
    29603870#  define PL_stack_base             stack_base 
    29613871#  define PL_stack_sp               stack_sp 
     3872#  define PL_statcache              statcache 
    29623873#  define PL_stdingv                stdingv 
    29633874#  define PL_sv_arenaroot           sv_arenaroot 
     
    29703881#endif 
    29713882 
    2972 #ifdef HASATTRIBUTE 
    2973 #  if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 
    2974 #    define PERL_UNUSED_DECL 
    2975 #  else 
    2976 #    define PERL_UNUSED_DECL __attribute__((unused)) 
    2977 #  endif 
    2978 #else 
    2979 #  define PERL_UNUSED_DECL 
    2980 #endif 
    2981 #ifndef NOOP 
    2982 #  define NOOP                           (void)0 
    2983 #endif 
    2984  
    2985 #ifndef dNOOP 
    2986 #  define dNOOP                          extern int Perl___notused PERL_UNUSED_DECL 
    2987 #endif 
    2988  
    2989 #ifndef NVTYPE 
    2990 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 
    2991 #    define NVTYPE long double 
    2992 #  else 
    2993 #    define NVTYPE double 
    2994 #  endif 
    2995 typedef NVTYPE NV; 
    2996 #endif 
    2997  
    2998 #ifndef INT2PTR 
    2999  
    3000 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 
    3001 #    define PTRV                  UV 
    3002 #    define INT2PTR(any,d)        (any)(d) 
    3003 #  else 
    3004 #    if PTRSIZE == LONGSIZE 
    3005 #      define PTRV                unsigned long 
    3006 #    else 
    3007 #      define PTRV                unsigned 
    3008 #    endif 
    3009 #    define INT2PTR(any,d)        (any)(PTRV)(d) 
    3010 #  endif 
    3011  
    3012 #  define NUM2PTR(any,d)  (any)(PTRV)(d) 
    3013 #  define PTR2IV(p)       INT2PTR(IV,p) 
    3014 #  define PTR2UV(p)       INT2PTR(UV,p) 
    3015 #  define PTR2NV(p)       NUM2PTR(NV,p) 
    3016  
    3017 #  if PTRSIZE == LONGSIZE 
    3018 #    define PTR2ul(p)     (unsigned long)(p) 
    3019 #  else 
    3020 #    define PTR2ul(p)     INT2PTR(unsigned long,p)         
    3021 #  endif 
    3022  
    3023 #endif /* !INT2PTR */ 
    3024  
    3025 #undef START_EXTERN_C 
    3026 #undef END_EXTERN_C 
    3027 #undef EXTERN_C 
    3028 #ifdef __cplusplus 
    3029 #  define START_EXTERN_C extern "C" { 
    3030 #  define END_EXTERN_C } 
    3031 #  define EXTERN_C extern "C" 
    3032 #else 
    3033 #  define START_EXTERN_C 
    3034 #  define END_EXTERN_C 
    3035 #  define EXTERN_C extern 
    3036 #endif 
    3037  
    3038 #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3039 #  if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC) 
    3040 #    define PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3041 #  endif 
    3042 #endif 
    3043  
    3044 #undef STMT_START 
    3045 #undef STMT_END 
    3046 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 
    3047 #  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */ 
    3048 #  define STMT_END      ) 
    3049 #else 
    3050 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 
    3051 #    define STMT_START  if (1) 
    3052 #    define STMT_END    else (void)0 
    3053 #  else 
    3054 #    define STMT_START  do 
    3055 #    define STMT_END    while (0) 
    3056 #  endif 
    3057 #endif 
    3058 #ifndef boolSV 
    3059 #  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no) 
    3060 #endif 
    3061  
    3062 /* DEFSV appears first in 5.004_56 */ 
    3063 #ifndef DEFSV 
    3064 #  define DEFSV                          GvSV(PL_defgv) 
    3065 #endif 
    3066  
    3067 #ifndef SAVE_DEFSV 
    3068 #  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv)) 
    3069 #endif 
    3070  
    3071 /* Older perls (<=5.003) lack AvFILLp */ 
    3072 #ifndef AvFILLp 
    3073 #  define AvFILLp                        AvFILL 
    3074 #endif 
    3075 #ifndef ERRSV 
    3076 #  define ERRSV                          get_sv("@",FALSE) 
    3077 #endif 
    3078 #ifndef newSVpvn 
    3079 #  define newSVpvn(data,len)             ((data)                                              \ 
    3080                                     ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 
    3081                                     : newSV(0)) 
    3082 #endif 
    3083  
    3084 /* Hint: gv_stashpvn 
    3085  * This function's backport doesn't support the length parameter, but 
    3086  * rather ignores it. Portability can only be ensured if the length 
    3087  * parameter is used for speed reasons, but the length can always be 
    3088  * correctly computed from the string argument. 
     3883/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters 
     3884 * Do not use this variable. It is internal to the perl parser 
     3885 * and may change or even be removed in the future. Note that 
     3886 * as of perl 5.9.5 you cannot assign to this variable anymore. 
    30893887 */ 
    3090 #ifndef gv_stashpvn 
    3091 #  define gv_stashpvn(str,len,create)    gv_stashpv(str,create) 
    3092 #endif 
    3093  
    3094 /* Replace: 1 */ 
    3095 #ifndef get_cv 
    3096 #  define get_cv                         perl_get_cv 
    3097 #endif 
    3098  
    3099 #ifndef get_sv 
    3100 #  define get_sv                         perl_get_sv 
    3101 #endif 
    3102  
    3103 #ifndef get_av 
    3104 #  define get_av                         perl_get_av 
    3105 #endif 
    3106  
    3107 #ifndef get_hv 
    3108 #  define get_hv                         perl_get_hv 
    3109 #endif 
    3110  
    3111 /* Replace: 0 */ 
    3112  
    3113 #ifdef HAS_MEMCMP 
    3114 #ifndef memNE 
    3115 #  define memNE(s1,s2,l)                 (memcmp(s1,s2,l)) 
    3116 #endif 
    3117  
    3118 #ifndef memEQ 
    3119 #  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l)) 
    3120 #endif 
    3121  
    3122 #else 
    3123 #ifndef memNE 
    3124 #  define memNE(s1,s2,l)                 (bcmp(s1,s2,l)) 
    3125 #endif 
    3126  
    3127 #ifndef memEQ 
    3128 #  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l)) 
    3129 #endif 
    3130  
    3131 #endif 
    3132 #ifndef MoveD 
    3133 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3134 #endif 
    3135  
    3136 #ifndef CopyD 
    3137 #  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3138 #endif 
    3139  
    3140 #ifdef HAS_MEMSET 
    3141 #ifndef ZeroD 
    3142 #  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t)) 
    3143 #endif 
    3144  
    3145 #else 
    3146 #ifndef ZeroD 
    3147 #  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)),d) 
    3148 #endif 
    3149  
    3150 #endif 
    3151 #ifndef Poison 
    3152 #  define Poison(d,n,t)                  (void)memset((char*)(d), 0xAB, (n) * sizeof(t)) 
    3153 #endif 
    3154 #ifndef dUNDERBAR 
    3155 #  define dUNDERBAR                      dNOOP 
    3156 #endif 
    3157  
    3158 #ifndef UNDERBAR 
    3159 #  define UNDERBAR                       DEFSV 
    3160 #endif 
    3161 #ifndef dAX 
    3162 #  define dAX                            I32 ax = MARK - PL_stack_base + 1 
    3163 #endif 
    3164  
    3165 #ifndef dITEMS 
    3166 #  define dITEMS                         I32 items = SP - MARK 
     3888 
     3889/* TODO: cannot assign to these vars; is it worth fixing? */ 
     3890#if (PERL_BCDVERSION >= 0x5009005) 
     3891#  define PL_expect         (PL_parser ? PL_parser->expect : 0) 
     3892#  define PL_copline        (PL_parser ? PL_parser->copline : 0) 
     3893#  define PL_rsfp           (PL_parser ? PL_parser->rsfp : (PerlIO *) 0) 
     3894#  define PL_rsfp_filters   (PL_parser ? PL_parser->rsfp_filters : (AV *) 0) 
    31673895#endif 
    31683896#ifndef dTHR 
     
    31813909 
    31823910#ifndef pTHX_ 
    3183 #  define pTHX_                           
     3911#  define pTHX_ 
    31843912#endif 
    31853913 
    31863914#ifndef aTHX 
    3187 #  define aTHX                            
     3915#  define aTHX 
    31883916#endif 
    31893917 
    31903918#ifndef aTHX_ 
    3191 #  define aTHX_                           
     3919#  define aTHX_ 
     3920#endif 
     3921 
     3922#if (PERL_BCDVERSION < 0x5006000) 
     3923#  ifdef USE_THREADS 
     3924#    define aTHXR  thr 
     3925#    define aTHXR_ thr, 
     3926#  else 
     3927#    define aTHXR 
     3928#    define aTHXR_ 
     3929#  endif 
     3930#  define dTHXR  dTHR 
     3931#else 
     3932#  define aTHXR  aTHX 
     3933#  define aTHXR_ aTHX_ 
     3934#  define dTHXR  dTHX 
    31923935#endif 
    31933936#ifndef dTHXoa 
     
    32523995#  define eval_sv                        perl_eval_sv 
    32533996#endif 
     3997#ifndef PERL_LOADMOD_DENY 
     3998#  define PERL_LOADMOD_DENY              0x1 
     3999#endif 
     4000 
     4001#ifndef PERL_LOADMOD_NOIMPORT 
     4002#  define PERL_LOADMOD_NOIMPORT          0x2 
     4003#endif 
     4004 
     4005#ifndef PERL_LOADMOD_IMPORT_OPS 
     4006#  define PERL_LOADMOD_IMPORT_OPS        0x4 
     4007#endif 
    32544008 
    32554009/* Replace: 0 */ 
    32564010 
    32574011/* Replace perl_eval_pv with eval_pv */ 
    3258 /* eval_pv depends on eval_sv */ 
    32594012 
    32604013#ifndef eval_pv 
     
    32924045 
    32934046    return sv; 
     4047} 
     4048 
     4049#endif 
     4050#endif 
     4051 
     4052#ifndef vload_module 
     4053#if defined(NEED_vload_module) 
     4054static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); 
     4055static 
     4056#else 
     4057extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); 
     4058#endif 
     4059 
     4060#ifdef vload_module 
     4061#  undef vload_module 
     4062#endif 
     4063#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) 
     4064#define Perl_vload_module DPPP_(my_vload_module) 
     4065 
     4066#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) 
     4067 
     4068void 
     4069DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) 
     4070{ 
     4071    dTHR; 
     4072    dVAR; 
     4073    OP *veop, *imop; 
     4074 
     4075    OP * const modname = newSVOP(OP_CONST, 0, name); 
     4076    /* 5.005 has a somewhat hacky force_normal that doesn't croak on 
     4077       SvREADONLY() if PL_compling is true. Current perls take care in 
     4078       ck_require() to correctly turn off SvREADONLY before calling 
     4079       force_normal_flags(). This seems a better fix than fudging PL_compling 
     4080     */ 
     4081    SvREADONLY_off(((SVOP*)modname)->op_sv); 
     4082    modname->op_private |= OPpCONST_BARE; 
     4083    if (ver) { 
     4084        veop = newSVOP(OP_CONST, 0, ver); 
     4085    } 
     4086    else 
     4087        veop = NULL; 
     4088    if (flags & PERL_LOADMOD_NOIMPORT) { 
     4089        imop = sawparens(newNULLLIST()); 
     4090    } 
     4091    else if (flags & PERL_LOADMOD_IMPORT_OPS) { 
     4092        imop = va_arg(*args, OP*); 
     4093    } 
     4094    else { 
     4095        SV *sv; 
     4096        imop = NULL; 
     4097        sv = va_arg(*args, SV*); 
     4098        while (sv) { 
     4099            imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); 
     4100            sv = va_arg(*args, SV*); 
     4101        } 
     4102    } 
     4103    { 
     4104        const line_t ocopline = PL_copline; 
     4105        COP * const ocurcop = PL_curcop; 
     4106        const int oexpect = PL_expect; 
     4107 
     4108#if (PERL_BCDVERSION >= 0x5004000) 
     4109        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), 
     4110                veop, modname, imop); 
     4111#else 
     4112        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), 
     4113                modname, imop); 
     4114#endif 
     4115        PL_expect = oexpect; 
     4116        PL_copline = ocopline;