Changeset f46d2a


Ignore:
Timestamp:
01/19/08 00:38:22 (4 years ago)
Author:
Tomash Brechko <tomash.brechko@…>
Branches:
master, ketama-compat
Children:
0c6861
Parents:
856fc9
git-author:
Tomash Brechko <tomash.brechko@…> (01/18/08 21:52:42)
git-committer:
Tomash Brechko <tomash.brechko@…> (01/19/08 00:38:22)
Message:

Update to the latest version of ppport.h.

Now, it recommends to include ppport.h back :).

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Fast.xs

    rc766ea rf46d2a  
    1111#include "perl.h" 
    1212#include "XSUB.h" 
     13 
     14#include "ppport.h" 
    1315 
    1416#include "src/client.h" 
  • ppport.h

    rde0b9c rf46d2a  
    55---------------------------------------------------------------------- 
    66 
    7     ppport.h -- Perl/Pollution/Portability Version 3.06_01 
    8  
    9     Automatically created by Devel::PPPort running under 
    10     perl 5.008008 on Tue Nov 27 14:33:05 2007. 
     7    ppport.h -- Perl/Pollution/Portability Version 3.13 
     8 
     9    Automatically created by Devel::PPPort running under perl 5.008008. 
    1110 
    1211    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the 
     
    2322=head1 NAME 
    2423 
    25 ppport.h - Perl/Pollution/Portability version 3.06_01 
     24ppport.h - Perl/Pollution/Portability version 3.13 
    2625 
    2726=head1 SYNOPSIS 
     
    3231 
    3332  --help                      show short help 
     33 
     34  --version                   show version 
    3435 
    3536  --patch=file                write one patch file with changes 
     
    4647  --nofilter                  don't filter input files 
    4748 
     49  --strip                     strip all script and doc functionality from 
     50                              ppport.h 
     51 
    4852  --list-provided             list provided API 
    4953  --list-unsupported          list unsupported API 
     
    5357 
    5458This version of F<ppport.h> is designed to support operation with Perl 
    55 installations back to 5.003, and has been tested up to 5.9.3. 
     59installations back to 5.003, and has been tested up to 5.10.0. 
    5660 
    5761=head1 OPTIONS 
     
    6064 
    6165Display a brief usage summary. 
     66 
     67=head2 --version 
     68 
     69Display the version of F<ppport.h>. 
    6270 
    6371=head2 --patch=I<file> 
     
    7179If this option is given, a copy of each file will be saved with 
    7280the given suffix that contains the suggested changes. This does 
    73 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. 
    7485 
    7586If neither C<--patch> or C<--copy> are given, the default is to 
     
    89100version 5.003. You can use this option to reduce the output 
    90101of F<ppport.h> if you intend to be backward compatible only 
    91 up to a certain Perl version. 
     102down to a certain Perl version. 
    92103 
    93104=head2 --cplusplus 
     
    110121 
    111122Don't output any hints. Hints often contain useful portability 
    112 notes. 
     123notes. Warnings will still be displayed. 
    113124 
    114125=head2 --nochanges 
     
    122133like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. 
    123134 
     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 
    124146=head2 --list-provided 
    125147 
    126148Lists the API elements for which compatibility is provided by 
    127149F<ppport.h>. Also lists if it must be explicitly requested, 
    128 if it has dependencies, and if there are hints for it. 
     150if it has dependencies, and if there are hints or warnings for it. 
    129151 
    130152=head2 --list-unsupported 
     
    167189=item * 
    168190 
    169 If you use one of a few functions that were not present in earlier 
    170 versions of Perl, and that can't be provided using a macro, you have 
    171 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 
    172194more C<#define>s in your source code before the inclusion of F<ppport.h>. 
    173195 
    174 These functions will be marked C<explicit> in the list shown by 
    175 C<--list-provided>. 
     196These functions or variables will be marked C<explicit> in the list shown 
     197by C<--list-provided>. 
    176198 
    177199Depending on whether you module has a single or multiple files that 
    178 use such functions, you want either C<static> or global variants. 
    179  
    180 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: 
    181205 
    182206    #define NEED_function 
    183  
    184 For a global function, use: 
     207    #define NEED_variable 
     208 
     209For a global function or variable (used in multiple source files), 
     210use: 
    185211 
    186212    #define NEED_function_GLOBAL 
    187  
    188 Note that you mustn't have more than one global request for one 
    189 function in your project. 
    190  
    191     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 
    192219    ----------------------------------------------------------------------------------------- 
     220    PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL 
    193221    eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL 
    194222    grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL 
     
    197225    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL 
    198226    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 
    199231    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL 
    200232    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL 
    201     sv_2pv_nolen()            NEED_sv_2pv_nolen            NEED_sv_2pv_nolen_GLOBAL 
     233    newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL 
     234    sv_2pv_flags()            NEED_sv_2pv_flags            NEED_sv_2pv_flags_GLOBAL 
    202235    sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL 
    203236    sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL 
    204237    sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL 
     238    sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL 
    205239    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL 
    206240    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL 
     241    vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL 
    207242    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL 
     243    warner()                  NEED_warner                  NEED_warner_GLOBAL 
    208244 
    209245To avoid namespace conflicts, you can change the namespace of the 
    210 explicitly exported functions using the C<DPPP_NAMESPACE> macro. 
    211 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>: 
    212248 
    213249    #define DPPP_NAMESPACE MyOwnNamespace_ 
     
    254290This would output context diffs with 10 lines of context. 
    255291 
     292If you want to create patched copies of your files instead, use: 
     293 
     294    perl ppport.h --copy=.new 
     295 
    256296To display portability information for the C<newSVpvn> function, 
    257297use: 
     
    312352=head1 COPYRIGHT 
    313353 
    314 Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz. 
     354Version 3.x, Copyright (c) 2004-2007, Marcus Holland-Moritz. 
    315355 
    316356Version 2.x, Copyright (C) 2001, Paul Marquess. 
     
    328368 
    329369use strict; 
     370 
     371# Disable broken TRIE-optimization 
     372BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } 
     373 
     374my $VERSION = 3.13; 
    330375 
    331376my %opt = ( 
     
    336381  cplusplus => 0, 
    337382  filter    => 1, 
     383  strip     => 0, 
     384  version   => 0, 
    338385); 
    339386 
     
    342389my $HS = "[ \t]";             # horizontal whitespace 
    343390 
     391# Never use C comments in this file! 
     392my $ccs  = '/'.'*'; 
     393my $cce  = '*'.'/'; 
     394my $rccs = quotemeta $ccs; 
     395my $rcce = quotemeta $cce; 
     396 
    344397eval { 
    345398  require Getopt::Long; 
    346399  Getopt::Long::GetOptions(\%opt, qw( 
    347     help quiet diag! filter! hints! changes! cplusplus 
     400    help quiet diag! filter! hints! changes! cplusplus strip version 
    348401    patch=s copy=s diff=s compat-version=s 
    349402    list-provided list-unsupported api-info=s 
     
    356409} 
    357410 
     411if ($opt{version}) { 
     412  print "This is $0 $VERSION.\n"; 
     413  exit 0; 
     414} 
     415 
    358416usage() if $opt{help}; 
     417strip() if $opt{strip}; 
    359418 
    360419if (exists $opt{'compat-version'}) { 
     
    370429  $opt{'compat-version'} = 5; 
    371430} 
    372  
    373 # Never use C comments in this file!!!!! 
    374 my $ccs  = '/'.'*'; 
    375 my $cce  = '*'.'/'; 
    376 my $rccs = quotemeta $ccs; 
    377 my $rcce = quotemeta $cce; 
    378431 
    379432my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ 
     
    413466EXTEND||| 
    414467EXTERN_C|5.005000||p 
     468F0convert|||n 
    415469FREETMPS||| 
    416470GIMME_V||5.004000|n 
     
    453507LVRET||| 
    454508MARK||| 
     509MULTICALL||5.009005| 
    455510MY_CXT_CLONE|5.009002||p 
    456511MY_CXT_INIT|5.007003||p 
     
    458513MoveD|5.009002||p 
    459514Move||| 
    460 NEWSV||| 
    461515NOOP|5.005000||p 
    462516NUM2PTR|5.006000||p 
     
    465519NVff|5.006001||p 
    466520NVgf|5.006001||p 
    467 Newc||| 
    468 Newz||| 
    469 New||| 
     521Newxc|5.009003||p 
     522Newxz|5.009003||p 
     523Newx|5.009003||p 
    470524Nullav||| 
    471525Nullch||| 
     
    490544PAD_SVl||| 
    491545PAD_SV||| 
    492 PERL_BCDVERSION|5.009003||p 
     546PERL_ABS|5.008001||p 
     547PERL_BCDVERSION|5.009005||p 
    493548PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p 
     549PERL_HASH|5.004000||p 
    494550PERL_INT_MAX|5.004000||p 
    495551PERL_INT_MIN|5.004000||p 
     
    507563PERL_MAGIC_ext|5.007002||p 
    508564PERL_MAGIC_fm|5.007002||p 
    509 PERL_MAGIC_glob|5.007002||p 
     565PERL_MAGIC_glob|5.009005||p 
    510566PERL_MAGIC_isaelem|5.007002||p 
    511567PERL_MAGIC_isa|5.007002||p 
    512 PERL_MAGIC_mutex|5.007002||p 
     568PERL_MAGIC_mutex|5.009005||p 
    513569PERL_MAGIC_nkeys|5.007002||p 
    514570PERL_MAGIC_overload_elem|5.007002||p 
     
    544600PERL_SHORT_MAX|5.004000||p 
    545601PERL_SHORT_MIN|5.004000||p 
     602PERL_SIGNALS_UNSAFE_FLAG|5.008001||p 
    546603PERL_SUBVERSION|5.006000||p 
    547604PERL_UCHAR_MAX|5.004000||p 
     
    551608PERL_ULONG_MAX|5.004000||p 
    552609PERL_ULONG_MIN|5.004000||p 
     610PERL_UNUSED_ARG|5.009003||p 
     611PERL_UNUSED_CONTEXT|5.009004||p 
    553612PERL_UNUSED_DECL|5.007002||p 
     613PERL_UNUSED_VAR|5.007002||p 
    554614PERL_UQUAD_MAX|5.004000||p 
    555615PERL_UQUAD_MIN|5.004000||p 
     616PERL_USE_GCC_BRACE_GROUPS|5.009004||p 
    556617PERL_USHORT_MAX|5.004000||p 
    557618PERL_USHORT_MIN|5.004000||p 
    558619PERL_VERSION|5.006000||p 
     620PL_DBsignal|5.005000||p 
    559621PL_DBsingle|||pn 
    560622PL_DBsub|||pn 
    561 PL_DBtrace|||n 
     623PL_DBtrace|||pn 
    562624PL_Sv|5.005000||p 
    563625PL_compiling|5.004050||p 
    564 PL_copline|5.005000||p 
     626PL_copline|5.009005||p 
    565627PL_curcop|5.004050||p 
    566628PL_curstash|5.004050||p 
     
    571633PL_dowarn|||pn 
    572634PL_errgv|5.004050||p 
     635PL_expect|5.009005||p 
    573636PL_hexdigit|5.005000||p 
    574637PL_hints|5.005000||p 
    575638PL_last_in_gv|||n 
     639PL_laststatval|5.005000||p 
    576640PL_modglobal||5.005000|n 
    577641PL_na|5.004050||pn 
     
    584648PL_rsfp|5.004050||p 
    585649PL_rs|||n 
     650PL_signals|5.008001||p 
    586651PL_stack_base|5.004050||p 
    587652PL_stack_sp|5.004050||p 
     653PL_statcache|5.005000||p 
    588654PL_stdingv|5.004050||p 
    589655PL_sv_arenaroot|5.004050||p 
     
    593659PL_tainted|5.004050||p 
    594660PL_tainting|5.004050||p 
     661POP_MULTICALL||5.009005| 
    595662POPi|||n 
    596663POPl|||n 
     
    606673PTRV|5.006000||p 
    607674PUSHMARK||| 
     675PUSH_MULTICALL||5.009005| 
    608676PUSHi||| 
    609677PUSHmortal|5.009002||p 
     
    615683PerlIO_clearerr||5.007003| 
    616684PerlIO_close||5.007003| 
     685PerlIO_context_layers||5.009004| 
    617686PerlIO_eof||5.007003| 
    618687PerlIO_error||5.007003| 
     
    635704PerlIO_unread||5.007003| 
    636705PerlIO_write||5.007003| 
     706Perl_signbit||5.009005|n 
     707PoisonFree|5.009004||p 
     708PoisonNew|5.009004||p 
     709PoisonWith|5.009004||p 
    637710Poison|5.008000||p 
    638711RETVAL|||n 
     
    650723STMT_END|||p 
    651724STMT_START|||p 
     725STR_WITH_LEN|5.009003||p 
    652726ST||| 
     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 
    653738SVt_IV||| 
    654739SVt_NV||| 
     
    661746Slab_Alloc||| 
    662747Slab_Free||| 
     748Slab_to_rw||| 
    663749StructCopy||| 
    664750SvCUR_set||| 
    665751SvCUR||| 
    666752SvEND||| 
     753SvGAMAGIC||5.006001| 
    667754SvGETMAGIC|5.004050||p 
    668755SvGROW||| 
     
    685772SvLEN||| 
    686773SvLOCK||5.007003| 
    687 SvMAGIC_set||5.009003| 
     774SvMAGIC_set|5.009003||p 
    688775SvNIOK_off||| 
    689776SvNIOKp||| 
     
    706793SvPOKp||| 
    707794SvPOK||| 
     795SvPVX_const|5.009003||p 
     796SvPVX_mutable|5.009003||p 
    708797SvPVX||| 
     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 
    709809SvPV_force_nomg|5.007002||p 
    710 SvPV_force||| 
     810SvPV_force|||p 
     811SvPV_mutable|5.009003||p 
     812SvPV_nolen_const|5.009003||p 
    711813SvPV_nolen|5.006000||p 
     814SvPV_nomg_const_nolen|5.009003||p 
     815SvPV_nomg_const|5.009003||p 
    712816SvPV_nomg|5.007002||p 
    713817SvPV_set||| 
     
    725829SvPV||| 
    726830SvREFCNT_dec||| 
    727 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 
    728839SvREFCNT||| 
    729840SvROK_off||| 
    730841SvROK_on||| 
    731842SvROK||| 
    732 SvRV_set||5.009003| 
     843SvRV_set|5.009003||p 
    733844SvRV||| 
     845SvRXOK||5.009005| 
     846SvRX||5.009005| 
    734847SvSETMAGIC||| 
     848SvSHARED_HASH|5.009003||p 
    735849SvSHARE||5.007003| 
    736 SvSTASH_set||5.009003| 
     850SvSTASH_set|5.009003||p 
    737851SvSTASH||| 
    738852SvSetMagicSV_nosteal||5.004000| 
     
    747861SvTYPE||| 
    748862SvUNLOCK||5.007003| 
    749 SvUOK||5.007001| 
     863SvUOK|5.007001|5.006000|p 
    750864SvUPGRADE||| 
    751865SvUTF8_off||5.006000| 
     
    755869SvUVX|5.004000||p 
    756870SvUV_nomg|5.009001||p 
    757 SvUV_set||5.009003| 
     871SvUV_set|5.009003||p 
    758872SvUVx|5.004000||p 
    759873SvUV|5.004000||p 
    760874SvVOK||5.008001| 
     875SvVSTRING_mg|5.009004||p 
    761876THIS|||n 
    762877UNDERBAR|5.009002||p 
     878UTF8_MAXBYTES|5.009002||p 
    763879UVSIZE|5.006000||p 
    764880UVTYPE|5.006000||p 
     
    767883UVuf|5.006000||p 
    768884UVxf|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 
    769932XCPT_CATCH|5.009002||p 
    770933XCPT_RETHROW|5.009002||p 
     
    785948XSRETURN_UV|5.008001||p 
    786949XSRETURN_YES||| 
    787 XSRETURN||| 
     950XSRETURN|||p 
    788951XST_mIV||| 
    789952XST_mNO||| 
     
    795958XS_VERSION_BOOTCHECK||| 
    796959XS_VERSION||| 
     960XSprePUSH|5.006000||p 
    797961XS||| 
    798962ZeroD|5.009002||p 
     
    802966aMY_CXT_|5.007003||p 
    803967aMY_CXT|5.007003||p 
     968aTHXR_|5.009005||p 
     969aTHXR|5.009005||p 
    804970aTHX_|5.006000||p 
    805971aTHX|5.006000||p 
    806 add_data||| 
     972add_data|||n 
     973addmad||| 
    807974allocmy||| 
    808975amagic_call||| 
     976amagic_cmp_locale||| 
     977amagic_cmp||| 
     978amagic_i_ncmp||| 
     979amagic_ncmp||| 
    809980any_dup||| 
    810981ao||| 
    811982append_elem||| 
    812983append_list||| 
     984append_madprops||| 
    813985apply_attrs_my||| 
    814986apply_attrs_string||5.006001| 
    815987apply_attrs||| 
    816988apply||| 
    817 asIV||| 
    818 asUV||| 
    819989atfork_lock||5.007003|n 
    820990atfork_unlock||5.007003|n 
    821991av_arylen_p||5.009003| 
    822992av_clear||| 
     993av_create_and_push||5.009005| 
     994av_create_and_unshift_one||5.009005| 
    823995av_delete||5.006000| 
    824996av_exists||5.006000| 
     
    8451017boot_core_PerlIO||| 
    8461018boot_core_UNIVERSAL||| 
     1019boot_core_mro||| 
    8471020boot_core_xsutils||| 
    8481021bytes_from_utf8||5.007001| 
     1022bytes_to_uni|||n 
    8491023bytes_to_utf8||5.006001| 
    850 cache_re||| 
    8511024call_argv|5.006000||p 
    8521025call_atexit||5.006000| 
    853 call_body||| 
    854 call_list_body||| 
    8551026call_list||5.004000| 
    8561027call_method|5.006000||p 
     
    8631034cast_ulong||5.006000| 
    8641035cast_uv||5.006000| 
     1036check_type_and_open||| 
    8651037check_uni||| 
    8661038checkcomma||| 
    8671039checkposixcc||| 
     1040ckWARN|5.006000||p 
    8681041ck_anoncode||| 
    8691042ck_bitop||| 
     
    8901063ck_null||| 
    8911064ck_open||| 
     1065ck_readline||| 
    8921066ck_repeat||| 
    8931067ck_require||| 
     
    9071081ck_trunc||| 
    9081082ck_unpack||| 
    909 cl_and||| 
    910 cl_anything||| 
    911 cl_init_zero||| 
    912 cl_init||| 
    913 cl_is_anything||| 
    914 cl_or||| 
     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||| 
    9151092closest_cop||| 
    9161093convert||| 
    9171094cop_free||| 
    9181095cr_textfilter||| 
     1096create_eval_scope||| 
    9191097croak_nocontext|||vn 
    9201098croak|||v 
    921 csighandler||5.007001|n 
     1099csighandler||5.009003|n 
     1100curmad||| 
    9221101custom_op_desc||5.007003| 
    9231102custom_op_name||5.007003| 
     1103cv_ckproto_len||| 
    9241104cv_ckproto||| 
    9251105cv_clone||| 
     
    9301110cx_dup||| 
    9311111cxinc||| 
    932 dAXMARK||5.009003| 
     1112dAXMARK|5.009003||p 
    9331113dAX|5.007002||p 
    9341114dITEMS|5.007002||p 
    9351115dMARK||| 
     1116dMULTICALL||5.009003| 
    9361117dMY_CXT_SV|5.007003||p 
    9371118dMY_CXT|5.007003||p 
     
    9401121dSP||| 
    9411122dTHR|5.004050||p 
     1123dTHXR|5.009005||p 
    9421124dTHXa|5.006000||p 
    9431125dTHXoa|5.006000||p 
    9441126dTHX|5.006000||p 
    9451127dUNDERBAR|5.009002||p 
     1128dVAR|5.009003||p 
    9461129dXCPT|5.009002||p 
    9471130dXSARGS||| 
     
    9571140debstackptrs||5.007003| 
    9581141debstack||5.007003| 
     1142debug_start_match||| 
    9591143deb||5.007003|v 
    960 del_he||| 
    9611144del_sv||| 
     1145delete_eval_scope||| 
    9621146delimcpy||5.004000| 
    963 depcom||| 
    9641147deprecate_old||| 
    9651148deprecate||| 
    9661149despatch_signals||5.007001| 
     1150destroy_matcher||| 
    9671151die_nocontext|||vn 
    9681152die_where||| 
     
    9951179do_oddball||| 
    9961180do_op_dump||5.006000| 
     1181do_op_xmldump||| 
    9971182do_open9||5.006000| 
    9981183do_openn||5.007001| 
     
    10001185do_pipe||| 
    10011186do_pmop_dump||5.006000| 
     1187do_pmop_xmldump||| 
    10021188do_print||| 
    10031189do_readline||| 
     
    10051191do_semop||| 
    10061192do_shmio||| 
     1193do_smartmatch||| 
    10071194do_spawn_nowait||| 
    10081195do_spawn||| 
     
    10321219doparseform||| 
    10331220dopoptoeval||| 
     1221dopoptogiven||| 
    10341222dopoptolabel||| 
    10351223dopoptoloop||| 
    10361224dopoptosub_at||| 
    10371225dopoptosub||| 
     1226dopoptowhen||| 
     1227doref||5.009003| 
    10381228dounwind||| 
    10391229dowantarray||| 
    10401230dump_all||5.006000| 
    10411231dump_eval||5.006000| 
     1232dump_exec_pos||| 
    10421233dump_fds||| 
    10431234dump_form||5.006000| 
     
    10461237dump_packsubs||5.006000| 
    10471238dump_sub||5.006000| 
     1239dump_sv_child||| 
     1240dump_trie_interim_list||| 
     1241dump_trie_interim_table||| 
     1242dump_trie||| 
    10481243dump_vindent||5.006000| 
    10491244dumpuntil||| 
    10501245dup_attrlist||| 
     1246emulate_cop_io||| 
    10511247emulate_eaccess||| 
    10521248eval_pv|5.006000||p 
    10531249eval_sv|5.006000||p 
     1250exec_failed||| 
    10541251expect_number||| 
    10551252fbm_compile||5.005000| 
    10561253fbm_instr||5.005000| 
    10571254fd_on_nosuid_fs||| 
     1255feature_is_enabled||| 
    10581256filter_add||| 
    10591257filter_del||| 
    10601258filter_gets||| 
    10611259filter_read||| 
     1260find_and_forget_pmops||| 
     1261find_array_subscript||| 
    10621262find_beginning||| 
    10631263find_byclass||| 
     1264find_hash_subscript||| 
    10641265find_in_my_stash||| 
    1065 find_runcv||| 
     1266find_runcv||5.008001| 
    10661267find_rundefsvoffset||5.009002| 
    10671268find_script||| 
    10681269find_uninit_var||| 
     1270first_symbol|||n 
    10691271fold_constants||| 
    10701272forbid_setid||| 
     
    10741276force_version||| 
    10751277force_word||| 
     1278forget_pmop||| 
    10761279form_nocontext|||vn 
    10771280form||5.004000|v 
     
    10821285free_tmps||| 
    10831286gen_constant_list||| 
     1287get_arena||| 
    10841288get_av|5.006000||p 
    10851289get_context||5.006000|n 
     1290get_cvn_flags||5.009005| 
    10861291get_cv|5.006000||p 
    10871292get_db_sub||| 
     
    10961301get_opargs||| 
    10971302get_ppaddr||5.006000| 
     1303get_re_arg||| 
    10981304get_sv|5.006000||p 
    10991305get_vtbl||5.005030| 
    11001306getcwd_sv||5.007002| 
    11011307getenv_len||| 
     1308glob_2number||| 
     1309glob_2pv||| 
     1310glob_assign_glob||| 
     1311glob_assign_ref||| 
    11021312gp_dup||| 
    11031313gp_free||| 
     
    11121322gv_HVadd||| 
    11131323gv_IOadd||| 
     1324gv_SVadd||| 
    11141325gv_autoload4||5.004000| 
    11151326gv_check||| 
     1327gv_const_sv||5.009003| 
    11161328gv_dump||5.006000| 
    11171329gv_efullname3||5.004000| 
     
    11191331gv_efullname||| 
    11201332gv_ename||| 
     1333gv_fetchfile_flags||5.009005| 
    11211334gv_fetchfile||| 
    11221335gv_fetchmeth_autoload||5.007003| 
     
    11331346gv_init_sv||| 
    11341347gv_init||| 
    1135 gv_share||| 
    1136 gv_stashpvn|5.006000||p 
     1348gv_name_set||5.009004| 
     1349gv_stashpvn|5.004000||p 
     1350gv_stashpvs||5.009003| 
    11371351gv_stashpv||| 
    11381352gv_stashsv||| 
     
    11411355hfreeentries||| 
    11421356hsplit||| 
    1143 hv_assert||5.009001| 
    1144 hv_auxinit||| 
     1357hv_assert||5.009005| 
     1358hv_auxinit|||n 
     1359hv_backreferences_p||| 
    11451360hv_clear_placeholders||5.009001| 
    11461361hv_clear||| 
     1362hv_copy_hints_hv||| 
    11471363hv_delayfree_ent||5.004000| 
    11481364hv_delete_common||| 
     
    11551371hv_fetch_common||| 
    11561372hv_fetch_ent||5.004000| 
     1373hv_fetchs|5.009003||p 
    11571374hv_fetch||| 
    11581375hv_free_ent||5.004000| 
     
    11641381hv_iternext||| 
    11651382hv_iterval||| 
     1383hv_kill_backrefs||| 
    11661384hv_ksplit||5.004000| 
    1167 hv_magic_check||| 
     1385hv_magic_check|||n 
     1386hv_magic_uvar_xkey||| 
    11681387hv_magic||| 
    11691388hv_name_set||5.009003| 
     
    11771396hv_store_ent||5.004000| 
    11781397hv_store_flags||5.008000| 
     1398hv_stores|5.009004||p 
    11791399hv_store||| 
    11801400hv_undef||| 
     
    11841404incl_perldb||| 
    11851405incline||| 
     1406incpush_if_exists||| 
    11861407incpush||| 
    11871408ingroup||| 
     
    11931414init_ids||| 
    11941415init_interp||| 
    1195 init_lexer||| 
    11961416init_main_stash||| 
    11971417init_perllib||| 
     
    12151435is_gv_magical_sv||| 
    12161436is_gv_magical||| 
    1217 is_handle_constructor||| 
     1437is_handle_constructor|||n 
    12181438is_list_assignment||| 
    12191439is_lvalue_sub||5.007001| 
     
    12501470is_utf8_alpha||5.006000| 
    12511471is_utf8_ascii||5.006000| 
    1252 is_utf8_char_slow||| 
     1472is_utf8_char_slow|||n 
    12531473is_utf8_char||5.006000| 
    12541474is_utf8_cntrl||5.006000| 
     1475is_utf8_common||| 
    12551476is_utf8_digit||5.006000| 
    12561477is_utf8_graph||5.006000| 
     
    12711492ix|||n 
    12721493jmaybe||| 
     1494join_exact||| 
    12731495keyword||| 
    12741496leave_scope||| 
     
    12791501list||| 
    12801502load_module_nocontext|||vn 
    1281 load_module||5.006000|v 
     1503load_module|5.006000||pv 
    12821504localize||| 
     1505looks_like_bool||| 
    12831506looks_like_number||| 
    12841507lop||| 
     
    12911514mXPUSHp|5.009002||p 
    12921515mXPUSHu|5.009002||p 
     1516mad_free||| 
     1517madlex||| 
     1518madparse||| 
    12931519magic_clear_all_env||| 
    12941520magic_clearenv||| 
     1521magic_clearhint||| 
    12951522magic_clearpack||| 
    12961523magic_clearsig||| 
     
    13021529magic_getarylen||| 
    13031530magic_getdefelem||| 
    1304 magic_getglob||| 
    13051531magic_getnkeys||| 
    13061532magic_getpack||| 
     
    13311557magic_setfm||| 
    13321558magic_setglob||| 
     1559magic_sethint||| 
    13331560magic_setisa||| 
    13341561magic_setmglob||| 
     
    13471574magic_wipepack||| 
    13481575magicname||| 
     1576make_matcher||| 
     1577make_trie_failtable||| 
    13491578make_trie||| 
    13501579malloced_size|||n 
    13511580malloc||5.007002|n 
    13521581markstack_grow||| 
     1582matcher_matches_sv||| 
    13531583measure_struct||| 
    13541584memEQ|5.004000||p 
     
    13761606modkids||| 
    13771607mod||| 
     1608more_bodies||| 
     1609more_sv||| 
    13781610moreswitches||| 
     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| 
    13791618mul128||| 
    13801619mulexp10|||n 
     
    13911630my_bzero|||n 
    13921631my_chsize||| 
     1632my_clearenv||| 
     1633my_cxt_index||| 
     1634my_cxt_init||| 
     1635my_dirfd||5.009005| 
    13931636my_exit_jump||| 
    13941637my_exit||| 
     
    14241667my_popen||5.004000| 
    14251668my_setenv||| 
     1669my_snprintf|5.009004||pvn 
    14261670my_socketpair||5.007003|n 
     1671my_sprintf||5.009003|vn 
    14271672my_stat||| 
    14281673my_strftime||5.007002| 
     1674my_strlcat|5.009004||pn 
     1675my_strlcpy|5.009004||pn 
    14291676my_swabn|||n 
    14301677my_swap||| 
    14311678my_unexec||| 
     1679my_vsnprintf||5.009004|n 
    14321680my||| 
     1681need_utf8|||n 
    14331682newANONATTRSUB||5.006000| 
    14341683newANONHASH||| 
     
    14411690newBINOP||| 
    14421691newCONDOP||| 
    1443 newCONSTSUB|5.006000||p 
     1692newCONSTSUB|5.004050||p 
    14441693newCVREF||| 
    14451694newDEFSVOP||| 
    14461695newFORM||| 
    14471696newFOROP||| 
     1697newGIVENOP||5.009003| 
     1698newGIVWHENOP||| 
     1699newGP||| 
    14481700newGVOP||| 
    14491701newGVREF||| 
     
    14571709newLOOPEX||| 
    14581710newLOOPOP||| 
    1459 newMYSUB||5.006000| 
     1711newMADPROP||| 
     1712newMADsv||| 
     1713newMYSUB||| 
    14601714newNULLLIST||| 
    14611715newOP||| 
    1462 newPADOP||5.006000| 
     1716newPADOP||| 
    14631717newPMOP||| 
    14641718newPROG||| 
     
    14661720newRANGE||| 
    14671721newRV_inc|5.004000||p 
    1468 newRV_noinc|5.006000||p 
     1722newRV_noinc|5.004000||p 
    14691723newRV||| 
    14701724newSLICEOP||| 
     
    14731727newSVOP||| 
    14741728newSVREF||| 
     1729newSV_type||5.009005| 
    14751730newSVhek||5.009003| 
    14761731newSViv||| 
     
    14781733newSVpvf_nocontext|||vn 
    14791734newSVpvf||5.004000|v 
    1480 newSVpvn_share||5.007001| 
    1481 newSVpvn|5.006000||p 
     1735newSVpvn_share|5.007001||p 
     1736newSVpvn|5.004050||p 
     1737newSVpvs_share||5.009003| 
     1738newSVpvs|5.009003||p 
    14821739newSVpv||| 
    14831740newSVrv||| 
     
    14851742newSVuv|5.006000||p 
    14861743newSV||| 
     1744newTOKEN||| 
    14871745newUNOP||| 
     1746newWHENOP||5.009003| 
    14881747newWHILEOP||5.009003| 
     1748newXS_flags||5.009004| 
    14891749newXSproto||5.006000| 
    14901750newXS||5.006000| 
     
    14971757new_stackinfo||5.005000| 
    14981758new_version||5.009000| 
     1759new_warnings_bitfield||| 
    14991760next_symbol||| 
    15001761nextargv||| 
     
    15081769nuke_stacks||| 
    15091770num_overflow|||n 
     1771offer_nice_chunk||| 
    15101772oopsAV||| 
    15111773oopsCV||| 
     
    15151777op_dump||5.006000| 
    15161778op_free||| 
     1779op_getmad_weak||| 
     1780op_getmad||| 
    15171781op_null||5.007002| 
     1782op_refcnt_dec||| 
     1783op_refcnt_inc||| 
    15181784op_refcnt_lock||5.009002| 
    15191785op_refcnt_unlock||5.009002| 
     1786op_xmldump||| 
    15201787open_script||| 
    15211788pMY_CXT_|5.007003||p 
     
    15231790pTHX_|5.006000||p 
    15241791pTHX|5.006000||p 
     1792packWARN|5.007003||p 
    15251793pack_cat||5.007003| 
    15261794pack_rec||| 
     
    15391807pad_leavemy||| 
    15401808pad_new||| 
     1809pad_peg|||n 
    15411810pad_push||| 
    15421811pad_reset||| 
    15431812pad_setsv||| 
    1544 pad_sv||| 
     1813pad_sv||5.009005| 
    15451814pad_swipe||| 
    15461815pad_tidy||| 
     
    15481817parse_body||| 
    15491818parse_unicode_opts||| 
    1550 path_is_absolute||| 
     1819parser_dup||| 
     1820parser_free||| 
     1821path_is_absolute|||n 
    15511822peep||| 
    1552 pending_ident||| 
     1823pending_Slabs_to_ro||| 
    15531824perl_alloc_using|||n 
    15541825perl_alloc|||n 
     
    15611832perl_run|||n 
    15621833pidgone||| 
     1834pm_description||| 
    15631835pmflag||| 
    15641836pmop_dump||5.006000| 
     1837pmop_xmldump||| 
    15651838pmruntime||| 
    15661839pmtrans||| 
    15671840pop_scope||| 
    1568 pregcomp||| 
     1841pregcomp||5.009005| 
    15691842pregexec||| 
    15701843pregfree||| 
    15711844prepend_elem||| 
     1845prepend_madprops||| 
     1846printbuf||| 
    15721847printf_nocontext|||vn 
    1573 ptr_table_clear||| 
    1574 ptr_table_fetch||| 
    1575 ptr_table_free||| 
    1576 ptr_table_new||| 
    1577 ptr_table_split||| 
    1578 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| 
    15791856push_scope||| 
    15801857put_byte||| 
    15811858pv_display||5.006000| 
     1859pv_escape||5.009004| 
     1860pv_pretty||5.009004| 
    15821861pv_uni_display||5.007003| 
    15831862qerror||| 
     1863qsortsvu||| 
     1864re_compile||5.009005| 
    15841865re_croak2||| 
    15851866re_dup||| 
    1586 re_intuit_start||5.006000| 
     1867re_intuit_start||5.009005| 
    15871868re_intuit_string||5.006000| 
     1869readpipe_override||| 
    15881870realloc||5.007002|n 
    15891871reentrant_free||| 
     
    15911873reentrant_retry|||vn 
    15921874reentrant_size||| 
     1875ref_array_or_hash||| 
     1876refcounted_he_chain_2hv||| 
     1877refcounted_he_fetch||| 
     1878refcounted_he_free||| 
     1879refcounted_he_new||| 
     1880refcounted_he_value||| 
    15931881refkids||| 
    15941882refto||| 
    1595 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||| 
    15961894reg_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||| 
    15971904reganode||| 
    15981905regatom||| 
    15991906regbranch||| 
    1600 regclass_swash||5.007003| 
     1907regclass_swash||5.009004| 
    16011908regclass||| 
    1602 regcp_set_to||| 
    16031909regcppop||| 
    16041910regcppush||| 
    1605 regcurly||| 
     1911regcurly|||n 
     1912regdump_extflags||| 
    16061913regdump||5.005000| 
     1914regdupe_internal||| 
    16071915regexec_flags||5.005000| 
    1608 reghop3||| 
    1609 reghopmaybe3||| 
    1610 reghopmaybe||| 
    1611 reghop||| 
     1916regfree_internal||5.009005| 
     1917reghop3|||n 
     1918reghop4|||n 
     1919reghopmaybe3|||n 
    16121920reginclass||| 
    16131921reginitcolors||5.006000| 
     
    16151923regmatch||| 
    16161924regnext||5.005000| 
    1617 regoptail||| 
    16181925regpiece||| 
    16191926regpposixcc||| 
    16201927regprop||| 
    1621 regrepeat_hard||| 
    16221928regrepeat||| 
     1929regtail_study||| 
    16231930regtail||| 
    16241931regtry||| 
    16251932reguni||| 
    1626 regwhite||| 
     1933regwhite|||n 
    16271934reg||| 
    16281935repeatcpy||| 
    16291936report_evil_fh||| 
    16301937report_uninit||| 
    1631 require_errno||| 
    16321938require_pv||5.006000| 
     1939require_tie_mod||| 
     1940restore_magic||| 
    16331941rninstr||| 
    16341942rsignal_restore||| 
     
    16371945rsignal||5.004000| 
    16381946run_body||| 
     1947run_user_filter||| 
    16391948runops_debug||5.005000| 
    16401949runops_standard||5.005000| 
     
    16671976save_gp||5.004000| 
    16681977save_hash||| 
    1669 save_hek_flags||| 
     1978save_hek_flags|||n 
    16701979save_helem||5.004050| 
    16711980save_hints||5.005000| 
     
    16901999save_sptr||| 
    16912000save_svref||| 
    1692 save_threadsv||5.005000| 
    16932001save_vptr||5.006000| 
    16942002savepvn||| 
     2003savepvs||5.009003| 
    16952004savepv||| 
     2005savesharedpvn||5.009005| 
    16962006savesharedpv||5.007003| 
    16972007savestack_grow_cnt||5.008001| 
     
    16992009savesvpv||5.009002| 
    17002010sawparens||| 
    1701 scalar_mod_type||| 
     2011scalar_mod_type|||n 
    17022012scalarboolean||| 
    17032013scalarkids||| 
     
    17202030scan_trans||| 
    17212031scan_version||5.009001| 
    1722 scan_vstring||5.008001| 
     2032scan_vstring||5.009005| 
    17232033scan_word||| 
    17242034scope||| 
    17252035screaminstr||5.005000| 
    1726 seed||| 
     2036seed||5.008001| 
     2037sequence_num||| 
     2038sequence_tail||| 
     2039sequence||| 
    17272040set_context||5.006000|n 
    17282041set_csh||| 
     
    17332046setenv_getix||| 
    17342047share_hek_flags||| 
    1735 share_hek||| 
     2048share_hek||5.004000| 
    17362049si_dup||| 
    17372050sighandler|||n 
    17382051simplify_sort||| 
     2052skipspace0||| 
     2053skipspace1||| 
     2054skipspace2||| 
    17392055skipspace||| 
     2056softref2xv||| 
     2057sortcv_stacked||| 
     2058sortcv_xsub||| 
     2059sortcv||| 
     2060sortsv_flags||5.009003| 
    17402061sortsv||5.007003| 
     2062space_join_names_mortal||| 
    17412063ss_dup||| 
    17422064stack_grow||| 
     2065start_force||| 
    17432066start_glob||| 
    17442067start_subparse||5.004000| 
    1745 stashpv_hvname_match||5.009003| 
     2068stashpv_hvname_match||5.009005| 
    17462069stdize_locale||| 
    17472070strEQ||| 
     
    17522075strNE||| 
    17532076str_to_version||5.006000| 
     2077strip_return||| 
    17542078strnEQ||| 
    17552079strnNE||| 
     
    17622086sv_2cv||| 
    17632087sv_2io||| 
     2088sv_2iuv_common||| 
    17642089sv_2iuv_non_preserve||| 
    17652090sv_2iv_flags||5.009001| 
     
    17672092sv_2mortal||| 
    17682093sv_2nv||| 
    1769 sv_2pv_flags||5.007002| 
     2094sv_2pv_flags|5.007002||p 
    17702095sv_2pv_nolen|5.006000||p 
    1771 sv_2pvbyte_nolen||| 
     2096sv_2pvbyte_nolen|5.006000||p 
    17722097sv_2pvbyte|5.006000||p 
    17732098sv_2pvutf8_nolen||5.006000| 
     
    17812106sv_bless||| 
    17822107sv_cat_decode||5.008001| 
    1783 sv_catpv_mg|5.006000||p 
     2108sv_catpv_mg|5.004050||p 
    17842109sv_catpvf_mg_nocontext|||pvn 
    17852110sv_catpvf_mg|5.006000|5.004000|pv 
     
    17872112sv_catpvf||5.004000|v 
    17882113sv_catpvn_flags||5.007002| 
    1789 sv_catpvn_mg|5.006000||p 
     2114sv_catpvn_mg|5.004050||p 
    17902115sv_catpvn_nomg|5.007002||p 
    17912116sv_catpvn||| 
     2117sv_catpvs|5.009003||p 
    17922118sv_catpv||| 
    17932119sv_catsv_flags||5.007002| 
    1794 sv_catsv_mg|5.006000||p 
     2120sv_catsv_mg|5.004050||p 
    17952121sv_catsv_nomg|5.007002||p 
    17962122sv_catsv||| 
     2123sv_catxmlpvn||| 
     2124sv_catxmlsv||| 
    17972125sv_chop||| 
    17982126sv_clean_all||| 
     
    18072135sv_del_backref||| 
    18082136sv_derived_from||5.004000| 
     2137sv_does||5.009004| 
    18092138sv_dump||| 
    18102139sv_dup||| 
    18112140sv_eq||| 
     2141sv_exp_grow||| 
    18122142sv_force_normal_flags||5.007001| 
    18132143sv_force_normal||5.006000| 
     
    18172147sv_gets||5.004000| 
    18182148sv_grow||| 
     2149sv_i_ncmp||| 
    18192150sv_inc||| 
    18202151sv_insert||| 
     
    18222153sv_isobject||| 
    18232154sv_iv||5.005000| 
     2155sv_kill_backrefs||| 
    18242156sv_len_utf8||5.006000| 
    18252157sv_len||| 
     2158sv_magic_portable|5.009005|5.004000|p 
    18262159sv_magicext||5.007003| 
    18272160sv_magic||| 
    18282161sv_mortalcopy||| 
     2162sv_ncmp||| 
    18292163sv_newmortal||| 
    18302164sv_newref||| 
    18312165sv_nolocking||5.007003| 
    18322166sv_nosharing||5.007003| 
    1833 sv_nounlocking||5.007003| 
     2167sv_nounlocking||| 
    18342168sv_nv||5.005000| 
    18352169sv_peek||5.005000| 
     2170sv_pos_b2u_midway||| 
    18362171sv_pos_b2u||5.006000| 
     2172sv_pos_u2b_cached||| 
     2173sv_pos_u2b_forwards|||n 
     2174sv_pos_u2b_midway|||n 
    18372175sv_pos_u2b||5.006000| 
    18382176sv_pvbyten_force||5.006000| 
    18392177sv_pvbyten||5.006000| 
    18402178sv_pvbyte||5.006000| 
    1841 sv_pvn_force_flags||5.007002| 
    1842 sv_pvn_force|||p 
     2179sv_pvn_force_flags|5.007002||p 
     2180sv_pvn_force||| 
    18432181sv_pvn_nomg|5.007003||p 
    1844 sv_pvn|5.006000||p 
     2182sv_pvn||| 
    18452183sv_pvutf8n_force||5.006000| 
    18462184sv_pvutf8n||5.006000| 
     
    18502188sv_reftype||| 
    18512189sv_release_COW||| 
    1852 sv_release_IVX||| 
    18532190sv_replace||| 
    18542191sv_report_used||| 
    18552192sv_reset||| 
    18562193sv_rvweaken||5.006000| 
    1857 sv_setiv_mg|5.006000||p 
     2194sv_setiv_mg|5.004050||p 
    18582195sv_setiv||| 
    18592196sv_setnv_mg|5.006000||p 
    18602197sv_setnv||| 
    1861 sv_setpv_mg|5.006000||p 
     2198sv_setpv_mg|5.004050||p 
    18622199sv_setpvf_mg_nocontext|||pvn 
    18632200sv_setpvf_mg|5.006000|5.004000|pv 
     
    18662203sv_setpviv_mg||5.008001| 
    18672204sv_setpviv||5.008001| 
    1868 sv_setpvn_mg|5.006000||p 
     2205sv_setpvn_mg|5.004050||p 
    18692206sv_setpvn||| 
     2207sv_setpvs|5.009004||p 
    18702208sv_setpv||| 
    18712209sv_setref_iv||| 
     
    18762214sv_setsv_cow||| 
    18772215sv_setsv_flags||5.007002| 
    1878 sv_setsv_mg|5.006000||p 
     2216sv_setsv_mg|5.004050||p 
    18792217sv_setsv_nomg|5.007002||p 
    18802218sv_setsv||| 
    1881 sv_setuv_mg|5.006000||p 
    1882 sv_setuv|5.006000||p 
     2219sv_setuv_mg|5.004050||p 
     2220sv_setuv|5.004000||p 
    18832221sv_tainted||5.004000| 
    18842222sv_taint||5.004000| 
     
    18912229sv_untaint||5.004000| 
    18922230sv_upgrade||| 
    1893 sv_usepvn_mg|5.006000||p 
     2231sv_usepvn_flags||5.009004| 
     2232sv_usepvn_mg|5.004050||p 
    18942233sv_usepvn||| 
    18952234sv_utf8_decode||5.006000| 
     
    18982237sv_utf8_upgrade_flags||5.007002| 
    18992238sv_utf8_upgrade||5.007001| 
    1900 sv_uv|5.006000||p 
     2239sv_uv|5.005000||p 
    19012240sv_vcatpvf_mg|5.006000|5.004000|p 
    19022241sv_vcatpvfn||5.004000| 
     
    19052244sv_vsetpvfn||5.004000| 
    19062245sv_vsetpvf|5.006000|5.004000|p 
     2246sv_xmlpeek||| 
    19072247svtype||| 
    19082248swallow_bom||| 
     2249swap_match_buff||| 
    19092250swash_fetch||5.007002| 
     2251swash_get||| 
    19102252swash_init||5.006000| 
    19112253sys_intern_clear||| 
     
    19312273to_utf8_title||5.007003| 
    19322274to_utf8_upper||5.007003| 
     2275token_free||| 
     2276token_getmad||| 
     2277tokenize_use||| 
    19332278tokeq||| 
    19342279tokereport||| 
    19352280too_few_arguments||| 
    19362281too_many_arguments||| 
     2282uiv_2buf|||n 
    19372283unlnk||| 
    19382284unpack_rec||| 
     
    19422288unshare_hek||| 
    19432289unsharepvn||5.004000| 
    1944 upg_version||5.009000| 
     2290unwind_handler_stack||| 
     2291update_debugger_info||| 
     2292upg_version||5.009005| 
    19452293usage||| 
    1946 utf16_textfilter||| 
    19472294utf16_to_utf8_reversed||5.006001| 
    19482295utf16_to_utf8||5.006001| 
    1949 utf16rev_textfilter||| 
    19502296utf8_distance||5.006000| 
    19512297utf8_hop||5.006000| 
    19522298utf8_length||5.007001| 
    1953 utf8_mg_pos_init||| 
    1954 utf8_mg_pos||| 
     2299utf8_mg_pos_cache_update||| 
    19552300utf8_to_bytes||5.006001| 
    19562301utf8_to_uvchr||5.007001| 
    19572302utf8_to_uvuni||5.007001| 
    1958 utf8n_to_uvchr||5.007001| 
     2303utf8n_to_uvchr||| 
    19592304utf8n_to_uvuni||5.007001| 
    19602305utilize||| 
    19612306uvchr_to_utf8_flags||5.007003| 
    1962 uvchr_to_utf8||5.007001| 
     2307uvchr_to_utf8||| 
    19632308uvuni_to_utf8_flags||5.007003| 
    19642309uvuni_to_utf8||5.007001| 
     
    19682313vcroak||5.006000| 
    19692314vdeb||5.007003| 
     2315vdie_common||| 
     2316vdie_croak_common||| 
    19702317vdie||| 
    19712318vform||5.006000| 
     
    19732320vivify_defelem||| 
    19742321vivify_ref||| 
    1975 vload_module||5.006000| 
     2322vload_module|5.006000||p 
    19762323vmess||5.006000| 
    19772324vnewSVpvf|5.006000|5.004000|p 
     
    19792326vnumify||5.009000| 
    19802327vstringify||5.009000| 
     2328vverify||5.009003| 
    19812329vwarner||5.006000| 
    19822330vwarn||5.006000| 
     
    19842332warn_nocontext|||vn 
    19852333warner_nocontext|||vn 
    1986 warner||5.006000|v 
     2334warner|5.006000|5.004000|pv 
    19872335warn|||v 
    19882336watch||| 
    19892337whichsig||| 
     2338write_no_mem||| 
    19902339write_to_stderr||| 
     2340xmldump_all||| 
     2341xmldump_attr||| 
     2342xmldump_eval||| 
     2343xmldump_form||| 
     2344xmldump_indent|||v 
     2345xmldump_packsubs||| 
     2346xmldump_sub||| 
     2347xmldump_vindent||| 
    19912348yyerror||| 
    19922349yylex||| 
     
    20062363# Scan for possible replacement candidates 
    20072364 
    2008 my(%replace, %need, %hints, %depends); 
     2365my(%replace, %need, %hints, %warnings, %depends); 
    20092366my $replace = 0; 
    2010 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} 
    20112378 
    20122379while (<DATA>) { 
    20132380  if ($hint) { 
     2381    my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; 
    20142382    if (m{^\s*\*\s(.*?)\s*$}) { 
    2015       $hints{$hint} ||= '';  # suppress warning with older perls 
    2016       $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] .= $_; 
    20172397    } 
    20182398    else { 
    2019       $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; 
    20202404    } 
    20212405  } 
    2022   $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+)\)}; 
    20232423 
    20242424  $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; 
     
    20322432 
    20332433  $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; 
     2434} 
     2435 
     2436for (values %depends) { 
     2437  my %s; 
     2438  $_ = [sort grep !$s{$_}++, @$_]; 
    20342439} 
    20352440 
     
    20522457      print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; 
    20532458      print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; 
    2054       print "$hints{$f}" if exists $hints{$f}; 
     2459      print "\n$hints{$f}" if exists $hints{$f}; 
     2460      print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; 
    20552461      $info++; 
    20562462    } 
    2057     unless ($info) { 
    2058       print "No portability information available.\n"; 
    2059     } 
     2463    print "No portability information available.\n" unless $info; 
    20602464    $count++; 
    20612465  } 
    2062   if ($count > 0) { 
    2063     print "\n"; 
    2064   } 
    2065   else { 
    2066     print "Found no API matching '$opt{'api-info'}'.\n"; 
    2067   } 
     2466  $count or print "Found no API matching '$opt{'api-info'}'."; 
     2467  print "\n"; 
    20682468  exit 0; 
    20692469} 
     
    20772477    push @flags, 'depend'   if exists $depends{$f}; 
    20782478    push @flags, 'hint'     if exists $hints{$f}; 
     2479    push @flags, 'warning'  if exists $warnings{$f}; 
    20792480    my $flags = @flags ? '  ['.join(', ', @flags).']' : ''; 
    20802481    print "$f$flags\n"; 
     
    20842485 
    20852486my @files; 
    2086 my @srcext = qw( xs c h cc cpp ); 
    2087 my $srcext = join '|', @srcext; 
     2487my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); 
     2488my $srcext = join '|', map { quotemeta $_ } @srcext; 
    20882489 
    20892490if (@ARGV) { 
    20902491  my %seen; 
    2091   @files = grep { -f && !exists $seen{$_} } map { glob $_ } @ARGV; 
     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  } 
    20922505} 
    20932506else { 
     
    20952508    require File::Find; 
    20962509    File::Find::find(sub { 
    2097       $File::Find::name =~ /\.($srcext)$/i 
     2510      $File::Find::name =~ /($srcext)$/i 
    20982511          and push @files, $File::Find::name; 
    20992512    }, '.'); 
    21002513  }; 
    21012514  if ($@) { 
    2102     @files = map { glob "*.$_" } @srcext; 
     2515    @files = map { glob "*$_" } @srcext; 
    21032516  } 
    21042517} 
     
    21082521  my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; 
    21092522  for (@files) { 
    2110     my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/\.($srcext)$/i; 
     2523    my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; 
    21112524    push @{ $out ? \@out : \@in }, $_; 
    21122525  } 
     
    21172530} 
    21182531 
    2119 unless (@files) { 
    2120   die "No input files given!\n"; 
    2121 } 
     2532die "No input files given!\n" unless @files; 
    21222533 
    21232534my(%files, %global, %revreplace); 
     
    21392550  my %file = (orig => $c, changes => 0); 
    21402551 
    2141   # temporarily remove C comments from the code 
     2552  # Temporarily remove C/XS comments and strings from the code 
    21422553  my @ccom; 
     2554 
    21432555  $c =~ s{ 
    2144     ( 
    2145         [^"'/]+ 
    2146       | 
    2147         (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+ 
    2148       | 
    2149         (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+ 
    2150     ) 
    2151   | 
    2152     (/ (?: 
    2153         \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / 
    2154         | 
    2155         /[^\r\n]* 
    2156       )) 
    2157   }{ 
    2158     defined $2 and push @ccom, $2; 
    2159     defined $1 ? $1 : "$ccs$#ccom$cce"; 
    2160   }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; 
    21612564 
    21622565  $file{ccom} = \@ccom; 
    21632566  $file{code} = $c; 
    2164   $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; 
    21652568 
    21662569  my $func; 
     
    21732576      $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; 
    21742577      if (exists $API{$func}{provided}) { 
     2578        $file{uses_provided}{$func}++; 
    21752579        if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { 
    21762580          $file{uses}{$func}++; 
     
    21832587          } 
    21842588          for ($func, @deps) { 
    2185             if (exists $need{$_}) { 
    2186               $file{needs}{$_} = 'static'; 
    2187             } 
     2589            $file{needs}{$_} = 'static' if exists $need{$_}; 
    21882590          } 
    21892591        } 
     
    22012603      $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; 
    22022604    } 
    2203     else { 
    2204       warning("Possibly wrong #define $1 in $filename"); 
    2205     } 
     2605    else { warning("Possibly wrong #define $1 in $filename") } 
    22062606  } 
    22072607 
     
    22402640  my $func; 
    22412641  my $c = $file{code}; 
     2642  my $warnings = 0; 
    22422643 
    22432644  for $func (sort keys %{$file{uses_Perl}}) { 
    22442645    if ($API{$func}{varargs}) { 
    2245       my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 
    2246                             { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 
    2247       if ($changes) { 
    2248         warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 
    2249         $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        } 
    22502653      } 
    22512654    } 
     
    22622665  } 
    22632666 
    2264   for $func (sort keys %{$file{uses}}) { 
    2265     next unless $file{uses}{$func};   # if it's only a dependency 
    2266     if (exists $file{uses_deps}{$func}) { 
    2267       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      } 
    22682675    } 
    2269     elsif (exists $replace{$func}) { 
    2270       warning("Uses $func instead of $replace{$func}"); 
    2271       $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++; 
    22722684    } 
    2273     else { 
    2274       diag("Uses $func"); 
    2275     } 
    2276     hint($func); 
    2277   } 
    2278  
    2279   for $func (sort keys %{$file{uses_todo}}) { 
    2280     warning("Uses $func, which may not be portable below perl ", 
    2281             format_version($API{$func}{todo})); 
    22822685  } 
    22832686 
     
    23772780    warning("Uses $cppc C++ style comment$s, which is not portable"); 
    23782781  } 
     2782 
     2783  my $s = $warnings != 1 ? 's' : ''; 
     2784  my $warn = $warnings ? " ($warnings warning$s)" : ''; 
     2785  info("Analysis completed$warn"); 
    23792786 
    23802787  if ($file{changes}) { 
     
    24322839 
    24332840 
     2841sub try_use { eval "use @_;"; return $@ eq '' } 
     2842 
    24342843sub mydiff 
    24352844{ 
     
    24422851  } 
    24432852 
    2444   if (!defined $diff and can_use('Text::Diff')) { 
     2853  if (!defined $diff and try_use('Text::Diff')) { 
    24452854    $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); 
    24462855    $diff = <<HEADER . $diff; 
     
    24642873 
    24652874  print F $diff; 
    2466  
    24672875} 
    24682876 
     
    25012909} 
    25022910 
    2503 sub can_use 
    2504 { 
    2505   eval "use @_;"; 
    2506   return $@ eq ''; 
    2507 } 
    2508  
    25092911sub rec_depend 
    25102912{ 
    2511   my $func = shift; 
    2512   my %seen; 
     2913  my($func, $seen) = @_; 
    25132914  return () unless exists $depends{$func}; 
    2514   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}}; 
    25152919} 
    25162920 
     
    25922996 
    25932997my %given_hints; 
     2998my %given_warnings; 
    25942999sub hint 
    25953000{ 
    25963001  $opt{quiet} and return; 
    2597   $opt{hints} or return; 
    25983002  my $func = shift; 
    2599   exists $hints{$func} or return; 
    2600   $given_hints{$func}++ and return; 
    2601   my $hint = $hints{$func}; 
    2602   $hint =~ s/^/   /mg; 
    2603   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; 
    26043016} 
    26053017 
     
    26203032 
    26213033  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; 
    26223080} 
    26233081 
     
    26533111#endif 
    26543112 
    2655 #define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION) 
     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)) 
    26563115 
    26573116/* It is very unlikely that anyone will try to use this with Perl 6 
     
    29993458#  define UVSIZE                         IVSIZE 
    30003459#endif 
    3001  
    30023460#ifndef sv_setuv 
    3003 #  define sv_setuv(sv, uv)                  \ 
    3004    STMT_START {                             \ 
    3005        UV TeMpUv = uv;                      \ 
    3006        if (TeMpUv <= IV_MAX)                \ 
    3007            sv_setiv(sv, TeMpUv);            \ 
    3008        else                                 \ 
    3009            sv_setnv(sv, (double)TeMpUv);    \ 
    3010    } STMT_END 
    3011 #endif 
    3012  
     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 
    30133470#ifndef newSVuv 
    3014 #  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)) 
    30153472#endif 
    30163473#ifndef sv_2uv 
     
    30403497#  define sv_uv(sv)                      SvUVx(sv) 
    30413498#endif 
     3499 
     3500#if !defined(SvUOK) && defined(SvIOK_UV) 
     3501#  define SvUOK(sv) SvIOK_UV(sv) 
     3502#endif 
    30423503#ifndef XST_mUV 
    30433504#  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  ) 
     
    30553516#endif 
    30563517 
    3057 #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 
    30583734/* 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 
    30593847#  define PL_DBsingle               DBsingle 
    30603848#  define PL_DBsub                  DBsub 
     3849#  define PL_DBtrace                DBtrace 
    30613850#  define PL_Sv                     Sv 
    30623851#  define PL_compiling              compiling 
     
    30703859#  define PL_dowarn                 dowarn 
    30713860#  define PL_errgv                  errgv 
     3861#  define PL_expect                 expect 
    30723862#  define PL_hexdigit               hexdigit 
    30733863#  define PL_hints                  hints 
    3074 #  define PL_na                     na 
    3075 #  define PL_no_modify              no_modify 
     3864#  define PL_laststatval            laststatval 
     3865#  define PL_na                     na 
    30763866#  define PL_perl_destruct_level    perl_destruct_level 
    30773867#  define PL_perldb                 perldb 
    3078 #  define PL_ppaddr                 ppaddr 
    30793868#  define PL_rsfp_filters           rsfp_filters 
    30803869#  define PL_rsfp                   rsfp 
    30813870#  define PL_stack_base             stack_base 
    30823871#  define PL_stack_sp               stack_sp 
     3872#  define PL_statcache              statcache 
    30833873#  define PL_stdingv                stdingv 
    30843874#  define PL_sv_arenaroot           sv_arenaroot 
     
    30913881#endif 
    30923882 
    3093 #ifndef PERL_UNUSED_DECL 
    3094 #  ifdef HASATTRIBUTE 
    3095 #    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 
    3096 #      define PERL_UNUSED_DECL 
    3097 #    else 
    3098 #      define PERL_UNUSED_DECL __attribute__((unused)) 
    3099 #    endif 
    3100 #  else 
    3101 #    define PERL_UNUSED_DECL 
    3102 #  endif 
    3103 #endif 
    3104 #ifndef NOOP 
    3105 #  define NOOP                           (void)0 
    3106 #endif 
    3107  
    3108 #ifndef dNOOP 
    3109 #  define dNOOP                          extern int Perl___notused PERL_UNUSED_DECL 
    3110 #endif 
    3111  
    3112 #ifndef NVTYPE 
    3113 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 
    3114 #    define NVTYPE long double 
    3115 #  else 
    3116 #    define NVTYPE double 
    3117 #  endif 
    3118 typedef NVTYPE NV; 
    3119 #endif 
    3120  
    3121 #ifndef INT2PTR 
    3122  
    3123 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 
    3124 #    define PTRV                  UV 
    3125 #    define INT2PTR(any,d)        (any)(d) 
    3126 #  else 
    3127 #    if PTRSIZE == LONGSIZE 
    3128 #      define PTRV                unsigned long 
    3129 #    else 
    3130 #      define PTRV                unsigned 
    3131 #    endif 
    3132 #    define INT2PTR(any,d)        (any)(PTRV)(d) 
    3133 #  endif 
    3134  
    3135 #  define NUM2PTR(any,d)  (any)(PTRV)(d) 
    3136 #  define PTR2IV(p)       INT2PTR(IV,p) 
    3137 #  define PTR2UV(p)       INT2PTR(UV,p) 
    3138 #  define PTR2NV(p)       NUM2PTR(NV,p) 
    3139  
    3140 #  if PTRSIZE == LONGSIZE 
    3141 #    define PTR2ul(p)     (unsigned long)(p) 
    3142 #  else 
    3143 #    define PTR2ul(p)     INT2PTR(unsigned long,p) 
    3144 #  endif 
    3145  
    3146 #endif /* !INT2PTR */ 
    3147  
    3148 #undef START_EXTERN_C 
    3149 #undef END_EXTERN_C 
    3150 #undef EXTERN_C 
    3151 #ifdef __cplusplus 
    3152 #  define START_EXTERN_C extern "C" { 
    3153 #  define END_EXTERN_C } 
    3154 #  define EXTERN_C extern "C" 
    3155 #else 
    3156 #  define START_EXTERN_C 
    3157 #  define END_EXTERN_C 
    3158 #  define EXTERN_C extern 
    3159 #endif 
    3160  
    3161 #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3162 #  if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC) 
    3163 #    define PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3164 #  endif 
    3165 #endif 
    3166  
    3167 #undef STMT_START 
    3168 #undef STMT_END 
    3169 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 
    3170 #  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */ 
    3171 #  define STMT_END  ) 
    3172 #else 
    3173 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 
    3174 #    define STMT_START  if (1) 
    3175 #    define STMT_END    else (void)0 
    3176 #  else 
    3177 #    define STMT_START  do 
    3178 #    define STMT_END    while (0) 
    3179 #  endif 
    3180 #endif 
    3181 #ifndef boolSV 
    3182 #  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no) 
    3183 #endif 
    3184  
    3185 /* DEFSV appears first in 5.004_56 */ 
    3186 #ifndef DEFSV 
    3187 #  define DEFSV                          GvSV(PL_defgv) 
    3188 #endif 
    3189  
    3190 #ifndef SAVE_DEFSV 
    3191 #  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv)) 
    3192 #endif 
    3193  
    3194 /* Older perls (<=5.003) lack AvFILLp */ 
    3195 #ifndef AvFILLp 
    3196 #  define AvFILLp                        AvFILL 
    3197 #endif 
    3198 #ifndef ERRSV 
    3199 #  define ERRSV                          get_sv("@",FALSE) 
    3200 #endif 
    3201 #ifndef newSVpvn 
    3202 #  define newSVpvn(data,len)             ((data)                                              \ 
    3203                                     ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 
    3204                                     : newSV(0)) 
    3205 #endif 
    3206  
    3207 /* Hint: gv_stashpvn 
    3208  * This function's backport doesn't support the length parameter, but 
    3209  * rather ignores it. Portability can only be ensured if the length 
    3210  * parameter is used for speed reasons, but the length can always be 
    3211  * 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. 
    32123887 */ 
    3213 #ifndef gv_stashpvn 
    3214 #  define gv_stashpvn(str,len,create)    gv_stashpv(str,create) 
    3215 #endif 
    3216  
    3217 /* Replace: 1 */ 
    3218 #ifndef get_cv 
    3219 #  define get_cv                         perl_get_cv 
    3220 #endif 
    3221  
    3222 #ifndef get_sv 
    3223 #  define get_sv                         perl_get_sv 
    3224 #endif 
    3225  
    3226 #ifndef get_av 
    3227 #  define get_av                         perl_get_av 
    3228 #endif 
    3229  
    3230 #ifndef get_hv 
    3231 #  define get_hv                         perl_get_hv 
    3232 #endif 
    3233  
    3234 /* Replace: 0 */ 
    3235  
    3236 #ifdef HAS_MEMCMP 
    3237 #ifndef memNE 
    3238 #  define memNE(s1,s2,l)                 (memcmp(s1,s2,l)) 
    3239 #endif 
    3240  
    3241 #ifndef memEQ 
    3242 #  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l)) 
    3243 #endif 
    3244  
    3245 #else 
    3246 #ifndef memNE 
    3247 #  define memNE(s1,s2,l)                 (bcmp(s1,s2,l)) 
    3248 #endif 
    3249  
    3250 #ifndef memEQ 
    3251 #  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l)) 
    3252 #endif 
    3253  
    3254 #endif 
    3255 #ifndef MoveD 
    3256 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3257 #endif 
    3258  
    3259 #ifndef CopyD 
    3260 #  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3261 #endif 
    3262  
    3263 #ifdef HAS_MEMSET 
    3264 #ifndef ZeroD 
    3265 #  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t)) 
    3266 #endif 
    3267  
    3268 #else 
    3269 #ifndef ZeroD 
    3270 #  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)),d) 
    3271 #endif 
    3272  
    3273 #endif 
    3274 #ifndef Poison 
    3275 #  define Poison(d,n,t)                  (void)memset((char*)(d), 0xAB, (n) * sizeof(t)) 
    3276 #endif 
    3277 #ifndef dUNDERBAR 
    3278 #  define dUNDERBAR                      dNOOP 
    3279 #endif 
    3280  
    3281 #ifndef UNDERBAR 
    3282 #  define UNDERBAR                       DEFSV 
    3283 #endif 
    3284 #ifndef dAX 
    3285 #  define dAX                            I32 ax = MARK - PL_stack_base + 1 
    3286 #endif 
    3287  
    3288 #ifndef dITEMS 
    3289 #  define dITEMS                         I32 items = SP - MARK 
    3290 #endif 
    3291 #ifndef dXSTARG 
    3292 #  define dXSTARG                        SV * targ = sv_newmortal() 
     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) 
    32933895#endif 
    32943896#ifndef dTHR 
     
    33163918#ifndef aTHX_ 
    33173919#  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 
    33183935#endif 
    33193936#ifndef dTHXoa 
     
    33783995#  define eval_sv                        perl_eval_sv 
    33793996#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 
    33804008 
    33814009/* Replace: 0 */ 
    33824010 
    33834011/* Replace perl_eval_pv with eval_pv */ 
    3384 /* eval_pv depends on eval_sv */ 
    33854012 
    33864013#ifndef eval_pv 
     
    34184045 
    34194046    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; 
     4117    PL_curcop = ocurcop; 
     4118    } 
     4119} 
     4120 
     4121#endif 
     4122#endif 
     4123 
     4124#ifndef load_module 
     4125#if defined(NEED_load_module) 
     4126static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); 
     4127static 
     4128#else 
     4129extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); 
     4130#endif 
     4131 
     4132#ifdef load_module 
     4133#  undef load_module 
     4134#endif 
     4135#define load_module DPPP_(my_load_module) 
     4136#define Perl_load_module DPPP_(my_load_module) 
     4137 
     4138#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) 
     4139 
     4140void 
     4141DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) 
     4142{ 
     4143    va_list args; 
     4144    va_start(args, ver); 
     4145    vload_module(flags, name, ver, &args); 
     4146    va_end(args); 
    34204147} 
    34214148 
     
    34574184 
    34584185/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ 
    3459 #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))) && ((PERL_VERSION != 4) || (PERL_SUBVERSION != 5)) 
     4186#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) 
    34604187#if defined(NEED_newCONSTSUB) 
    3461 static void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); 
     4188static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); 
    34624189static 
    34634190#else 
    3464 extern void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); 
     4191extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); 
    34654192#endif 
    34664193 
     
    34744201 
    34754202void 
    3476 DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv) 
     4203DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) 
    34774204{ 
    34784205    U32 oldhints = PL_hints; 
     
    34884215    newSUB( 
    34894216 
    3490 #if   ((PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22))) 
     4217#if   (PERL_BCDVERSION < 0x5003022) 
    34914218        start_subparse(), 
    3492 #elif ((PERL_VERSION == 3) && (PERL_SUBVERSION == 22)) 
     4219#elif (PERL_BCDVERSION == 0x5003022) 
    34934220            start_subparse(0), 
    34944221#else  /* 5.003_23  onwards */ 
     
    34964223#endif 
    34974224 
    3498         newSVOP(OP_CONST, 0, newSVpv(name,0)), 
     4225        newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), 
    34994226        newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */ 
    35004227        newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) 
     
    35384265#define START_MY_CXT 
    35394266 
    3540 #if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 )) 
     4267#if (PERL_BCDVERSION < 0x5004068) 
    35414268/* Fetches the SV that keeps the per-interpreter data. */ 
    35424269#define dMY_CXT_SV \ 
     
    36444371#endif 
    36454372 
    3646 #ifndef SvPV_nolen 
    3647  
    3648 #if defined(NEED_sv_2pv_nolen) 
    3649 static char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); 
    3650 static 
    3651 #else 
    3652 extern char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); 
    3653 #endif 
    3654  
    3655 #ifdef sv_2pv_nolen 
    3656 #  undef sv_2pv_nolen 
    3657 #endif 
    3658 #define sv_2pv_nolen(a) DPPP_(my_sv_2pv_nolen)(aTHX_ a) 
    3659 #define Perl_sv_2pv_nolen DPPP_(my_sv_2pv_nolen) 
    3660  
    3661 #if defined(NEED_sv_2pv_nolen) || defined(NEED_sv_2pv_nolen_GLOBAL) 
    3662  
    3663 char * 
    3664 DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv) 
    3665 { 
    3666   STRLEN n_a; 
    3667   return sv_2pv(sv, &n_a); 
    3668 } 
    3669  
     4373#ifndef SvREFCNT_inc 
     4374#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4375#    define SvREFCNT_inc(sv)        \ 
     4376      ({                \ 
     4377          SV * const _sv = (SV*)(sv);   \ 
     4378          if (_sv)          \ 
     4379               (SvREFCNT(_sv))++;   \ 
     4380          _sv;              \ 
     4381      }) 
     4382#  else 
     4383#    define SvREFCNT_inc(sv)    \ 
     4384          ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) 
     4385#  endif 
     4386#endif 
     4387 
     4388#ifndef SvREFCNT_inc_simple 
     4389#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4390#    define SvREFCNT_inc_simple(sv) \ 
     4391      ({                    \ 
     4392          if (sv)               \ 
     4393               (SvREFCNT(sv))++;        \ 
     4394          (SV *)(sv);               \ 
     4395      }) 
     4396#  else 
     4397#    define SvREFCNT_inc_simple(sv) \ 
     4398          ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) 
     4399#  endif 
     4400#endif 
     4401 
     4402#ifndef SvREFCNT_inc_NN 
     4403#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4404#    define SvREFCNT_inc_NN(sv)     \ 
     4405      ({                    \ 
     4406          SV * const _sv = (SV*)(sv);   \ 
     4407          SvREFCNT(_sv)++;      \ 
     4408          _sv;              \ 
     4409      }) 
     4410#  else 
     4411#    define SvREFCNT_inc_NN(sv) \ 
     4412          (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) 
     4413#  endif 
     4414#endif 
     4415 
     4416#ifndef SvREFCNT_inc_void 
     4417