1 #if 0
2 <<'SKIP';
3 #endif
4 /*
5 ----------------------------------------------------------------------
6 
7     ppport.h -- Perl/Pollution/Portability Version 3.54
8 
9     Automatically created by Devel::PPPort running under perl 5.026002.
10 
11     Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
12     includes in parts/inc/ instead.
13 
14     Use 'perldoc ppport.h' to view the documentation below.
15 
16 ----------------------------------------------------------------------
17 
18 SKIP
19 
20 =pod
21 
22 =head1 NAME
23 
24 ppport.h - Perl/Pollution/Portability version 3.54
25 
26 =head1 SYNOPSIS
27 
28   perl ppport.h [options] [source files]
29 
30   Searches current directory for files if no [source files] are given
31 
32   --help                      show short help
33 
34   --version                   show version
35 
36   --patch=file                write one patch file with changes
37   --copy=suffix               write changed copies with suffix
38   --diff=program              use diff program and options
39 
40   --compat-version=version    provide compatibility with Perl version
41   --cplusplus                 accept C++ comments
42 
43   --quiet                     don't output anything except fatal errors
44   --nodiag                    don't show diagnostics
45   --nohints                   don't show hints
46   --nochanges                 don't suggest changes
47   --nofilter                  don't filter input files
48 
49   --strip                     strip all script and doc functionality
50                               from ppport.h
51 
52   --list-provided             list provided API
53   --list-unsupported          list unsupported API
54   --api-info=name             show Perl API portability information
55 
56 =head1 COMPATIBILITY
57 
58 This version of F<ppport.h> is designed to support operation with Perl
59 installations back to 5.003_07, and has been tested up to 5.31.4.
60 
61 =head1 OPTIONS
62 
63 =head2 --help
64 
65 Display a brief usage summary.
66 
67 =head2 --version
68 
69 Display the version of F<ppport.h>.
70 
71 =head2 --patch=I<file>
72 
73 If this option is given, a single patch file will be created if
74 any changes are suggested. This requires a working diff program
75 to be installed on your system.
76 
77 =head2 --copy=I<suffix>
78 
79 If this option is given, a copy of each file will be saved with
80 the given suffix that contains the suggested changes. This does
81 not require any external programs. Note that this does not
82 automagically add a dot between the original filename and the
83 suffix. If you want the dot, you have to include it in the option
84 argument.
85 
86 If neither C<--patch> or C<--copy> are given, the default is to
87 simply print the diffs for each file. This requires either
88 C<Text::Diff> or a C<diff> program to be installed.
89 
90 =head2 --diff=I<program>
91 
92 Manually set the diff program and options to use. The default
93 is to use C<Text::Diff>, when installed, and output unified
94 context diffs.
95 
96 =head2 --compat-version=I<version>
97 
98 Tell F<ppport.h> to check for compatibility with the given
99 Perl version. The default is to check for compatibility with Perl
100 version 5.003_07. You can use this option to reduce the output
101 of F<ppport.h> if you intend to be backward compatible only
102 down to a certain Perl version.
103 
104 =head2 --cplusplus
105 
106 Usually, F<ppport.h> will detect C++ style comments and
107 replace them with C style comments for portability reasons.
108 Using this option instructs F<ppport.h> to leave C++
109 comments untouched.
110 
111 =head2 --quiet
112 
113 Be quiet. Don't print anything except fatal errors.
114 
115 =head2 --nodiag
116 
117 Don't output any diagnostic messages. Only portability
118 alerts will be printed.
119 
120 =head2 --nohints
121 
122 Don't output any hints. Hints often contain useful portability
123 notes. Warnings will still be displayed.
124 
125 =head2 --nochanges
126 
127 Don't suggest any changes. Only give diagnostic output and hints
128 unless these are also deactivated.
129 
130 =head2 --nofilter
131 
132 Don't filter the list of input files. By default, files not looking
133 like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.
134 
135 =head2 --strip
136 
137 Strip all script and documentation functionality from F<ppport.h>.
138 This reduces the size of F<ppport.h> dramatically and may be useful
139 if you want to include F<ppport.h> in smaller modules without
140 increasing their distribution size too much.
141 
142 The stripped F<ppport.h> will have a C<--unstrip> option that allows
143 you to undo the stripping, but only if an appropriate C<Devel::PPPort>
144 module is installed.
145 
146 =head2 --list-provided
147 
148 Lists the API elements for which compatibility is provided by
149 F<ppport.h>. Also lists if it must be explicitly requested,
150 if it has dependencies, and if there are hints or warnings for it.
151 
152 =head2 --list-unsupported
153 
154 Lists the API elements that are known not to be supported by
155 F<ppport.h> and below which version of Perl they probably
156 won't be available or work.
157 
158 =head2 --api-info=I<name>
159 
160 Show portability information for API elements matching I<name>.
161 If I<name> is surrounded by slashes, it is interpreted as a regular
162 expression.
163 
164 =head1 DESCRIPTION
165 
166 In order for a Perl extension (XS) module to be as portable as possible
167 across differing versions of Perl itself, certain steps need to be taken.
168 
169 =over 4
170 
171 =item *
172 
173 Including this header is the first major one. This alone will give you
174 access to a large part of the Perl API that hasn't been available in
175 earlier Perl releases. Use
176 
177     perl ppport.h --list-provided
178 
179 to see which API elements are provided by ppport.h.
180 
181 =item *
182 
183 You should avoid using deprecated parts of the API. For example, using
184 global Perl variables without the C<PL_> prefix is deprecated. Also,
185 some API functions used to have a C<perl_> prefix. Using this form is
186 also deprecated. You can safely use the supported API, as F<ppport.h>
187 will provide wrappers for older Perl versions.
188 
189 =item *
190 
191 If you use one of a few functions or variables that were not present in
192 earlier versions of Perl, and that can't be provided using a macro, you
193 have to explicitly request support for these functions by adding one or
194 more C<#define>s in your source code before the inclusion of F<ppport.h>.
195 
196 These functions or variables will be marked C<explicit> in the list shown
197 by C<--list-provided>.
198 
199 Depending on whether you module has a single or multiple files that
200 use such functions or variables, you want either C<static> or global
201 variants.
202 
203 For a C<static> function or variable (used only in a single source
204 file), use:
205 
206     #define NEED_function
207     #define NEED_variable
208 
209 For a global function or variable (used in multiple source files),
210 use:
211 
212     #define NEED_function_GLOBAL
213     #define NEED_variable_GLOBAL
214 
215 Note that you mustn't have more than one global request for the
216 same function or variable in your project.
217 
218     Function / Variable       Static Request               Global Request
219     -----------------------------------------------------------------------------------------
220     caller_cx()               NEED_caller_cx               NEED_caller_cx_GLOBAL
221     croak_xs_usage()          NEED_croak_xs_usage          NEED_croak_xs_usage_GLOBAL
222     die_sv()                  NEED_die_sv                  NEED_die_sv_GLOBAL
223     eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL
224     grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL
225     grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL
226     grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL
227     grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
228     grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
229     load_module()             NEED_load_module             NEED_load_module_GLOBAL
230     mess()                    NEED_mess                    NEED_mess_GLOBAL
231     mess_nocontext()          NEED_mess_nocontext          NEED_mess_nocontext_GLOBAL
232     mess_sv()                 NEED_mess_sv                 NEED_mess_sv_GLOBAL
233     mg_findext()              NEED_mg_findext              NEED_mg_findext_GLOBAL
234     my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL
235     my_sprintf()              NEED_my_sprintf              NEED_my_sprintf_GLOBAL
236     my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL
237     my_strlcpy()              NEED_my_strlcpy              NEED_my_strlcpy_GLOBAL
238     my_strnlen()              NEED_my_strnlen              NEED_my_strnlen_GLOBAL
239     newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL
240     newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL
241     PL_parser                 NEED_PL_parser               NEED_PL_parser_GLOBAL
242     PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL
243     pv_display()              NEED_pv_display              NEED_pv_display_GLOBAL
244     pv_escape()               NEED_pv_escape               NEED_pv_escape_GLOBAL
245     pv_pretty()               NEED_pv_pretty               NEED_pv_pretty_GLOBAL
246     sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL
247     sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL
248     sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
249     sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
250     sv_unmagicext()           NEED_sv_unmagicext           NEED_sv_unmagicext_GLOBAL
251     utf8_to_uvchr_buf()       NEED_utf8_to_uvchr_buf       NEED_utf8_to_uvchr_buf_GLOBAL
252     vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL
253     vmess()                   NEED_vmess                   NEED_vmess_GLOBAL
254     warner()                  NEED_warner                  NEED_warner_GLOBAL
255 
256 To avoid namespace conflicts, you can change the namespace of the
257 explicitly exported functions / variables using the C<DPPP_NAMESPACE>
258 macro. Just C<#define> the macro before including C<ppport.h>:
259 
260     #define DPPP_NAMESPACE MyOwnNamespace_
261     #include "ppport.h"
262 
263 The default namespace is C<DPPP_>.
264 
265 =back
266 
267 The good thing is that most of the above can be checked by running
268 F<ppport.h> on your source code. See the next section for
269 details.
270 
271 =head1 EXAMPLES
272 
273 To verify whether F<ppport.h> is needed for your module, whether you
274 should make any changes to your code, and whether any special defines
275 should be used, F<ppport.h> can be run as a Perl script to check your
276 source code. Simply say:
277 
278     perl ppport.h
279 
280 The result will usually be a list of patches suggesting changes
281 that should at least be acceptable, if not necessarily the most
282 efficient solution, or a fix for all possible problems.
283 
284 If you know that your XS module uses features only available in
285 newer Perl releases, if you're aware that it uses C++ comments,
286 and if you want all suggestions as a single patch file, you could
287 use something like this:
288 
289     perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff
290 
291 If you only want your code to be scanned without any suggestions
292 for changes, use:
293 
294     perl ppport.h --nochanges
295 
296 You can specify a different C<diff> program or options, using
297 the C<--diff> option:
298 
299     perl ppport.h --diff='diff -C 10'
300 
301 This would output context diffs with 10 lines of context.
302 
303 If you want to create patched copies of your files instead, use:
304 
305     perl ppport.h --copy=.new
306 
307 To display portability information for the C<newSVpvn> function,
308 use:
309 
310     perl ppport.h --api-info=newSVpvn
311 
312 Since the argument to C<--api-info> can be a regular expression,
313 you can use
314 
315     perl ppport.h --api-info=/_nomg$/
316 
317 to display portability information for all C<_nomg> functions or
318 
319     perl ppport.h --api-info=/./
320 
321 to display information for all known API elements.
322 
323 =head1 BUGS
324 
325 Some of the suggested edits and/or generated patches may not compile as-is
326 without tweaking manually.  This is generally due to the need for an extra
327 parameter to be added to the call to prevent buffer overflow.
328 
329 If this version of F<ppport.h> is causing failure during
330 the compilation of this module, please check if newer versions
331 of either this module or C<Devel::PPPort> are available on CPAN
332 before sending a bug report.
333 
334 If F<ppport.h> was generated using the latest version of
335 C<Devel::PPPort> and is causing failure of this module, please
336 send a bug report to L<perlbug@perl.org|mailto:perlbug@perl.org>.
337 
338 Please include the following information:
339 
340 =over 4
341 
342 =item 1.
343 
344 The complete output from running "perl -V"
345 
346 =item 2.
347 
348 This file.
349 
350 =item 3.
351 
352 The name and version of the module you were trying to build.
353 
354 =item 4.
355 
356 A full log of the build that failed.
357 
358 =item 5.
359 
360 Any other information that you think could be relevant.
361 
362 =back
363 
364 For the latest version of this code, please get the C<Devel::PPPort>
365 module from CPAN.
366 
367 =head1 COPYRIGHT
368 
369 Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz.
370 
371 Version 2.x, Copyright (C) 2001, Paul Marquess.
372 
373 Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
374 
375 This program is free software; you can redistribute it and/or
376 modify it under the same terms as Perl itself.
377 
378 =head1 SEE ALSO
379 
380 See L<Devel::PPPort>.
381 
382 =cut
383 
384 # These are tools that must be included in ppport.h.  It doesn't work if given
385 # a .pl suffix
386 
387 sub format_version
388 {
389   # Given an input version that is acceptable to parse_version(), return a
390   # string of the standard representation of it.
391 
392   my($r,$v,$s) = parse_version(shift);
393 
394   if ($r < 5 || ($r == 5 && $v < 6)) {
395     my $ver = sprintf "%d.%03d", $r, $v;
396     $s > 0 and $ver .= sprintf "_%02d", $s;
397 
398     return $ver;
399   }
400 
401   return sprintf "%d.%d.%d", $r, $v, $s;
402 }
403 
404 sub parse_version
405 {
406   # Returns a triplet, (5, major, minor) from the input, which can be in any
407   # of several typical formats
408 
409   my $ver = shift;
410   $ver = "" unless defined $ver;
411 
412   my($r,$v,$s);
413 
414   if (   ($r, $v, $s) = $ver =~ /^(5)(\d{3})(\d{3})$/ # 5029010, from the file
415                                                       # names in our
416                                                       # parts/base/ and
417                                                       # parts/todo directories
418       or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d+)\.(\d+)$/   # 5.25.7
419       or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d{3})(\d{3})$/ # 5.025008, from the
420                                                           # output of $]
421       or ($r, $v, $s) = $ver =~ /^(\d+)\.(\d{1,3})()$/    # 5.24, 5.004
422       or ($r, $v, $s) = $ver =~ /^(\d+)\.(00[1-5])_?(\d{2})$/  # 5.003_07
423   ) {
424 
425     $s = 0 unless $s;
426 
427     die "Only Perl 5 is supported '$ver'\n" if $r != 5;
428     die "Invalid version number: $ver\n" if $v >= 1000 || $s >= 1000;
429     return (5, 0 + $v, 0 + $s);
430   }
431 
432   my $mesg = "";
433   $mesg = ".  (In 5.00x_yz, x must be 1-5.)" if $ver =~ /_/;
434   die "Invalid version number format: '$ver'$mesg\n";
435 }
436 
437 sub int_parse_version
438 {
439     # Returns integer 7 digit human-readable version, suitable for use in file
440     # names in parts/todo parts/base.
441 
442     return 0 + join "", map { sprintf("%03d", $_) } parse_version(shift);
443 }
444 
445 sub format_version_line
446 {
447     # Returns a floating point representation of the input version
448 
449     my $version = int_parse_version(shift);
450     $version =~ s/^5\B/5./;
451     return $version;
452 }
453 
454 sub dictionary_order($$)    # Sort caselessly, ignoring punct
455 {
456     my ($lc_a, $lc_b);
457     my ($squeezed_a, $squeezed_b);
458     my ($valid_a, $valid_b);    # Meaning valid for all releases
459 
460     # On early perls, the implicit pass by reference doesn't work, so we have
461     # to use the globals to initialize.
462     if ("$]" < "5.006" ) {
463         $valid_a = $a; $valid_b = $b;
464     }
465     else {
466         ($valid_a, $valid_b) = @_;
467     }
468 
469     $lc_a = lc $valid_a;
470     $lc_b = lc $valid_b;
471 
472     $squeezed_a = $lc_a;
473     $squeezed_a =~ s/[\W_]//g;   # No punct, including no underscore
474     $squeezed_b = $lc_b;
475     $squeezed_b =~ s/[\W_]//g;
476 
477     return( $squeezed_a cmp $squeezed_b
478          or       $lc_a cmp $lc_b
479          or    $valid_a cmp $valid_b);
480 }
481 
482 sub sort_api_lines  # Sort lines of the form flags|return|name|args...
483                     # by 'name'
484 {
485     $a =~ / ^ [^|]* \| [^|]* \| (\w+) /x; # 3rd field '|' is sep
486     my $a_name = $1;
487     $b =~ / ^ [^|]* \| [^|]* \| (\w+) /x;
488     my $b_name = $1;
489     return dictionary_order($a_name, $b_name);
490 }
491 
492 1;
493 
494 use strict;
495 
496 # Disable broken TRIE-optimization
497 BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 }
498 
499 my $VERSION = 3.54;
500 
501 my %opt = (
502   quiet     => 0,
503   diag      => 1,
504   hints     => 1,
505   changes   => 1,
506   cplusplus => 0,
507   filter    => 1,
508   strip     => 0,
509   version   => 0,
510 );
511 
512 my($ppport) = $0 =~ /([\w.]+)$/;
513 my $LF = '(?:\r\n|[\r\n])';   # line feed
514 my $HS = "[ \t]";             # horizontal whitespace
515 
516 # Never use C comments in this file!
517 my $ccs  = '/'.'*';
518 my $cce  = '*'.'/';
519 my $rccs = quotemeta $ccs;
520 my $rcce = quotemeta $cce;
521 
522 eval {
523   require Getopt::Long;
524   Getopt::Long::GetOptions(\%opt, qw(
525     help quiet diag! filter! hints! changes! cplusplus strip version
526     patch=s copy=s diff=s compat-version=s
527     list-provided list-unsupported api-info=s
528   )) or usage();
529 };
530 
531 if ($@ and grep /^-/, @ARGV) {
532   usage() if "@ARGV" =~ /^--?h(?:elp)?$/;
533   die "Getopt::Long not found. Please don't use any options.\n";
534 }
535 
536 if ($opt{version}) {
537   print "This is $0 $VERSION.\n";
538   exit 0;
539 }
540 
541 usage() if $opt{help};
542 strip() if $opt{strip};
543 
544 $opt{'compat-version'} = 5.003_07 unless exists $opt{'compat-version'};
545 $opt{'compat-version'} = int_parse_version($opt{'compat-version'});
546 
547 my $int_min_perl = int_parse_version(5.003_07);
548 
549 # Each element of this hash looks something like:
550 # 'Poison' => {
551 #                         'base' => '5.008000',
552 #                         'provided' => 1,
553 #                         'todo' => '5.003007'
554 #             },
555 my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
556                 ? ( $1 => {
557                       ($2                  ? ( base     => $2 ) : ()),
558                       ($3                  ? ( todo     => $3 ) : ()),
559                       (index($4, 'v') >= 0 ? ( varargs  => 1  ) : ()),
560                       (index($4, 'p') >= 0 ? ( provided => 1  ) : ()),
561                       (index($4, 'n') >= 0 ? ( noTHXarg => 1  ) : ()),
562                       (index($4, 'c') >= 0 ? ( core_only    => 1  ) : ()),
563                       (index($4, 'd') >= 0 ? ( deprecated   => 1  ) : ()),
564                       (index($4, 'i') >= 0 ? ( inaccessible => 1  ) : ()),
565                       (index($4, 'x') >= 0 ? ( experimental => 1  ) : ()),
566                       (index($4, 'u') >= 0 ? ( undocumented => 1  ) : ()),
567                       (index($4, 'o') >= 0 ? ( ppport_fnc => 1  ) : ()),
568                       (index($4, 'V') >= 0 ? ( unverified => 1  ) : ()),
569                     } )
570                 : die "invalid spec: $_" } qw(
571 abort_execution|5.025010||Viu
572 add_above_Latin1_folds|5.021001||Viu
573 add_cp_to_invlist|5.013011||Viu
574 add_data|5.005000||nViu
575 add_multi_match|5.021004||Viu
576 _add_range_to_invlist|5.016000||cViu
577 add_utf16_textfilter|5.011001||Viu
578 adjust_size_and_find_bucket|5.019003||nViu
579 advance_one_LB|5.023007||Viu
580 advance_one_SB|5.021009||Viu
581 advance_one_WB|5.021009||Viu
582 alloccopstash|5.017001|5.017001|x
583 alloc_LOGOP|5.025004||xViu
584 allocmy|5.008001||Viu
585 amagic_call|5.003007|5.003007|u
586 amagic_cmp|5.009003||Viu
587 amagic_cmp_locale|5.009003||Viu
588 amagic_deref_call|5.013007|5.013007|u
589 amagic_i_ncmp|5.009003||Viu
590 amagic_is_enabled|5.015008||Viu
591 amagic_ncmp|5.009003||Viu
592 _aMY_CXT|5.009000|5.009000|p
593 aMY_CXT_|5.009000|5.009000|p
594 aMY_CXT|5.009000|5.009000|p
595 anonymise_cv_maybe|5.013003||Viu
596 any_dup|5.006000||Vu
597 ao|5.005000||Viu
598 _append_range_to_invlist|5.013010||Viu
599 append_utf8_from_native_byte|5.019004||ncViu
600 apply|5.003007||Viu
601 apply_attrs|5.006000||Viu
602 apply_attrs_my|5.007003||Viu
603 apply_attrs_string|5.006001|5.006001|xu
604 ARCHNAME|5.004000|5.004000|
605 argvout_final|5.029006||Viu
606 ASCII_TO_NEED|5.019004||ndcVu
607 __ASSERT_|5.019007|5.008008|p
608 assert_uft8_cache_coherent|5.013003||Viu
609 assignment_type|5.021005||Viu
610 atfork_lock|5.007002|5.007002|nu
611 atfork_unlock|5.007002|5.007002|nu
612 aTHX_|5.006000|5.003007|p
613 aTHX|5.006000|5.003007|p
614 aTHXR_||5.003007|pou
615 aTHXR||5.003007|pou
616 av_arylen_p|5.009003|5.009003|u
617 av_clear|5.003007|5.003007|
618 av_create_and_push|5.009005|5.009005|x
619 av_create_and_unshift_one|5.009005|5.009005|x
620 av_delete|5.006000|5.006000|
621 av_exists|5.006000|5.006000|
622 av_extend|5.003007|5.003007|
623 av_extend_guts|5.017004||Viu
624 av_fetch|5.003007|5.003007|
625 av_fill|5.003007|5.003007|
626 AvFILL|5.003007|5.003007|
627 AvFILLp|5.004005|5.003007|poV
628 av_iter_p|5.011000|5.011000|u
629 av_len|5.003007|5.003007|
630 av_make|5.003007|5.003007|
631 av_nonelem|5.027009||Viu
632 av_pop|5.003007|5.003007|
633 av_push|5.003007|5.003007|
634 av_reify|5.004004||cViu
635 av_shift|5.003007|5.003007|
636 av_store|5.003007|5.003007|
637 av_tindex|5.017009|5.003007|p
638 av_top_index|5.017009|5.003007|p
639 av_undef|5.003007|5.003007|
640 av_unshift|5.003007|5.003007|
641 ax|5.003007|5.003007|
642 backup_one_GCB|5.025003||Viu
643 backup_one_LB|5.023007||Viu
644 backup_one_SB|5.021009||Viu
645 backup_one_WB|5.021009||Viu
646 bad_type_gv|5.019002||Viu
647 bad_type_pv|5.016000||Viu
648 BhkDISABLE|||x
649 BhkENABLE|||x
650 BhkENTRY_set|||x
651 BhkENTRY|||xi
652 BhkFLAGS|||xi
653 BIN|5.003007|5.003007|
654 bind_match|5.003007||Viu
655 block_end|5.004000|5.004000|
656 block_gimme|5.004000|5.004000|u
657 blockhook_register|5.013003|5.013003|x
658 block_start|5.004000|5.004000|
659 BOM_UTF8|5.025005|5.003007|p
660 boolSV|5.004000|5.003007|p
661 boot_core_mro|5.009005||Viu
662 boot_core_PerlIO|5.007002||Viu
663 boot_core_UNIVERSAL|5.003007||Viu
664 _byte_dump_string|5.025006||Viu
665 BYTEORDER|5.003007|5.003007|
666 bytes_cmp_utf8|5.013007|5.013007|
667 bytes_from_utf8|5.007001|5.007001|x
668 bytes_from_utf8_loc|5.027001|5.027001|nxu
669 bytes_to_utf8|5.006001|5.006001|x
670 call_argv|5.006000|5.003007|p
671 call_atexit|5.006000|5.006000|u
672 CALL_BLOCK_HOOKS|||xi
673 caller_cx|5.013005|5.006000|p
674 call_list|5.004000|5.004000|u
675 call_method|5.006000|5.003007|p
676 calloc|5.007002|5.007002|n
677 call_pv|5.006000|5.003007|p
678 call_sv|5.006000|5.003007|p
679 cando|5.003007||Viu
680 C_ARRAY_END|5.013002|5.003007|p
681 C_ARRAY_LENGTH|5.008001|5.003007|p
682 CASTFLAGS|5.003007|5.003007|
683 cast_i32|5.006000|5.006000|nu
684 cast_iv|5.006000|5.006000|nu
685 cast_ulong|5.006000|5.006000|nu
686 cast_uv|5.006000|5.006000|nu
687 category_name|5.027008||nViu
688 cBOOL|5.013000|5.003007|p
689 change_engine_size|5.029004||Viu
690 CHARBITS|5.011002|5.011002|
691 check_and_deprecate|5.025009||Viu
692 checkcomma|5.003007||Viu
693 check_locale_boundary_crossing|5.015006||Viu
694 check_type_and_open|5.009003||Viu
695 check_uni|5.003007||Viu
696 check_utf8_print|5.013009||Viu
697 ck_entersub_args_core|||iu
698 ck_entersub_args_list|5.013006|5.013006|
699 ck_entersub_args_proto|5.013006|5.013006|
700 ck_entersub_args_proto_or_list|5.013006|5.013006|
701 ckWARN2|5.006000|5.006000|
702 ckWARN2_d|5.006000|5.006000|
703 ckWARN3|5.007003|5.007003|
704 ckWARN3_d|5.007003|5.007003|
705 ckWARN4|5.007003|5.007003|
706 ckWARN4_d|5.007003|5.007003|
707 ckWARN|5.006000|5.003007|p
708 ckwarn|5.009003|5.009003|u
709 ckwarn_common|5.011001||Viu
710 ckWARN_d|5.006000|5.006000|
711 ckwarn_d|5.009003|5.009003|u
712 ck_warner|5.011001|5.011001|vu
713 ck_warner_d|5.011001|5.011001|vu
714 CLASS||5.003007|
715 clear_defarray|5.023008|5.023008|u
716 CLEAR_ERRSV|5.025007|5.025007|
717 clear_placeholders|5.009004||xViu
718 clear_special_blocks|5.021003||Viu
719 clone_params_del|5.013002|5.013002|nu
720 clone_params_new|5.013002|5.013002|nu
721 closest_cop|5.007002||Viu
722 cntrl_to_mnemonic|5.021004||nViu
723 compute_EXACTish|5.017003||nViu
724 construct_ahocorasick_from_trie|5.021001||Viu
725 cop_fetch_label|5.015001|5.015001|x
726 CopFILE|5.006000||pVu
727 CopFILEAV|5.006000||pVu
728 CopFILEGV|5.006000||pVu
729 CopFILEGV_set|5.006000||pVu
730 CopFILE_set|5.006000||pVu
731 CopFILESV|5.006000||pVu
732 cop_free|5.006000||Viu
733 cophh_2hv|5.013007|5.013007|x
734 cophh_copy|5.013007|5.013007|x
735 cophh_delete_pv|5.013007|5.013007|x
736 cophh_delete_pvn|5.013007|5.013007|x
737 cophh_delete_pvs|5.013007|5.013007|x
738 cophh_delete_sv|5.013007|5.013007|x
739 cophh_fetch_pv|5.013007|5.013007|x
740 cophh_fetch_pvn|5.013007|5.013007|x
741 cophh_fetch_pvs|5.013007|5.013007|x
742 cophh_fetch_sv|5.013007|5.013007|x
743 cophh_free|5.013007|5.013007|x
744 cophh_new_empty|5.013007|5.013007|x
745 cophh_store_pv|5.013007|5.013007|x
746 cophh_store_pvn|5.013007|5.013007|x
747 cophh_store_pvs|5.013007|5.013007|x
748 cophh_store_sv|5.013007|5.013007|x
749 cop_hints_2hv|5.013007|5.013007|
750 cop_hints_fetch_pv|5.013007|5.013007|
751 cop_hints_fetch_pvn|5.013007|5.013007|
752 cop_hints_fetch_pvs|5.013007|5.013007|
753 cop_hints_fetch_sv|5.013007|5.013007|
754 CopLABEL|5.009005|5.009005|
755 CopLABEL_len|5.016000|5.016000|
756 CopLABEL_len_flags|5.016000|5.016000|
757 CopSTASH|5.006000||pVu
758 CopSTASH_eq|5.006000||pVu
759 CopSTASHPV|5.006000||pVu
760 CopSTASHPV_set|5.006000||pVu
761 CopSTASH_set|5.006000||pVu
762 cop_store_label|5.015001|5.015001|x
763 Copy|5.003007|5.003007|
764 CopyD|5.009002|5.003007|p
765 core_prototype|5.015002||Vi
766 coresub_op|5.015003||Viu
767 CPERLscope|5.005000||pVu
768 CPPLAST|5.006000|5.006000|
769 CPPMINUS|5.003007|5.003007|
770 CPPRUN|5.006000|5.006000|
771 CPPSTDIN|5.003007|5.003007|
772 create_eval_scope|5.009004||xViu
773 croak|5.006000|5.003007|v
774 croak_caller|5.025004||vnViu
775 croak_memory_wrap|5.017006|5.003007|pnu
776 croak_nocontext|5.006000||pvnVu
777 croak_no_mem|5.017006||nViu
778 croak_no_modify|5.013003|5.003007|pn
779 croak_popstack|5.017008||ncViu
780 croak_sv|5.013001|5.003007|p
781 croak_xs_usage|5.010001|5.003007|pn
782 cr_textfilter|5.006000||Viu
783 csighandler|5.009003|5.009003|nu
784 current_re_engine|5.017001||cViu
785 curse|5.013009||Viu
786 custom_op_desc|5.007003|5.007003|d
787 custom_op_get_field|5.019006||cViu
788 custom_op_name|5.007003|5.007003|d
789 custom_op_register|5.013007|5.013007|
790 cv_ckproto_len_flags|5.015004||xcViu
791 cv_clone|5.003007|5.003007|
792 cv_clone_into|5.017004||Viu
793 cv_const_sv|5.003007|5.003007|n
794 cv_const_sv_or_av|5.019003||nViu
795 CvDEPTH|5.003007|5.003007|nu
796 cv_dump|5.006000||Vi
797 cv_forget_slab|5.017002||Vi
798 cv_get_call_checker|5.013006|5.013006|
799 cv_get_call_checker_flags|5.027003|5.027003|
800 CvGV|5.003007|5.003007|u
801 cvgv_from_hek|||ciu
802 cvgv_set|5.013003||cViu
803 cv_name|5.021005|5.021005|
804 CvPADLIST|5.008001|5.008001|x
805 cv_set_call_checker|5.013006|5.013006|
806 cv_set_call_checker_flags|5.021004|5.021004|
807 CvSTASH|5.003007|5.003007|
808 cvstash_set|5.013007||cViu
809 cv_undef|5.003007|5.003007|
810 cv_undef_flags|5.021004||Viu
811 CvWEAKOUTSIDE|||i
812 CX_CURPAD_SAVE|||i
813 CX_CURPAD_SV|||i
814 cx_dump|5.005000|5.005000|u
815 cx_dup|5.007003|5.007003|u
816 cxinc|5.003007|5.003007|u
817 cx_popblock|5.023008|5.023008|xu
818 cx_popeval|5.023008|5.023008|xu
819 cx_popformat|5.023008|5.023008|xu
820 cx_popgiven|5.027008|5.027008|xu
821 cx_poploop|5.023008|5.023008|xu
822 cx_popsub|5.023008|5.023008|xu
823 cx_popsub_args|5.023008|5.023008|xu
824 cx_popsub_common|5.023008|5.023008|xu
825 cx_popwhen|5.027008|5.027008|xu
826 cx_pushblock|5.023008|5.023008|xu
827 cx_pusheval|5.023008|5.023008|xu
828 cx_pushformat|5.023008|5.023008|xu
829 cx_pushgiven|5.027008|5.027008|xu
830 cx_pushloop_for|5.023008|5.023008|xu
831 cx_pushloop_plain|5.023008|5.023008|xu
832 cx_pushsub|5.023008|5.023008|xu
833 cx_pushwhen|5.027008|5.027008|xu
834 cx_topblock|5.023008|5.023008|xu
835 dAX|5.007002|5.003007|p
836 dAXMARK|5.009003|5.003007|p
837 deb|5.007003|5.007003|vu
838 deb_curcv|5.007002||Viu
839 deb_nocontext|5.007003|5.007003|vnu
840 debop|5.005000|5.005000|u
841 debprof|5.005000||Viu
842 debprofdump|5.005000|5.005000|u
843 debstack|5.007003|5.007003|u
844 deb_stack_all|5.008001||Viu
845 deb_stack_n|5.008001||Viu
846 debstackptrs|5.007003|5.007003|u
847 debug_start_match|5.009004||Viu
848 DECLARATION_FOR_LC_NUMERIC_MANIPULATION|5.021010|5.021010|
849 defelem_target|5.019002||Viu
850 DEFSV|5.004005|5.003007|poVu
851 DEFSV_set|5.010001||pVu
852 delete_eval_scope|5.009004||xViu
853 delimcpy|5.004000|5.004000|nu
854 delimcpy_no_escape|5.025005||nViu
855 del_sv|5.005000||Viu
856 despatch_signals|5.007001|5.007001|u
857 destroy_matcher|5.027008||Viu
858 die|5.006000|5.003007|v
859 die_nocontext|5.006000||vnVu
860 die_sv|5.013001|5.003007|p
861 die_unwind|5.013001||Viu
862 dirp_dup|5.013007|5.013007|u
863 dITEMS|5.007002|5.003007|p
864 div128|5.005000||Viu
865 djSP|||i
866 dMARK|5.003007|5.003007|
867 dMULTICALL|5.009003|5.009003|
868 dMY_CXT|5.009000|5.009000|p
869 dMY_CXT_SV|5.007003||poVu
870 dNOOP|5.006000|5.003007|poVu
871 do_aexec5|5.006000||Viu
872 do_aexec|||iu
873 do_aspawn|5.008000||Vu
874 do_binmode|5.004005|5.004005|du
875 docatch|5.005000||Vi
876 do_chomp|5.003007||Viu
877 do_close|5.003007|5.003007|u
878 do_delete_local|5.011000||Viu
879 do_dump_pad|5.008001||Vi
880 do_eof|5.003007||Viu
881 does_utf8_overflow|5.025006||nViu
882 doeval_compile|5.023008||Viu
883 do_exec3|5.006000||Viu
884 do_exec|5.003007||Viu
885 dofile|5.005003||Viu
886 dofindlabel|5.003007||Viu
887 doform|5.005000||Viu
888 do_gv_dump|5.006000|5.006000|u
889 do_gvgv_dump|5.006000|5.006000|u
890 do_hv_dump|5.006000|5.006000|u
891 doing_taint|5.008001|5.008001|nu
892 do_ipcctl|5.003007||Viu
893 do_ipcget|5.003007||Viu
894 do_join|5.003007|5.003007|u
895 do_magic_dump|5.006000|5.006000|u
896 do_msgrcv|5.003007||Viu
897 do_msgsnd|5.003007||Viu
898 do_ncmp|5.015001||Viu
899 do_oddball|5.006000||Viu
900 dooneliner|5.006000||Viu
901 do_op_dump|5.006000|5.006000|u
902 do_open|5.003007|5.003007|u
903 do_open6|5.019010||xViu
904 do_open9|5.006000|5.006000|du
905 do_openn|5.007001|5.007001|u
906 doopen_pm|5.008001||Viu
907 do_open_raw|5.019010||xViu
908 doparseform|5.005000||Viu
909 do_pmop_dump|5.006000|5.006000|u
910 dopoptoeval|5.003007||Viu
911 dopoptogivenfor|5.027008||Viu
912 dopoptolabel|5.005000||Viu
913 dopoptoloop|5.005000||Viu
914 dopoptosub_at|5.005000||Viu
915 dopoptowhen|5.027008||Viu
916 do_print|5.003007||Viu
917 do_readline|5.003007||Viu
918 doref|5.009003|5.009003|u
919 dORIGMARK|5.003007|5.003007|
920 do_seek|5.003007||Viu
921 do_semop|5.003007||Viu
922 do_shmio|5.003007||Viu
923 do_smartmatch|5.027008||Viu
924 do_spawn|5.008000||Vu
925 do_spawn_nowait|5.008000||Vu
926 do_sprintf|5.003007|5.003007|u
927 do_sv_dump|5.006000|5.006000|u
928 do_sysseek|5.004000||Viu
929 do_tell|5.003007||Viu
930 do_trans|5.003007||Viu
931 do_trans_complex|5.006001||Viu
932 do_trans_complex_utf8|5.006001||Viu
933 do_trans_count|5.006001||Viu
934 do_trans_count_utf8|5.006001||Viu
935 do_trans_simple|5.006001||Viu
936 do_trans_simple_utf8|5.006001||Viu
937 DOUBLEINFBYTES|5.023000|5.023000|
938 DOUBLEKIND|5.021006|5.021006|
939 DOUBLEMANTBITS|5.023000|5.023000|
940 DOUBLENANBYTES|5.023000|5.023000|
941 DOUBLESIZE|5.005000|5.005000|
942 dounwind|5.003007|5.003007|u
943 DO_UTF8|5.006000|5.006000|
944 do_vecget|5.006000||Viu
945 do_vecset|5.003007||Viu
946 do_vop|5.003007||Viu
947 dowantarray|5.003007|5.003007|u
948 drand48_init_r|||nciu
949 drand48_r|||nciu
950 dSAVEDERRNO|||i
951 dSAVE_ERRNO|||i
952 dSP|5.003007|5.003007|
953 dTHR|5.004005|5.003007|p
954 dTHX|5.003007|5.003007|p
955 dTHXa|5.006000||pVu
956 dTHXoa|5.006000||pVu
957 dTHXR||5.003007|pou
958 dtrace_probe_call|||ciu
959 dtrace_probe_load|||ciu
960 dtrace_probe_op|||ciu
961 dtrace_probe_phase|||ciu
962 dump_all|5.006000|5.006000|
963 dump_all_perl|5.011000||Viu
964 dump_c_backtrace|5.021001||V
965 dump_eval|5.006000|5.006000|u
966 dump_exec_pos|5.009004||Viu
967 dump_form|5.006000|5.006000|u
968 dump_indent|5.006000|5.006000|vu
969 dump_mstats|5.003007||Vu
970 dump_packsubs|5.006000|5.006000|
971 dump_packsubs_perl|5.011000||Viu
972 dump_regex_sets_structures|5.025006||Viu
973 dump_sub|5.006000|5.006000|u
974 dump_sub_perl|5.011000||Viu
975 dump_sv_child|5.009003||Viu
976 dump_trie|5.009004||Viu
977 dump_trie_interim_list|5.009004||Viu
978 dump_trie_interim_table|5.009004||Viu
979 dumpuntil|5.005000||Viu
980 dump_vindent|5.006000|5.006000|u
981 dUNDERBAR|5.009002|5.003007|p
982 dup_attrlist|5.006000||Viu
983 dup_warnings|||ciu
984 dVAR|5.009003|5.003007|p
985 dXCPT|5.009002|5.003007|p
986 dXSARGS|5.003007|5.003007|
987 dXSI32|5.003007|5.003007|V
988 dXSTARG|5.006000|5.003007|poVu
989 edit_distance|5.023008||nViu
990 emulate_cop_io|||xciu
991 emulate_setlocale|5.027009||nViu
992 END_EXTERN_C|5.005000|5.003007|poVu
993 ENTER|5.003007|5.003007|
994 ENTER_with_name|5.011002|5.011002|
995 ERRSV|5.004005|5.003007|p
996 eval_pv|5.006000|5.003007|p
997 eval_sv|5.006000|5.003007|p
998 exec_failed|5.009004||Viu
999 expect_number|5.007001||Viu
1000 EXTEND|5.003007|5.003007|
1001 EXTERN_C|5.005000|5.003007|poVu
1002 F0convert|5.009003||nViu
1003 fbm_compile|5.005000|5.005000|
1004 fbm_instr|5.005000|5.005000|
1005 feature_is_enabled|||ciu
1006 filter_add|5.003007|5.003007|
1007 filter_del|5.003007|5.003007|u
1008 filter_gets|5.005000||Viu
1009 filter_read|5.003007|5.003007|
1010 finalize_op|5.015002||Viu
1011 finalize_optree|5.015002||Vi
1012 find_and_forget_pmops|5.009005||Viu
1013 find_array_subscript|5.009004||Viu
1014 find_beginning|5.005000||Viu
1015 find_byclass|5.006000||Viu
1016 find_default_stash|5.019004||Viu
1017 find_hash_subscript|5.009004||Viu
1018 find_in_my_stash|5.006001||Viu
1019 find_lexical_cv|5.019001||Viu
1020 find_next_masked|5.027009||nViu
1021 find_runcv|5.008001|5.008001|
1022 find_runcv_where|5.017002||Viu
1023 find_rundefsv|5.013002|5.013002|
1024 find_rundefsvoffset|5.009002|5.009002|d
1025 find_script|5.004005||Viu
1026 find_span_end|5.027009||nViu
1027 find_span_end_mask|5.027009||nViu
1028 find_uninit_var|5.009002||xVi
1029 first_symbol|5.009003||nViu
1030 fixup_errno_string|5.019007||Viu
1031 fold_constants|5.003007||Viu
1032 foldEQ|5.013002|5.013002|n
1033 foldEQ_latin1|5.013008|5.013008|nu
1034 foldEQ_latin1_s2_folded|5.029007||nViu
1035 foldEQ_locale|5.013002|5.013002|n
1036 foldEQ_utf8|5.013002|5.007003|p
1037 foldEQ_utf8_flags|5.013010||cVu
1038 forbid_setid|5.005000||Viu
1039 force_ident|5.003007||Viu
1040 force_ident_maybe_lex|5.017004||Viu
1041 force_list|5.003007||Viu
1042 force_next|5.003007||Viu
1043 _force_out_malformed_utf8_message|5.025009||cVu
1044 force_strict_version|5.011004||Viu
1045 force_version|5.005000||Viu
1046 force_word|5.003007||Viu
1047 forget_pmop|5.017007||Viu
1048 form|5.006000|5.004000|v
1049 form_nocontext|5.006000||vnVu
1050 form_short_octal_warning|5.017008||Viu
1051 fp_dup|5.007003|5.007003|u
1052 fprintf_nocontext|5.006000||vndVu
1053 free_c_backtrace|5.021001||Vi
1054 free_global_struct|5.009003||Vu
1055 free_tied_hv_pool|5.008001||Viu
1056 FREETMPS|5.003007|5.003007|
1057 free_tmps|5.003007|5.003007|u
1058 G_ARRAY|5.003007|5.003007|
1059 G_DISCARD|5.003007|5.003007|
1060 gen_constant_list|5.003007||Viu
1061 get_and_check_backslash_N_name|5.017006||cViu
1062 get_and_check_backslash_N_name_wrapper|5.029009||Viu
1063 get_ANYOF_cp_list_for_ssc|5.019005||Viu
1064 get_ANYOFM_contents|5.027009||Viu
1065 get_aux_mg|5.011000||Viu
1066 get_av|5.006000|5.003007|p
1067 get_c_backtrace|5.021001||Vi
1068 get_c_backtrace_dump|5.021001||V
1069 get_context|5.006000|5.006000|nu
1070 get_cv|5.006000|5.003007|p
1071 get_cvn_flags|5.009005|5.003007|p
1072 get_cvs|5.011000||pVu
1073 getcwd_sv|5.007002|5.007002|
1074 get_db_sub|||iu
1075 get_debug_opts|5.008001||Viu
1076 getenv_len|5.006000||Viu
1077 get_hash_seed|5.008001||Viu
1078 get_hv|5.006000|5.003007|p
1079 get_invlist_iter_addr|5.015001||nViu
1080 get_invlist_offset_addr|5.019002||nViu
1081 get_invlist_previous_index_addr|5.017004||nViu
1082 get_mstats|5.006000||Vu
1083 get_no_modify|5.005000||Viu
1084 get_num|5.008001||Viu
1085 get_opargs|5.005000||Viu
1086 get_op_descs|5.005000|5.005000|u
1087 get_op_names|5.005000|5.005000|u
1088 get_ppaddr|5.006000|5.006000|u
1089 get_re_arg|||xciu
1090 _get_regclass_nonbitmap_data|5.019009||cViu
1091 get_regex_charset_name|5.031004||nViu
1092 get_sv|5.006000|5.003007|p
1093 GetVars|5.006000||Vu
1094 get_vtbl|5.005003|5.005003|u
1095 G_EVAL|5.003007|5.003007|
1096 GIMME|5.003007|5.003007|
1097 GIMME_V|5.004000|5.004000|
1098 glob_2number|5.009004||Viu
1099 glob_assign_glob|5.009004||Viu
1100 G_METHOD|5.006001|5.003007|p
1101 G_METHOD_NAMED|5.019002|5.019002|
1102 G_NOARGS|5.003007|5.003007|
1103 gp_dup|5.007003|5.007003|u
1104 gp_free|5.003007|5.003007|u
1105 gp_ref|5.003007|5.003007|u
1106 grok_atoUV|5.021010||ncVi
1107 grok_bin|5.007003|5.003007|p
1108 grok_bslash_c|5.013001||cViu
1109 grok_bslash_N|5.017003||Viu
1110 grok_bslash_o|5.013003||cViu
1111 grok_bslash_x|5.017002||cViu
1112 grok_hex|5.007003|5.003007|p
1113 grok_infnan|5.021004|5.021004|
1114 grok_number|5.007002|5.003007|p
1115 grok_number_flags|5.021002|5.021002|
1116 GROK_NUMERIC_RADIX|5.007002|5.003007|p
1117 grok_numeric_radix|5.007002|5.003007|p
1118 grok_oct|5.007003|5.003007|p
1119 group_end|5.007003||Viu
1120 G_SCALAR|5.003007|5.003007|
1121 GV_ADD|5.003007|5.003007|
1122 gv_add_by_type|5.011000|5.011000|u
1123 Gv_AMupdate|5.011000|5.011000|u
1124 gv_autoload4|5.004000|5.004000|u
1125 gv_autoload_pv|5.015004|5.015004|u
1126 gv_autoload_pvn|5.015004|5.015004|u
1127 gv_autoload_sv|5.015004|5.015004|u
1128 GvAV|5.003007|5.003007|
1129 gv_AVadd|5.003007|5.003007|u
1130 gv_check|5.003007|5.003007|u
1131 gv_const_sv|5.009003|5.009003|
1132 GvCV|5.003007|5.003007|
1133 gv_dump|5.006000|5.006000|u
1134 gv_efullname3|5.003007|5.003007|u
1135 gv_efullname4|5.006001|5.006001|u
1136 gv_efullname|5.003007|5.003007|du
1137 gv_fetchfile|5.003007|5.003007|u
1138 gv_fetchfile_flags|5.009005|5.009005|u
1139 gv_fetchmeth|5.003007|5.003007|
1140 gv_fetchmeth_autoload|5.007003|5.007003|
1141 gv_fetchmeth_internal|5.021007||Viu
1142 gv_fetchmethod|5.003007|5.003007|
1143 gv_fetchmethod_autoload|5.004000|5.004000|
1144 gv_fetchmethod_pv_flags|5.015004|5.015004|xu
1145 gv_fetchmethod_pvn_flags|5.015004|5.015004|xu
1146 gv_fetchmethod_sv_flags|5.015004|5.015004|xu
1147 gv_fetchmeth_pv|5.015004|5.015004|
1148 gv_fetchmeth_pv_autoload|5.015004|5.015004|
1149 gv_fetchmeth_pvn|5.015004|5.015004|
1150 gv_fetchmeth_pvn_autoload|5.015004|5.015004|
1151 gv_fetchmeth_sv|5.015004|5.015004|
1152 gv_fetchmeth_sv_autoload|5.015004|5.015004|
1153 gv_fetchpv|5.003007|5.003007|u
1154 gv_fetchpvn_flags|5.009002|5.003007|pu
1155 gv_fetchpvs|5.009004||pVu
1156 gv_fetchsv|5.009002|5.003007|pu
1157 gv_fullname3|5.003007|5.003007|u
1158 gv_fullname4|5.006001|5.006001|u
1159 gv_fullname|5.003007|5.003007|du
1160 gv_handler|5.007001|5.007001|u
1161 GvHV|5.003007|5.003007|
1162 gv_HVadd|5.003007|5.003007|u
1163 gv_init|5.003007|5.003007|
1164 gv_init_pv|5.015004|5.015004|
1165 gv_init_pvn|5.015004|5.003007|p
1166 gv_init_sv|5.015004|5.015004|
1167 gv_init_svtype|5.015004||Viu
1168 gv_IOadd|5.003007|5.003007|u
1169 gv_is_in_main|5.019004||Viu
1170 gv_magicalize|5.019004||Viu
1171 gv_magicalize_isa|5.013005||Viu
1172 gv_name_set|5.009004|5.009004|u
1173 GV_NOADD_MASK|5.009005|5.003007|poVu
1174 G_VOID|5.004000|5.004000|
1175 gv_override|5.019006||Viu
1176 gv_setref|5.021005||Viu
1177 gv_stashpv|5.003007|5.003007|
1178 gv_stashpvn|5.003007|5.003007|p
1179 gv_stashpvn_internal|5.021004||Viu
1180 gv_stashpvs|5.009003|5.003007|p
1181 gv_stashsv|5.003007|5.003007|
1182 gv_stashsvpvn_cached|5.021004||Viu
1183 GV_SUPER|5.017004|5.017004|
1184 GvSV|5.003007|5.003007|
1185 gv_SVadd|||u
1186 GvSVn|5.009003||pVu
1187 gv_try_downgrade|5.011002||xcVi
1188 handle_named_backref|5.023008||Viu
1189 handle_possible_posix|5.023008||Viu
1190 handle_regex_sets|5.017009||Viu
1191 handle_user_defined_property|5.029008||cViu
1192 he_dup|5.007003|5.007003|u
1193 HEf_SVKEY|5.003007|5.003007|p
1194 HeHASH|5.003007|5.003007|
1195 hek_dup|5.009000|5.009000|u
1196 HeKEY|5.003007|5.003007|
1197 HeKLEN|5.003007|5.003007|
1198 HePV|5.004000|5.004000|
1199 HeSVKEY|5.003007|5.003007|
1200 HeSVKEY_force|5.003007|5.003007|
1201 HeSVKEY_set|5.004000|5.004000|
1202 HeUTF8|5.010001|5.008000|p
1203 HeVAL|5.003007|5.003007|
1204 hfree_next_entry|||iu
1205 hsplit|5.005000||Viu
1206 hv_assert|5.008009|5.008009|
1207 hv_auxinit|5.009003||Viu
1208 hv_auxinit_internal|5.019010||nViu
1209 hv_backreferences_p|||xiu
1210 hv_bucket_ratio|5.025003|5.025003|x
1211 hv_clear|5.003007|5.003007|
1212 hv_clear_placeholders|5.009001|5.009001|
1213 hv_common|5.010000|5.010000|u
1214 hv_common_key_len|5.010000|5.010000|u
1215 hv_copy_hints_hv|5.009004|5.009004|
1216 hv_delayfree_ent|5.004000|5.004000|u
1217 hv_delete|5.003007|5.003007|
1218 hv_delete_common|5.009001||xViu
1219 hv_delete_ent|5.003007|5.003007|
1220 hv_eiter_p|5.009003|5.009003|u
1221 hv_eiter_set|5.009003|5.009003|u
1222 HvENAME|5.013007|5.013007|
1223 hv_ename_add|5.013007||Vi
1224 hv_ename_delete|5.013007||Vi
1225 HvENAMELEN|5.015004|5.015004|
1226 HvENAMEUTF8|5.015004|5.015004|
1227 hv_exists|5.003007|5.003007|
1228 hv_exists_ent|5.003007|5.003007|
1229 hv_fetch|5.003007|5.003007|
1230 hv_fetch_ent|5.003007|5.003007|
1231 hv_fetchs|5.009003|5.003007|p
1232 HvFILL|5.003007|5.003007|
1233 hv_fill|5.013002|5.013002|
1234 hv_free_ent|5.004000|5.004000|u
1235 hv_free_ent_ret|5.015000||Viu
1236 hv_free_entries|5.027002||Viu
1237 hv_iterinit|5.003007|5.003007|
1238 hv_iterkey|5.003007|5.003007|
1239 hv_iterkeysv|5.003007|5.003007|
1240 hv_iternext|5.003007|5.003007|
1241 hv_iternext_flags|5.008000|5.008000|x
1242 hv_iternextsv|5.003007|5.003007|
1243 hv_iterval|5.003007|5.003007|
1244 hv_kill_backrefs|||xiu
1245 hv_ksplit|5.003007|5.003007|u
1246 hv_magic|5.003007|5.003007|
1247 hv_magic_check|5.006000||nViu
1248 HvNAME|5.003007|5.003007|
1249 HvNAME_get|5.009003||pVu
1250 HvNAMELEN|5.015004|5.015004|
1251 HvNAMELEN_get|5.009003||pVu
1252 hv_name_set|5.009003|5.009003|u
1253 HvNAMEUTF8|5.015004|5.015004|
1254 hv_notallowed|5.008000||Viu
1255 hv_placeholders_get|5.009003|5.009003|u
1256 hv_placeholders_p|||ciu
1257 hv_placeholders_set|5.009003|5.009003|u
1258 hv_pushkv|5.027003||Viu
1259 hv_rand_set|5.018000|5.018000|u
1260 hv_riter_p|5.009003|5.009003|u
1261 hv_riter_set|5.009003|5.009003|u
1262 hv_scalar|5.009001|5.009001|
1263 hv_store|5.003007|5.003007|
1264 hv_store_ent|5.003007|5.003007|
1265 hv_store_flags|5.008000|5.008000|xu
1266 hv_stores|5.009004|5.003007|p
1267 hv_undef|5.003007|5.003007|
1268 hv_undef_flags|||ciu
1269 I16SIZE|5.006000|5.006000|
1270 I16TYPE|5.006000|5.006000|
1271 I32SIZE|5.006000|5.006000|
1272 I32TYPE|5.006000|5.006000|
1273 I8SIZE|5.006000|5.006000|
1274 I8TYPE|5.006000|5.006000|
1275 ibcmp|5.003007|5.003007|
1276 ibcmp_locale|5.004000|5.004000|
1277 ibcmp_utf8|5.007003|5.007003|u
1278 incline|5.005000||Viu
1279 incpush|5.005000||Viu
1280 incpush_if_exists|5.009003||Viu
1281 incpush_use_sep|5.011000||Viu
1282 ingroup|5.003007||Viu
1283 init_argv_symbols|5.007003||Viu
1284 init_constants|5.017003||Viu
1285 init_dbargs|||iu
1286 init_debugger|5.005000||Viu
1287 init_global_struct|5.009003||Vu
1288 init_i18nl10n|5.006000||cVu
1289 init_i18nl14n|5.006000||dcVu
1290 initialize_invlist_guts|5.029002||Viu
1291 init_ids|5.005000||Viu
1292 init_interp|5.005000||Viu
1293 init_main_stash|5.005000||Viu
1294 init_named_cv|5.027010||cViu
1295 init_perllib|5.005000||Viu
1296 init_postdump_symbols|5.005000||Viu
1297 init_predump_symbols|5.005000||Viu
1298 init_stacks|5.005000|5.005000|u
1299 init_tm|5.007002|5.007002|u
1300 init_uniprops|5.027011||Viu
1301 IN_LOCALE|5.007002|5.004000|p
1302 IN_LOCALE_COMPILETIME|5.007002|5.004000|p
1303 IN_LOCALE_RUNTIME|5.007002|5.004000|p
1304 IN_PERL_COMPILETIME|5.008001|5.003007|poVu
1305 inplace_aassign|5.015003||Viu
1306 instr|5.003007|5.003007|n
1307 INT2PTR|5.006000|5.003007|p
1308 intro_my|5.004000|5.004000|
1309 INTSIZE|5.003007|5.003007|
1310 intuit_method|5.005000||Viu
1311 intuit_more|5.003007||Viu
1312 _inverse_folds|5.027011||cViu
1313 invert|5.003007||Viu
1314 invlist_array|5.013010||nViu
1315 _invlist_array_init|5.015001||nViu
1316 invlist_clear|5.023009||Viu
1317 invlist_clone|5.015001||cViu
1318 _invlist_contains_cp|5.017003||nViu
1319 invlist_contents|5.023008||Viu
1320 _invlist_dump|5.019003||cViu
1321 _invlistEQ|5.023006||cViu
1322 invlist_extend|5.013010||Viu
1323 invlist_highest|5.017002||nViu
1324 _invlist_intersection|5.015001||Viu
1325 _invlist_intersection_maybe_complement_2nd|5.015008||cViu
1326 _invlist_invert|5.015001||cViu
1327 invlist_is_iterating|5.017008||nViu
1328 invlist_iterfinish|5.017008||nViu
1329 invlist_iterinit|5.015001||nViu
1330 invlist_iternext|5.015001||nViu
1331 _invlist_len|5.017004||nViu
1332 invlist_max|5.013010||nViu
1333 invlist_previous_index|5.017004||nViu
1334 invlist_replace_list_destroys_src|5.023009||Viu
1335 _invlist_search|5.017003||ncViu
1336 invlist_set_len|5.013010||Viu
1337 invlist_set_previous_index|5.017004||nViu
1338 _invlist_subtract|5.015001||Viu
1339 invlist_trim|5.013010||nViu
1340 _invlist_union|5.015001||cVu
1341 _invlist_union_maybe_complement_2nd|5.015008||cViu
1342 invoke_exception_hook|5.013001||Viu
1343 io_close|5.003007||Viu
1344 isALNUM|5.003007|5.003007|p
1345 isALNUM_A|5.031003|5.003007|p
1346 isALNUMC|5.006000|5.003007|p
1347 isALNUMC_A|5.013006|5.003007|p
1348 isALNUMC_L1|5.013006|5.003007|p
1349 isALNUMC_LC|5.006000|5.006000|
1350 isALNUMC_LC_uvchr|5.017007|5.017007|
1351 isALNUM_lazy|5.017008||dcVu
1352 isALNUM_LC|5.004000|5.004000|
1353 isALNUM_LC_uvchr|5.007001|5.007001|
1354 isa_lookup|5.005000||Viu
1355 isALPHA|5.003007|5.003007|p
1356 isALPHA_A|5.013006|5.003007|p
1357 isALPHA_L1|5.013006|5.003007|p
1358 isALPHA_LC|5.004000|5.004000|
1359 isALPHA_LC_utf8_safe|5.025009|5.025009|
1360 isALPHA_LC_uvchr|5.007001|5.007001|
1361 isALPHANUMERIC|5.017008|5.003007|p
1362 isALPHANUMERIC_A|5.017008|5.003007|p
1363 isALPHANUMERIC_L1|5.017008|5.003007|p
1364 isALPHANUMERIC_LC|5.017008|5.017008|
1365 isALPHANUMERIC_LC_utf8_safe|5.025009|5.025009|
1366 isALPHANUMERIC_LC_uvchr|5.017008|5.017008|
1367 isALPHANUMERIC_utf8|5.017008|5.017008|
1368 isALPHANUMERIC_utf8_safe|5.025009|5.025009|
1369 isALPHANUMERIC_uvchr|5.023009|5.023009|
1370 isALPHA_utf8|5.006000|5.006000|
1371 isALPHA_utf8_safe|5.025009|5.025009|
1372 isALPHA_uvchr|5.023009|5.023009|
1373 is_an_int|5.005000||Viu
1374 isASCII|5.006000|5.003007|p
1375 isASCII_A|5.013006|5.003007|p
1376 isASCII_L1|5.015004|5.003007|p
1377 isASCII_LC|5.015008|5.015008|
1378 isASCII_LC_utf8_safe|5.025009|5.025009|
1379 isASCII_LC_uvchr|5.017007|5.017007|
1380 is_ascii_string|5.011000|5.011000|n
1381 isASCII_utf8|5.006000|5.006000|
1382 isASCII_utf8_safe|5.025009|5.025009|
1383 isASCII_uvchr|5.023009|5.023009|
1384 isBLANK|5.006001|5.003007|p
1385 isBLANK_A|5.013006|5.003007|p
1386 isBLANK_L1|5.013006|5.003007|p
1387 isBLANK_LC|5.006001|5.006001|
1388 isBLANK_LC_utf8_safe|5.025009|5.025009|
1389 isBLANK_LC_uvchr|5.017007|5.017007|
1390 isBLANK_utf8|5.006001|5.006001|
1391 isBLANK_utf8_safe|5.025009|5.025009|
1392 isBLANK_uvchr|5.023009|5.023009|
1393 isC9_STRICT_UTF8_CHAR|5.025005|5.025005|n
1394 is_c9strict_utf8_string|5.025006|5.025006|n
1395 is_c9strict_utf8_string_loc|5.025006|5.025006|n
1396 is_c9strict_utf8_string_loclen|5.025006|5.025006|n
1397 isCNTRL|5.006000|5.003007|p
1398 isCNTRL_A|5.013006|5.003007|p
1399 isCNTRL_L1|5.013006|5.003007|p
1400 isCNTRL_LC|5.006000|5.006000|
1401 isCNTRL_LC_utf8_safe|5.025009|5.025009|
1402 isCNTRL_LC_uvchr|5.007001|5.007001|
1403 isCNTRL_utf8|5.006000|5.006000|
1404 isCNTRL_utf8_safe|5.025009|5.025009|
1405 isCNTRL_uvchr|5.023009|5.023009|
1406 _is_cur_LC_category_utf8|5.021001||cVu
1407 isDIGIT|5.003007|5.003007|p
1408 isDIGIT_A|5.013006|5.003007|p
1409 isDIGIT_L1|5.013006|5.003007|p
1410 isDIGIT_LC|5.004000|5.004000|
1411 isDIGIT_LC_utf8_safe|5.025009|5.025009|
1412 isDIGIT_LC_uvchr|5.007001|5.007001|
1413 isDIGIT_utf8|5.006000|5.006000|
1414 isDIGIT_utf8_safe|5.025009|5.025009|
1415 isDIGIT_uvchr|5.023009|5.023009|
1416 isFF_OVERLONG|5.025007||nViu
1417 isFOO_lc|5.017007||cViu
1418 isFOO_utf8_lc|5.017008||Viu
1419 isGCB|5.021009||Viu
1420 isGRAPH|5.006000|5.003007|p
1421 isGRAPH_A|5.013006|5.003007|p
1422 _is_grapheme|5.025009||Viu
1423 isGRAPH_L1|5.013006|5.003007|p
1424 isGRAPH_LC|5.006000|5.006000|
1425 isGRAPH_LC_utf8_safe|5.025009|5.025009|
1426 isGRAPH_LC_uvchr|5.007001|5.007001|
1427 isGRAPH_utf8|5.006000|5.006000|
1428 isGRAPH_utf8_safe|5.025009|5.025009|
1429 isGRAPH_uvchr|5.023009|5.023009|
1430 isGV_with_GP|5.009004||pVu
1431 is_handle_constructor|5.006000||nViu
1432 isIDCONT|5.017008|5.003007|p
1433 isIDCONT_A|5.017008|5.003007|p
1434 isIDCONT_L1|5.017008|5.003007|p
1435 isIDCONT_LC|5.017008|5.017008|
1436 isIDCONT_LC_utf8_safe|5.025009|5.025009|
1437 isIDCONT_LC_uvchr|5.017008|5.017008|
1438 isIDCONT_utf8|5.013010|5.013010|
1439 isIDCONT_utf8_safe|5.025009|5.025009|
1440 isIDCONT_uvchr|5.023009|5.023009|
1441 isIDFIRST|5.003007|5.003007|p
1442 isIDFIRST_A|5.013006|5.003007|p
1443 isIDFIRST_L1|5.013006|5.003007|p
1444 isIDFIRST_lazy|5.017008||dcVu
1445 isIDFIRST_LC|5.004000|5.004000|
1446 isIDFIRST_LC_utf8_safe|5.025009|5.025009|
1447 isIDFIRST_LC_uvchr|5.007001|5.007001|
1448 isIDFIRST_utf8|5.006000|5.006000|
1449 isIDFIRST_utf8_safe|5.025009|5.025009|
1450 isIDFIRST_uvchr|5.023009|5.023009|
1451 isinfnan|5.021004|5.021004|n
1452 isinfnansv|5.021005||Viu
1453 _is_in_locale_category|5.021001||cViu
1454 is_invariant_string|5.021007|5.011000|pn
1455 is_invlist|5.029002||nViu
1456 isLB|5.023007||Viu
1457 isLOWER|5.003007|5.003007|p
1458 isLOWER_A|5.013006|5.003007|p
1459 isLOWER_L1|5.013006|5.003007|p
1460 isLOWER_LC|5.004000|5.004000|
1461 isLOWER_LC_utf8_safe|5.025009|5.025009|
1462 isLOWER_LC_uvchr|5.007001|5.007001|
1463 isLOWER_utf8|5.006000|5.006000|
1464 isLOWER_utf8_safe|5.025009|5.025009|
1465 isLOWER_uvchr|5.023009|5.023009|
1466 is_lvalue_sub|5.007001|5.007001|u
1467 IS_NUMBER_GREATER_THAN_UV_MAX|5.007002|5.003007|p
1468 IS_NUMBER_INFINITY|5.007002|5.003007|p
1469 IS_NUMBER_IN_UV|5.007002|5.003007|p
1470 IS_NUMBER_NAN|5.007003|5.003007|p
1471 IS_NUMBER_NEG|5.007002|5.003007|p
1472 IS_NUMBER_NOT_INT|5.007002|5.003007|p
1473 isOCTAL|5.013005|5.003007|p
1474 isOCTAL_A|5.013006|5.003007|p
1475 isOCTAL_L1|5.013006|5.003007|p
1476 isPRINT|5.004000|5.003007|p
1477 isPRINT_A|5.013006|5.003007|p
1478 isPRINT_L1|5.013006|5.003007|p
1479 isPRINT_LC|5.004000|5.004000|
1480 isPRINT_LC_utf8_safe|5.025009|5.025009|
1481 isPRINT_LC_uvchr|5.007001|5.007001|
1482 isPRINT_utf8|5.006000|5.006000|
1483 isPRINT_utf8_safe|5.025009|5.025009|
1484 isPRINT_uvchr|5.023009|5.023009|
1485 isPSXSPC|5.006001|5.003007|p
1486 isPSXSPC_A|5.013006|5.003007|p
1487 isPSXSPC_L1|5.013006|5.003007|p
1488 isPSXSPC_LC|5.006001|5.006001|
1489 isPSXSPC_LC_utf8_safe|5.025009|5.025009|
1490 isPSXSPC_LC_uvchr|5.017007|5.017007|
1491 isPSXSPC_utf8|5.006001|5.006001|
1492 isPSXSPC_utf8_safe|5.025009|5.025009|
1493 isPSXSPC_uvchr|5.023009|5.023009|
1494 isPUNCT|5.006000|5.003007|p
1495 isPUNCT_A|5.013006|5.003007|p
1496 isPUNCT_L1|5.013006|5.003007|p
1497 isPUNCT_LC|5.006000|5.006000|
1498 isPUNCT_LC_utf8_safe|5.025009|5.025009|
1499 isPUNCT_LC_uvchr|5.007001|5.007001|
1500 isPUNCT_utf8|5.006000|5.006000|
1501 isPUNCT_utf8_safe|5.025009|5.025009|
1502 isPUNCT_uvchr|5.023009|5.023009|
1503 IS_SAFE_SYSCALL|5.019004|5.019004|
1504 is_safe_syscall|5.019004|5.019004|
1505 isSB|5.021009||Viu
1506 isSCRIPT_RUN|5.027008||cVi
1507 isSPACE|5.003007|5.003007|p
1508 isSPACE_A|5.013006|5.003007|p
1509 isSPACE_L1|5.013006|5.003007|p
1510 isSPACE_LC|5.004000|5.004000|
1511 isSPACE_LC_utf8_safe|5.025009|5.025009|
1512 isSPACE_LC_uvchr|5.007001|5.007001|
1513 isSPACE_utf8|5.006000|5.006000|
1514 isSPACE_utf8_safe|5.025009|5.025009|
1515 isSPACE_uvchr|5.023009|5.023009|
1516 is_ssc_worth_it|5.021005||nViu
1517 isSTRICT_UTF8_CHAR|5.025005|5.025005|n
1518 is_strict_utf8_string|5.025006|5.025006|n
1519 is_strict_utf8_string_loc|5.025006|5.025006|n
1520 is_strict_utf8_string_loclen|5.025006|5.025006|n
1521 is_uni_alnum|5.006000||dcVu
1522 is_uni_alnumc|5.017007||dcVu
1523 is_uni_alnumc_lc|5.017007||dcVu
1524 is_uni_alnum_lc|5.006000||dcVu
1525 is_uni_alpha|5.006000||dcVu
1526 is_uni_alpha_lc|5.006000||dcVu
1527 is_uni_ascii|5.006000||dcVu
1528 is_uni_ascii_lc|5.006000||dcVu
1529 is_uni_blank|5.017002||dcVu
1530 is_uni_blank_lc|5.017007||dcVu
1531 is_uni_cntrl|5.006000||dcVu
1532 is_uni_cntrl_lc|5.006000||dcVu
1533 is_uni_digit|5.006000||dcVu
1534 is_uni_digit_lc|5.006000||dcVu
1535 _is_uni_FOO|5.017008||cVu
1536 is_uni_graph|5.006000||dcVu
1537 is_uni_graph_lc|5.006000||dcVu
1538 is_uni_idfirst|5.006000||dcVu
1539 is_uni_idfirst_lc|5.006000||dcVu
1540 is_uni_lower|5.006000||dcVu
1541 is_uni_lower_lc|5.006000||dcVu
1542 _is_uni_perl_idcont|5.017008||cVu
1543 _is_uni_perl_idstart|5.017007||cVu
1544 is_uni_print|5.006000||dcVu
1545 is_uni_print_lc|5.006000||dcVu
1546 is_uni_punct|5.006000||dcVu
1547 is_uni_punct_lc|5.006000||dcVu
1548 is_uni_space|5.006000||dcVu
1549 is_uni_space_lc|5.006000||dcVu
1550 is_uni_upper|5.006000||dcVu
1551 is_uni_upper_lc|5.006000||dcVu
1552 is_uni_xdigit|5.006000||dcVu
1553 is_uni_xdigit_lc|5.006000||dcVu
1554 isUPPER|5.003007|5.003007|p
1555 isUPPER_A|5.013006|5.003007|p
1556 isUPPER_L1|5.013006|5.003007|p
1557 isUPPER_LC|5.004000|5.004000|
1558 isUPPER_LC_utf8_safe|5.025009|5.025009|
1559 isUPPER_LC_uvchr|5.007001|5.007001|
1560 isUPPER_utf8|5.006000|5.006000|
1561 isUPPER_utf8_safe|5.025009|5.025009|
1562 isUPPER_uvchr|5.023009|5.023009|
1563 is_utf8_alnum|5.006000||dcVu
1564 is_utf8_alnumc|5.017007||dcVu
1565 is_utf8_alpha|5.006000||dcVu
1566 is_utf8_ascii|5.006000||dcVu
1567 is_utf8_blank|5.017002||dcVu
1568 is_utf8_char|5.006000|5.006000|nd
1569 isUTF8_CHAR|5.021001|5.006001|pn
1570 is_utf8_char_buf|5.015008|5.015008|n
1571 isUTF8_CHAR_flags|5.025005|5.025005|
1572 is_utf8_char_helper|5.031004||ncVu
1573 is_utf8_cntrl|5.006000||dcVu
1574 is_utf8_common|5.009003||Viu
1575 is_utf8_common_with_len|5.025009||Viu
1576 is_utf8_cp_above_31_bits|5.025005||nViu
1577 is_utf8_digit|5.006000||dcVu
1578 is_utf8_fixed_width_buf_flags|5.025006|5.025006|n
1579 is_utf8_fixed_width_buf_loc_flags|5.025006|5.025006|n
1580 is_utf8_fixed_width_buf_loclen_flags|5.025006|5.025006|n
1581 _is_utf8_FOO|5.017008||cVu
1582 _is_utf8_FOO_with_len|5.025009||cVu
1583 is_utf8_graph|5.006000||dcVu
1584 is_utf8_idcont|5.008000||dcVu
1585 _is_utf8_idcont|5.021001||cVu
1586 is_utf8_idfirst|5.006000||dcVu
1587 _is_utf8_idstart|5.021001||cVu
1588 is_utf8_invariant_string|5.025005|5.011000|pn
1589 is_utf8_invariant_string_loc|5.027001|5.027001|n
1590 is_utf8_lower|5.006000||dcVu
1591 is_utf8_mark|5.006000|5.006000|dxu
1592 _is_utf8_mark|5.017008||cVu
1593 is_utf8_non_invariant_string|5.027007||ncVi
1594 is_utf8_overlong_given_start_byte_ok|5.025006||nViu
1595 _is_utf8_perl_idcont_with_len|5.025009||cVu
1596 _is_utf8_perl_idstart_with_len|5.025009||cVu
1597 is_utf8_perl_space|5.011001||dcVu
1598 is_utf8_perl_word|5.011001||dcVu
1599 is_utf8_posix_digit|5.011001||dcVu
1600 is_utf8_print|5.006000||dcVu
1601 is_utf8_punct|5.006000||dcVu
1602 is_utf8_space|5.006000||dcVu
1603 is_utf8_string|5.006001|5.006001|n
1604 is_utf8_string_flags|5.025006|5.025006|n
1605 is_utf8_string_loc|5.008001|5.008001|n
1606 is_utf8_string_loc_flags|5.025006|5.025006|n
1607 is_utf8_string_loclen|5.009003|5.009003|n
1608 is_utf8_string_loclen_flags|5.025006|5.025006|n
1609 is_utf8_upper|5.006000||dcVu
1610 is_utf8_valid_partial_char|5.025005|5.025005|n
1611 is_utf8_valid_partial_char_flags|5.025005|5.025005|n
1612 is_utf8_xdigit|5.006000||dcVu
1613 is_utf8_xidcont|5.013010||dcVu
1614 _is_utf8_xidcont|5.021001||cVu
1615 is_utf8_xidfirst|5.013010||dcVu
1616 _is_utf8_xidstart|5.021001||cVu
1617 isWB|5.021009||Viu
1618 isWORDCHAR|5.013006|5.003007|p
1619 isWORDCHAR_A|5.013006|5.003007|p
1620 isWORDCHAR_L1|5.013006|5.003007|p
1621 isWORDCHAR_LC|5.017007|5.017007|
1622 isWORDCHAR_LC_utf8_safe|5.025009|5.025009|
1623 isWORDCHAR_LC_uvchr|5.017007|5.017007|
1624 isWORDCHAR_utf8|5.017006|5.017006|
1625 isWORDCHAR_utf8_safe|5.025009|5.025009|
1626 isWORDCHAR_uvchr|5.023009|5.023009|
1627 isXDIGIT|5.006000|5.003007|p
1628 isXDIGIT_A|5.013006|5.003007|p
1629 isXDIGIT_L1|5.013006|5.003007|p
1630 isXDIGIT_LC|5.017007|5.017007|
1631 isXDIGIT_LC_utf8_safe|5.025009|5.025009|
1632 isXDIGIT_LC_uvchr|5.017007|5.017007|
1633 isXDIGIT_utf8|5.006000|5.006000|
1634 isXDIGIT_utf8_safe|5.025009|5.025009|
1635 isXDIGIT_uvchr|5.023009|5.023009|
1636 items|5.003007|5.003007|V
1637 IVdf|5.006000|5.003007|p
1638 IVSIZE|5.006000|5.003007|p
1639 IVTYPE|5.006000|5.003007|p
1640 ix|5.003007|5.003007|V
1641 jmaybe|5.003007||Viu
1642 join_exact|5.009004||Viu
1643 keyword|5.003007||Viu
1644 keyword_plugin_standard|||iu
1645 LATIN1_TO_NATIVE|5.019004|5.003007|p
1646 LEAVE|5.003007|5.003007|
1647 leave_adjust_stacks|5.023008|5.023008|xu
1648 leave_scope|5.003007|5.003007|u
1649 LEAVE_with_name|5.011002|5.011002|
1650 lex_bufutf8|5.011002|5.011002|x
1651 lex_discard_to|5.011002|5.011002|x
1652 lex_grow_linestr|5.011002|5.011002|x
1653 lex_next_chunk|5.011002|5.011002|x
1654 lex_peek_unichar|5.011002|5.011002|x
1655 lex_read_space|5.011002|5.011002|x
1656 lex_read_to|5.011002|5.011002|x
1657 lex_read_unichar|5.011002|5.011002|x
1658 lex_start|5.009005|5.009005|x
1659 lex_stuff_pv|5.013006|5.013006|x
1660 lex_stuff_pvn|5.011002|5.011002|x
1661 lex_stuff_pvs|5.013005|5.013005|x
1662 lex_stuff_sv|5.011002|5.011002|x
1663 lex_unstuff|5.011002|5.011002|x
1664 LIKELY|5.009004|5.003007|p
1665 LINKLIST|5.013006|5.013006|
1666 list|5.003007||Viu
1667 listkids|5.003007||Viu
1668 load_module|5.006000|5.003007|pv
1669 load_module_nocontext|5.006000||vnVu
1670 localize|5.003007||Viu
1671 LONGDBLINFBYTES|5.023000|5.023000|
1672 LONGDBLMANTBITS|5.023000|5.023000|
1673 LONGDBLNANBYTES|5.023000|5.023000|
1674 LONGSIZE|5.004000|5.003007|
1675 looks_like_bool|5.027008||Viu
1676 looks_like_number|5.003007|5.003007|
1677 lop|5.005000||Viu
1678 lossless_NV_to_IV|5.031001||nViu
1679 LSEEKSIZE|5.006000|5.006000|
1680 LVRET|||i
1681 magic_clear_all_env|5.004001||Viu
1682 magic_cleararylen_p|5.017002||Viu
1683 magic_clearenv|5.003007||Viu
1684 magic_clearhint|5.009004||Vi
1685 magic_clearhints|5.011000||Vi
1686 magic_clearisa|5.010001||Viu
1687 magic_clearpack|5.003007||Viu
1688 magic_clearsig|5.003007||Viu
1689 magic_copycallchecker|5.017000||Viu
1690 magic_dump|5.006000|5.006000|u
1691 magic_existspack|5.003007||Viu
1692 magic_freearylen_p|5.009003||Viu
1693 magic_freeovrld|5.007001||Viu
1694 magic_get|5.003007||Viu
1695 magic_getarylen|5.003007||Viu
1696 magic_getdebugvar|5.021005||Viu
1697 magic_getdefelem|5.004000||Viu
1698 magic_getnkeys|5.004005||Viu
1699 magic_getpack|5.003007||Viu
1700 magic_getpos|5.003007||Viu
1701 magic_getsig|5.003007||Viu
1702 magic_getsubstr|5.004005||Viu
1703 magic_gettaint|5.003007||Viu
1704 magic_getuvar|5.003007||Viu
1705 magic_getvec|5.004005||Viu
1706 magic_killbackrefs|5.006000||Viu
1707 magic_methcall1|5.013001||Viu
1708 magic_methcall|||vi
1709 magic_methpack|5.005000||Viu
1710 magic_nextpack|5.003007||Viu
1711 magic_regdata_cnt|5.006000||Viu
1712 magic_regdatum_get|5.006000||Viu
1713 magic_regdatum_set|5.006001||Viu
1714 magic_scalarpack|5.009001||Viu
1715 magic_set|5.003007||Viu
1716 magic_set_all_env|5.004004||Viu
1717 magic_setarylen|5.003007||Viu
1718 magic_setcollxfrm|5.004000||Viu
1719 magic_setdbline|5.003007||Viu
1720 magic_setdebugvar|5.021005||Viu
1721 magic_setdefelem|5.004000||Viu
1722 magic_setenv|5.003007||Viu
1723 magic_sethint|5.009004||Vi
1724 magic_setisa|5.003007||Viu
1725 magic_setlvref|5.021005||Viu
1726 magic_setmglob|5.003007||Viu
1727 magic_setnkeys|5.003007||Viu
1728 magic_setnonelem|5.027009||Viu
1729 magic_setpack|5.003007||Viu
1730 magic_setpos|5.003007||Viu
1731 magic_setregexp|5.008001||Viu
1732 magic_setsig|5.003007||Viu
1733 magic_setsubstr|5.003007||Viu
1734 magic_settaint|5.003007||Viu
1735 magic_setutf8|5.008001||Viu
1736 magic_setuvar|5.003007||Viu
1737 magic_setvec|5.003007||Viu
1738 magic_sizepack|5.005000||Viu
1739 magic_wipepack|5.003007||Viu
1740 _make_exactf_invlist|5.021007||Viu
1741 make_matcher|5.027008||Viu
1742 make_trie|5.009002||Viu
1743 malloc|5.007002|5.007002|n
1744 malloced_size|5.005000||nViu
1745 malloc_good_size|5.010001||nViu
1746 MARK|5.003007|5.003007|
1747 markstack_grow|5.021001|5.021001|u
1748 matcher_matches_sv|5.027008||Viu
1749 maybe_multimagic_gv|5.019004||Viu
1750 mayberelocate|5.015006||Viu
1751 measure_struct|5.007003||Viu
1752 mem_collxfrm|5.003007||dViu
1753 _mem_collxfrm|5.025002||Viu
1754 memEQ|5.004000|5.003007|p
1755 memEQs|5.009005|5.003007|p
1756 mem_log_alloc|5.024000||nViu
1757 mem_log_common|5.010001||nViu
1758 mem_log_free|5.024000||nViu
1759 mem_log_realloc|5.024000||nViu
1760 memNE|5.004000|5.003007|p
1761 memNEs|5.009005|5.003007|p
1762 mess|5.006000|5.004000|pv
1763 mess_alloc|5.005000||Viu
1764 mess_nocontext|5.006000||pvnVu
1765 mess_sv|5.013001|5.004000|p
1766 mfree|5.007002|5.007002|nu
1767 mg_clear|5.003007|5.003007|
1768 mg_copy|5.003007|5.003007|
1769 mg_dup|5.007003|5.007003|u
1770 mg_find|5.003007|5.003007|n
1771 mg_findext|5.013008|5.003007|pn
1772 mg_find_mglob|5.019002||cViu
1773 mg_free|5.003007|5.003007|
1774 mg_freeext|5.027004|5.027004|
1775 mg_free_type|5.013006|5.013006|
1776 mg_get|5.003007|5.003007|
1777 mg_length|5.005000|5.005000|d
1778 mg_localize|5.009003||Vi
1779 mg_magical|5.003007|5.003007|n
1780 mg_set|5.003007|5.003007|
1781 mg_size|5.005000|5.005000|u
1782 mini_mktime|5.007002|5.007002|nu
1783 minus_v|5.015006||Viu
1784 missingterm|5.005000||Viu
1785 mode_from_discipline|5.006000||Viu
1786 modkids|5.003007||Viu
1787 more_bodies|||iu
1788 more_sv|5.009004||Viu
1789 moreswitches|5.003007|5.003007|u
1790 Move|5.003007|5.003007|
1791 MoveD|5.009002|5.003007|p
1792 move_proto_attr|5.019005||Viu
1793 mPUSHi|5.009002|5.003007|p
1794 mPUSHn|5.009002|5.003007|p
1795 mPUSHp|5.009002|5.003007|p
1796 mPUSHs|5.010001|5.003007|p
1797 mPUSHu|5.009002|5.003007|p
1798 mro_clean_isarev|5.013007||Viu
1799 mro_gather_and_rename|5.013007||Viu
1800 mro_get_from_name|5.010001|5.010001|u
1801 mro_get_linear_isa|5.009005|5.009005|
1802 mro_get_linear_isa_dfs|5.009005||Vi
1803 mro_get_private_data|5.010001|5.010001|
1804 mro_isa_changed_in|5.009005||Vi
1805 mro_meta_dup|5.009005||Viu
1806 mro_meta_init|||ciu
1807 mro_method_changed_in|5.009005|5.009005|
1808 mro_package_moved|5.013006||Vi
1809 mro_register|5.010001|5.010001|
1810 mro_set_mro|5.010001|5.010001|u
1811 mro_set_private_data|5.010001|5.010001|
1812 mul128|5.005000||Viu
1813 MULTICALL|5.009003|5.009003|
1814 multiconcat_stringify|5.027006||cViu
1815 multideref_stringify|5.021009||cViu
1816 MUTABLE_PTR|5.010001||pVu
1817 MUTABLE_SV|5.010001||pVu
1818 mXPUSHi|5.009002|5.003007|p
1819 mXPUSHn|5.009002|5.003007|p
1820 mXPUSHp|5.009002|5.003007|p
1821 mXPUSHs|5.010001|5.003007|p
1822 mXPUSHu|5.009002|5.003007|p
1823 my_atof2|||cu
1824 my_atof3|5.029000||cVu
1825 my_atof|5.006000|5.006000|u
1826 my_attrs|5.006000||Viu
1827 my_bytes_to_utf8|5.021009||nViu
1828 my_chsize|5.003007||Vu
1829 my_clearenv|5.009003||Viu
1830 MY_CXT|5.009000|5.009000|p
1831 MY_CXT_CLONE|5.009002|5.009000|p
1832 my_cxt_index|||u
1833 MY_CXT_INIT|5.009000|5.009000|p
1834 my_cxt_init|5.009000|5.009000|u
1835 my_dirfd|5.009005|5.009005|nu
1836 my_exit|5.003007|5.003007|
1837 my_exit_jump|5.005000||Viu
1838 my_failure_exit|5.004000|5.004000|u
1839 my_fflush_all|5.006000|5.006000|u
1840 my_fork|5.007003|5.007003|nu
1841 my_kid|5.006000||Viu
1842 my_lstat_flags|5.013003||cViu
1843 my_lstat|||u
1844 my_memrchr|5.027006||nViu
1845 my_mkostemp_cloexec|||niu
1846 my_mkostemp|||niu
1847 my_mkstemp_cloexec|||niu
1848 my_mkstemp|||niu
1849 my_nl_langinfo|5.027006||nViu
1850 my_pclose|5.003007|5.003007|u
1851 my_popen|5.003007|5.003007|u
1852 my_popen_list|5.007001|5.007001|u
1853 my_setenv|5.003007|5.003007|
1854 my_snprintf|5.009004|5.003007|pvn
1855 my_socketpair|5.007003|5.007003|nu
1856 my_sprintf|5.009003|5.003007|pnd
1857 my_stat_flags|5.013003||cViu
1858 my_stat|||u
1859 my_strerror|5.021001||Viu
1860 my_strftime|5.007002|5.007002|u
1861 my_strlcat|5.009004|5.003007|pn
1862 my_strlcpy|5.009004|5.003007|pn
1863 my_strnlen|5.027006|5.003007|pn
1864 my_strtod|5.029010|5.029010|n
1865 my_unexec|5.003007||Viu
1866 my_vsnprintf|5.009004|5.009004|n
1867 NATIVE_TO_LATIN1|5.019004|5.003007|p
1868 NATIVE_TO_NEED|5.019004||ndcVu
1869 NATIVE_TO_UNI|5.007001|5.007001|
1870 need_utf8|5.009003||nViu
1871 newANONATTRSUB|5.006000|5.006000|u
1872 newANONHASH|5.003007|5.003007|u
1873 newANONLIST|5.003007|5.003007|u
1874 newANONSUB|5.003007|5.003007|u
1875 newASSIGNOP|5.003007|5.003007|
1876 newATTRSUB|5.006000|5.006000|u
1877 newATTRSUB_x|5.019008||cVi
1878 newAV|5.003007|5.003007|
1879 newAVREF|5.003007|5.003007|u
1880 newBINOP|5.003007|5.003007|
1881 new_collate|5.006000||Viu
1882 newCONDOP|5.003007|5.003007|
1883 new_constant|||iu
1884 newCONSTSUB|5.004005|5.003007|p
1885 newCONSTSUB_flags|5.015006|5.015006|
1886 new_ctype|5.006000||Viu
1887 newCVREF|5.003007|5.003007|u
1888 newDEFSVOP|5.021006|5.021006|
1889 newFORM|5.003007|5.003007|u
1890 newFOROP|5.013007|5.013007|
1891 newGIVENOP|5.009003|5.009003|
1892 newGIVWHENOP|5.027008||Viu
1893 newGP|||xiu
1894 newGVgen|5.003007|5.003007|u
1895 newGVgen_flags|5.015004|5.015004|u
1896 newGVOP|5.003007|5.003007|
1897 newGVREF|5.003007|5.003007|u
1898 new_he|5.005000||Viu
1899 newHV|5.003007|5.003007|
1900 newHVhv|5.005000|5.005000|u
1901 newHVREF|5.003007|5.003007|u
1902 _new_invlist|5.013010||cViu
1903 _new_invlist_C_array|5.015008||cViu
1904 newIO|5.003007|5.003007|u
1905 newLISTOP|5.003007|5.003007|
1906 newLOGOP|5.003007|5.003007|
1907 new_logop|5.005000||Viu
1908 newLOOPEX|5.003007|5.003007|
1909 newLOOPOP|5.003007|5.003007|
1910 newMETHOP|5.021005|5.021005|
1911 newMETHOP_internal|5.021005||Viu
1912 newMETHOP_named|5.021005|5.021005|
1913 new_msg_hv|5.027009||Viu
1914 newMYSUB|5.017004|5.017004|u
1915 newNULLLIST|5.003007|5.003007|
1916 new_numeric|5.006000||Viu
1917 newOP|5.003007|5.003007|
1918 newPADNAMELIST|5.021007|5.021007|nx
1919 newPADNAMEouter|5.021007|5.021007|nx
1920 newPADNAMEpvn|5.021007|5.021007|nx
1921 newPADOP|5.006000||V
1922 newPMOP|5.003007|5.003007|
1923 newPROG|5.003007|5.003007|u
1924 newPVOP|5.003007|5.003007|
1925 newRANGE|5.003007|5.003007|
1926 new_regcurly|5.027001||nViu
1927 newRV|5.003007|5.003007|u
1928 newRV_inc|5.004000|5.003007|p
1929 newRV_noinc|5.004000|5.003007|p
1930 newSLICEOP|5.003007|5.003007|
1931 new_stackinfo|5.005000|5.005000|u
1932 newSTATEOP|5.003007|5.003007|
1933 newSTUB|5.017001||Viu
1934 newSUB|5.003007|5.003007|u
1935 newSV|5.003007|5.003007|
1936 newSVavdefelem|5.019004||Viu
1937 newSVhek|5.009003|5.009003|
1938 newSViv|5.003007|5.003007|
1939 newSVnv|5.006000|5.003007|
1940 newSVOP|5.003007|5.003007|
1941 newSVpadname|5.017004|5.017004|x
1942 newSVpv|5.003007|5.003007|
1943 newSVpvf|5.006000|5.004000|v
1944 newSVpvf_nocontext|5.006000||vnVu
1945 newSVpvn|5.004005|5.003007|p
1946 newSVpvn_flags|5.010001|5.003007|p
1947 newSVpvn_share|5.007001|5.003007|p
1948 newSVpvn_utf8|5.010001|5.003007|p
1949 newSVpvs|5.009003|5.003007|p
1950 newSVpvs_flags|5.010001|5.003007|p
1951 newSVpv_share|5.013006|5.013006|
1952 newSVpvs_share|5.009003|5.003007|p
1953 newSVREF|5.003007|5.003007|u
1954 newSVrv|5.003007|5.003007|
1955 newSVsv|5.003007|5.003007|
1956 newSVsv_flags|5.029009|5.007002|pu
1957 newSVsv_nomg|5.029009|5.007003|p
1958 newSV_type|5.009005|5.003007|p
1959 newSVuv|5.006000|5.003007|p
1960 newUNOP|5.003007|5.003007|
1961 newUNOP_AUX|5.021007|5.021007|
1962 new_version|5.009000|5.009000|
1963 new_warnings_bitfield|||xciu
1964 newWHENOP|5.027008|5.027008|
1965 newWHILEOP|5.013007|5.013007|
1966 Newx|5.009003|5.003007|p
1967 Newxc|5.009003|5.003007|p
1968 newXS|5.006000|5.006000|
1969 newXS_deffile|5.021006||cViu
1970 newXS_flags|5.009004|5.009004|xu
1971 newXS_len_flags|5.015006||Vi
1972 newXSproto|5.006000|5.006000|
1973 Newxz|5.009003|5.003007|p
1974 nextargv|5.003007||Viu
1975 nextchar|5.005000||Viu
1976 next_symbol|5.007003||Viu
1977 ninstr|5.003007|5.003007|n
1978 no_bareword_allowed|5.005004||Viu
1979 no_fh_allowed|5.003007||Viu
1980 no_op|5.003007||Viu
1981 NOOP|5.005000|5.003007|poVu
1982 noperl_die|5.021006||vnViu
1983 not_a_number|5.005000||Viu
1984 nothreadhook|5.008000|5.008000|
1985 notify_parser_that_changed_to_utf8|5.025010||Viu
1986 not_incrementable|5.021002||Viu
1987 nuke_stacks|5.005000||Viu
1988 Nullav|5.003007|5.003007|d
1989 Nullch|5.003007|5.003007|
1990 Nullcv|5.003007|5.003007|d
1991 Nullhv|5.003007|5.003007|d
1992 Nullsv|5.003007|5.003007|
1993 NUM2PTR|5.006000||pVu
1994 num_overflow|5.009001||nViu
1995 NVef|5.006001|5.003007|p
1996 NVff|5.006001|5.003007|p
1997 NVgf|5.006001|5.003007|p
1998 NVMANTBITS|5.023000|5.023000|
1999 NVSIZE|5.006001|5.006001|
2000 NVTYPE|5.006000|5.003007|p
2001 oopsAV|5.003007||Viu
2002 oopsHV|5.003007||Viu
2003 op_append_elem|5.013006|5.013006|
2004 op_append_list|5.013006|5.013006|
2005 OP_CLASS|5.013007|5.013007|
2006 op_class|5.025010|5.025010|
2007 op_clear|5.006000||cViu
2008 op_contextualize|5.013006|5.013006|
2009 op_convert_list|5.021006|5.021006|
2010 OP_DESC|5.007003|5.007003|
2011 op_dump|5.006000|5.006000|
2012 openn_cleanup|5.019010||Viu
2013 openn_setup|5.019010||Viu
2014 open_script|5.005000||Viu
2015 op_free|5.003007|5.003007|
2016 OpHAS_SIBLING|5.021007|5.003007|p
2017 op_integerize|5.015003||Viu
2018 OpLASTSIB_set|5.021011|5.003007|p
2019 op_linklist|5.013006|5.013006|
2020 op_lvalue|5.013007|5.013007|x
2021 op_lvalue_flags|||ciu
2022 OpMAYBESIB_set|5.021011|5.003007|p
2023 opmethod_stash|5.021007||Viu
2024 OpMORESIB_set|5.021011|5.003007|p
2025 OP_NAME|5.007003|5.007003|
2026 op_null|5.007002|5.007002|
2027 op_parent|5.025001|5.025001|n
2028 op_prepend_elem|5.013006|5.013006|
2029 op_refcnt_dec|||xiu
2030 op_refcnt_inc|||xiu
2031 op_refcnt_lock|5.009002|5.009002|u
2032 op_refcnt_unlock|5.009002|5.009002|u
2033 op_relocate_sv|5.021005||Viu
2034 op_scope|5.013007|5.013007|x
2035 OpSIBLING|5.021007|5.003007|p
2036 op_sibling_splice|5.021002|5.021002|n
2037 opslab_force_free|5.017002||Viu
2038 opslab_free|5.017002||Viu
2039 opslab_free_nopad|5.017002||Viu
2040 op_std_init|5.015003||Viu
2041 optimize_op|5.027006||Viu
2042 optimize_optree|5.027006||Vi
2043 OP_TYPE_IS|5.019007|5.019007|
2044 OP_TYPE_IS_OR_WAS|5.019010|5.019010|
2045 op_unscope|5.017003||xViu
2046 ORIGMARK|5.003007|5.003007|
2047 OSNAME|5.003007|5.003007|
2048 OSVERS|5.007002|5.007002|
2049 output_posix_warnings|5.029005||Viu
2050 package|5.003007||Viu
2051 package_version|5.011001||Viu
2052 pack_cat|||
2053 packlist|5.008001|5.008001|
2054 pack_rec|5.008001||Viu
2055 packWARN|5.007003||pVu
2056 pad_add_anon|5.008001|5.008001|
2057 pad_add_name_pv|5.015001|5.015001|
2058 pad_add_name_pvn|5.015001|5.015001|
2059 pad_add_name_pvs|5.015001|5.015001|
2060 pad_add_name_sv|5.015001|5.015001|
2061 pad_add_weakref|5.021007||Viu
2062 pad_alloc|5.003007|5.003007|x
2063 pad_alloc_name|5.015001||Vi
2064 PadARRAY|5.017004|5.017004|x
2065 PAD_BASE_SV|||i
2066 pad_block_start|5.008001||Vi
2067 pad_check_dup|5.008001||Vi
2068 PAD_CLONE_VARS|||i
2069 PAD_COMPNAME_FLAGS|||i
2070 PAD_COMPNAME_GEN|||i
2071 PAD_COMPNAME_GEN_set|||i
2072 PAD_COMPNAME_OURSTASH|||i
2073 PAD_COMPNAME_PV|||i
2074 pad_compname_type|||
2075 PAD_COMPNAME_TYPE|||i
2076 pad_findlex|5.005000||Vi
2077 pad_findmy_pv|5.015001|5.015001|
2078 pad_findmy_pvn|5.015001|5.015001|
2079 pad_findmy_pvs|5.015001|5.015001|
2080 pad_findmy_sv|5.015001|5.015001|
2081 pad_fixup_inner_anons|5.008001||Vi
2082 pad_free|5.003007||Vi
2083 pad_leavemy|5.003007||Vi
2084 PadlistARRAY|5.017004|5.017004|x
2085 padlist_dup|5.013002||Vi
2086 PadlistMAX|5.017004|5.017004|x
2087 PadlistNAMES|5.017004|5.017004|x
2088 PadlistNAMESARRAY|5.017004|5.017004|x
2089 PadlistNAMESMAX|5.017004|5.017004|x
2090 PadlistREFCNT|5.017004|5.017004|x
2091 padlist_store|5.017004||Viu
2092 PadMAX|5.017004|5.017004|x
2093 padname_dup|5.021007||Vi
2094 padname_free|||ciu
2095 PadnameIN_SCOPE|5.031004||nViu
2096 PadnameIsOUR|||i
2097 PadnameIsSTATE|||i
2098 PadnameLEN|5.017004|5.017004|x
2099 PadnamelistARRAY|5.017004|5.017004|x
2100 padnamelist_dup|5.021007||Vi
2101 padnamelist_fetch|5.021007|5.021007|nx
2102 padnamelist_free|||ciu
2103 PadnamelistMAX|5.017004|5.017004|x
2104 PadnamelistREFCNT|5.021007|5.021007|x
2105 PadnamelistREFCNT_dec|5.021007|5.021007|x
2106 padnamelist_store|5.021007|5.021007|x
2107 PadnameOURSTASH|||i
2108 PadnameOUTER|||i
2109 PadnamePV|5.017004|5.017004|x
2110 PadnameREFCNT|5.021007|5.021007|x
2111 PadnameREFCNT_dec|5.021007|5.021007|x
2112 PadnameSV|5.017004|5.017004|x
2113 PadnameTYPE|||i
2114 PadnameUTF8|5.017004|5.017004|x
2115 pad_new|5.008001|5.008001|
2116 pad_push|5.008001||cVi
2117 pad_reset|5.003007||Vi
2118 PAD_RESTORE_LOCAL|||i
2119 PAD_SAVE_LOCAL|||i
2120 PAD_SAVE_SETNULLPAD|||i
2121 PAD_SET_CUR|||i
2122 PAD_SET_CUR_NOSAVE|||i
2123 pad_setsv|5.008001|5.008001|
2124 PAD_SETSV|||i
2125 pad_sv|5.003007||V
2126 PAD_SV|||i
2127 PAD_SVl|||i
2128 pad_swipe|5.003007||Vi
2129 pad_tidy|5.008001|5.008001|x
2130 parse_arithexpr|5.013008|5.013008|x
2131 parse_barestmt|5.013007|5.013007|x
2132 parse_block|5.013007|5.013007|x
2133 parse_body|5.006000||Viu
2134 parse_fullexpr|5.013008|5.013008|x
2135 parse_fullstmt|5.013005|5.013005|x
2136 parse_gv_stash_name|5.019004||Viu
2137 parse_ident|5.017010||Viu
2138 parse_label|5.013007|5.013007|x
2139 parse_listexpr|5.013008|5.013008|x
2140 parse_lparen_question_flags|5.017009||Viu
2141 parser_dup|5.009000|5.009000|u
2142 parser_free|5.009005||Viu
2143 parser_free_nexttoke_ops|5.017006||Viu
2144 parse_stmtseq|5.013006|5.013006|x
2145 parse_subsignature|5.031003|5.031003|x
2146 parse_termexpr|5.013008|5.013008|x
2147 parse_unicode_opts|5.008001||Viu
2148 parse_uniprop_string|5.027011||cViu
2149 path_is_searchable|5.019001||nViu
2150 peep|5.003007||Viu
2151 pending_ident|5.017004||Viu
2152 PERL_ABS|5.008001|5.003007|p
2153 perl_alloc|5.003007|5.003007|n
2154 perl_alloc_using|5.006000||nVu
2155 PERL_BCDVERSION||5.003007|pou
2156 perl_clone|5.006000||nV
2157 perl_clone_using|5.006000||nVu
2158 perl_construct|5.003007|5.003007|n
2159 Perl_custom_op_xop|5.013007||V
2160 perl_destruct|5.007003|5.007003|n
2161 perl_free|5.003007|5.003007|n
2162 PERL_HASH|5.003007|5.003007|p
2163 PERL_INT_MAX|5.003007|5.003007|p
2164 PERL_INT_MIN|5.003007|5.003007|p
2165 PerlIO_apply_layers|5.007001|5.007001|
2166 PerlIO_binmode|5.007001|5.007001|
2167 PerlIO_canset_cnt|5.003007|5.003007|n
2168 PerlIO_clearerr|5.007003|5.007003|
2169 PerlIO_close|5.007003|5.007003|
2170 PerlIO_context_layers|5.009004|5.009004|u
2171 PerlIO_debug|5.007001|5.007001|
2172 PerlIO_eof|5.007003|5.007003|
2173 PerlIO_error|5.007003|5.007003|
2174 PerlIO_exportFILE|5.003007|5.003007|n
2175 PerlIO_fast_gets|5.003007|5.003007|n
2176 PerlIO_fdopen|5.003007|5.003007|n
2177 PerlIO_fileno|5.007003|5.007003|
2178 PerlIO_fill|5.007003|5.007003|u
2179 PerlIO_findFILE|5.003007|5.003007|n
2180 PerlIO_flush|5.007003|5.007003|
2181 PERLIO_FUNCS_CAST|5.009003||pVu
2182 PERLIO_FUNCS_DECL|5.009003||pVu
2183 PerlIO_get_base|5.007003|5.007003|
2184 PerlIO_get_bufsiz|5.007003|5.007003|
2185 PerlIO_getc|5.003007|5.003007|n
2186 PerlIO_get_cnt|5.007003|5.007003|
2187 PerlIO_getpos|5.003007|5.003007|n
2188 PerlIO_get_ptr|5.007003|5.007003|
2189 PerlIO_has_base|5.003007|5.003007|n
2190 PerlIO_has_cntptr|5.003007|5.003007|n
2191 PerlIO_importFILE|5.003007|5.003007|n
2192 PerlIO_open|5.003007|5.003007|n
2193 PerlIO_printf|5.006000|5.003007|
2194 PerlIO_putc|5.003007|5.003007|n
2195 PerlIO_puts|5.003007|5.003007|n
2196 PerlIO_read|5.007003|5.007003|
2197 PerlIO_releaseFILE|5.003007|5.003007|n
2198 PerlIO_reopen|5.003007|5.003007|
2199 PerlIO_restore_errno|5.021006||cViu
2200 PerlIO_rewind|5.003007|5.003007|n
2201 PerlIO_save_errno|5.021006||cViu
2202 PerlIO_seek|5.007003|5.007003|
2203 PerlIO_set_cnt|5.007003|5.007003|
2204 PerlIO_setlinebuf|5.007003|5.007003|
2205 PerlIO_setpos|5.003007|5.003007|n
2206 PerlIO_set_ptrcnt|5.007003|5.007003|
2207 PerlIO_stderr|5.007003|5.007003|
2208 PerlIO_stdin|5.007003|5.007003|
2209 PerlIO_stdout|5.007003|5.007003|
2210 PerlIO_stdoutf|5.006000|5.003007|
2211 PerlIO_tell|5.007003|5.007003|
2212 PerlIO_ungetc|5.003007|5.003007|n
2213 PerlIO_unread|5.007003|5.007003|u
2214 PerlIO_vprintf|5.003007|5.003007|n
2215 PerlIO_write|5.007003|5.007003|
2216 Perl_langinfo|5.027004|5.027004|n
2217 PerlLIO_dup2_cloexec|5.027008||Viu
2218 PerlLIO_dup_cloexec|5.027008||Viu
2219 PerlLIO_open3_cloexec|5.027008||Viu
2220 PerlLIO_open_cloexec|5.027008||Viu
2221 PERL_LOADMOD_DENY||5.003007|ou
2222 PERL_LOADMOD_IMPORT_OPS||5.003007|ou
2223 PERL_LOADMOD_NOIMPORT||5.003007|ou
2224 PERL_LONG_MAX|5.003007|5.003007|p
2225 PERL_LONG_MIN|5.003007|5.003007|p
2226 PERL_MAGIC_arylen|5.007002|5.003007|p
2227 PERL_MAGIC_arylen_p|5.009003|5.009003|
2228 PERL_MAGIC_backref|5.007002|5.003007|p
2229 PERL_MAGIC_bm|5.007002|5.003007|p
2230 PERL_MAGIC_checkcall|5.013006|5.013006|
2231 PERL_MAGIC_collxfrm|5.007002|5.003007|p
2232 PERL_MAGIC_dbfile|5.007002|5.003007|p
2233 PERL_MAGIC_dbline|5.007002|5.003007|p
2234 PERL_MAGIC_debugvar|5.021005|5.021005|
2235 PERL_MAGIC_defelem|5.007002|5.003007|p
2236 PERL_MAGIC_env|5.007002|5.003007|p
2237 PERL_MAGIC_envelem|5.007002|5.003007|p
2238 PERL_MAGIC_ext|5.007002|5.003007|p
2239 PERL_MAGIC_fm|5.007002|5.003007|p
2240 PERL_MAGIC_glob||5.003007|pou
2241 PERL_MAGIC_hints|5.009004|5.009004|
2242 PERL_MAGIC_hintselem|5.009004|5.009004|
2243 PERL_MAGIC_isa|5.007002|5.003007|p
2244 PERL_MAGIC_isaelem|5.007002|5.003007|p
2245 PERL_MAGIC_lvref|5.021005|5.021005|
2246 PERL_MAGIC_mutex||5.003007|pou
2247 PERL_MAGIC_nkeys|5.007002|5.003007|p
2248 PERL_MAGIC_nonelem|5.027009|5.027009|
2249 PERL_MAGIC_overload||5.003007|pou
2250 PERL_MAGIC_overload_elem||5.003007|pou
2251 PERL_MAGIC_overload_table|5.007002|5.003007|p
2252 PERL_MAGIC_pos|5.007002|5.003007|p
2253 PERL_MAGIC_qr|5.007002|5.003007|p
2254 PERL_MAGIC_regdata|5.007002|5.003007|p
2255 PERL_MAGIC_regdatum|5.007002|5.003007|p
2256 PERL_MAGIC_regex_global|5.007002|5.003007|p
2257 PERL_MAGIC_rhash|5.009003|5.009003|
2258 PERL_MAGIC_shared|5.007003|5.003007|p
2259 PERL_MAGIC_shared_scalar|5.007003|5.003007|p
2260 PERL_MAGIC_sig|5.007002|5.003007|p
2261 PERL_MAGIC_sigelem|5.007002|5.003007|p
2262 PERL_MAGIC_substr|5.007002|5.003007|p
2263 PERL_MAGIC_sv|5.007002|5.003007|p
2264 PERL_MAGIC_symtab|5.009003|5.009003|
2265 PERL_MAGIC_taint|5.007002|5.003007|p
2266 PERL_MAGIC_tied|5.007002|5.003007|p
2267 PERL_MAGIC_tiedelem|5.007002|5.003007|p
2268 PERL_MAGIC_tiedscalar|5.007002|5.003007|p
2269 PERL_MAGIC_utf8|5.008001|5.003007|p
2270 PERL_MAGIC_uvar|5.007002|5.003007|p
2271 PERL_MAGIC_uvar_elem|5.007003|5.003007|p
2272 PERL_MAGIC_vec|5.007002|5.003007|p
2273 PERL_MAGIC_vstring|5.008001|5.003007|p
2274 perl_parse|5.006000|5.006000|n
2275 PerlProc_pipe_cloexec|5.027008||Viu
2276 PERL_PV_ESCAPE_ALL|5.009004|5.003007|p
2277 PERL_PV_ESCAPE_FIRSTCHAR|5.009004|5.003007|p
2278 PERL_PV_ESCAPE_NOBACKSLASH|5.009004|5.003007|p
2279 PERL_PV_ESCAPE_NOCLEAR|5.009004|5.003007|p
2280 PERL_PV_ESCAPE_NONASCII|5.013009|5.013009|
2281 PERL_PV_ESCAPE_QUOTE|5.009004|5.003007|p
2282 PERL_PV_ESCAPE_RE|5.009005|5.003007|p
2283 PERL_PV_ESCAPE_UNI|5.009004|5.003007|p
2284 PERL_PV_ESCAPE_UNI_DETECT|5.009004|5.003007|p
2285 PERL_PV_PRETTY_DUMP|5.009004|5.003007|poVu
2286 PERL_PV_PRETTY_ELLIPSES|5.010000|5.003007|p
2287 PERL_PV_PRETTY_LTGT|5.009004|5.003007|p
2288 PERL_PV_PRETTY_NOCLEAR|5.010000|5.003007|poVu
2289 PERL_PV_PRETTY_QUOTE|5.009004|5.003007|p
2290 PERL_PV_PRETTY_REGPROP|5.009004|5.003007|poVu
2291 PERL_QUAD_MAX|5.003007|5.003007|p
2292 PERL_QUAD_MIN|5.003007|5.003007|p
2293 PERL_REVISION|5.006000|5.003007|p
2294 perl_run|5.003007|5.003007|n
2295 PERL_SCAN_ALLOW_UNDERSCORES|5.007003|5.003007|p
2296 PERL_SCAN_DISALLOW_PREFIX|5.007003|5.003007|p
2297 PERL_SCAN_GREATER_THAN_UV_MAX|5.007003|5.003007|p
2298 PERL_SCAN_SILENT_ILLDIGIT|5.008001|5.003007|p
2299 PERL_SCAN_TRAILING|5.021002|5.021002|
2300 Perl_setlocale|5.027002|5.027002|n
2301 PERL_SHORT_MAX|5.003007|5.003007|p
2302 PERL_SHORT_MIN|5.003007|5.003007|p
2303 PERL_SIGNALS_UNSAFE_FLAG|5.008001|5.003007|poVu
2304 Perl_signbit|5.009005|5.009005|nx
2305 PerlSock_accept_cloexec|5.027008||Viu
2306 PerlSock_socket_cloexec|5.027008||Viu
2307 PerlSock_socketpair_cloexec|5.027008||Viu
2308 PERL_SUBVERSION|5.006000|5.003007|p
2309 PERL_SYS_INIT3|5.006000|5.006000|
2310 PERL_SYS_INIT|5.003007|5.003007|
2311 PERL_SYS_TERM|5.003007|5.003007|
2312 PERL_UCHAR_MAX|5.003007|5.003007|p
2313 PERL_UCHAR_MIN|5.003007|5.003007|p
2314 PERL_UINT_MAX|5.003007|5.003007|p
2315 PERL_UINT_MIN|5.003007|5.003007|poVu
2316 PERL_ULONG_MAX|5.003007|5.003007|p
2317 PERL_ULONG_MIN|5.003007|5.003007|p
2318 PERL_UNUSED_ARG|5.009003||pVu
2319 PERL_UNUSED_CONTEXT|5.009004|5.003007|poVu
2320 PERL_UNUSED_DECL|5.007002|5.003007|poVu
2321 PERL_UNUSED_RESULT|5.021001||pVu
2322 PERL_UNUSED_VAR|5.007002||pVu
2323 PERL_UQUAD_MAX|5.003007|5.003007|p
2324 PERL_UQUAD_MIN|5.003007|5.003007|p
2325 PERL_USE_GCC_BRACE_GROUPS|5.009004|5.004000|poVu
2326 PERL_USHORT_MAX|5.003007|5.003007|p
2327 PERL_USHORT_MIN|5.003007|5.003007|p
2328 PERL_VERSION|5.006000|5.003007|p
2329 pidgone|5.003007||Viu
2330 PL_bufend||5.003007|pou
2331 PL_bufptr||5.003007|pou
2332 PL_check|5.009003|5.006000|
2333 PL_compiling|5.004005|5.003007|poVu
2334 PL_comppad|5.008001|5.008001|x
2335 PL_comppad_name|5.017004|5.017004|x
2336 PL_copline||5.003007|pou
2337 PL_curcop|5.004005|5.003007|p
2338 PL_curpad|5.005000|5.005000|x
2339 PL_curstash|5.004005|5.003007|p
2340 PL_DBsignal|5.005000|5.003007|poVu
2341 PL_DBsingle|5.004005|5.003007|poV
2342 PL_DBsub|5.004005|5.003007|poV
2343 PL_DBtrace|5.005000|5.003007|poV
2344 PL_debstash|5.004005|5.003007|poVu
2345 PL_defgv|5.004005|5.003007|p
2346 PL_diehook|5.004005|5.003007|poVu
2347 PL_dirty|5.004005|5.003007|poVu
2348 PL_dowarn|5.004005|5.003007|poV
2349 PL_errgv|5.004005|5.003007|p
2350 PL_error_count||5.003007|pou
2351 PL_exit_flags|5.006000|5.006000|
2352 PL_expect||5.003007|pou
2353 PL_hexdigit|5.005000|5.003007|poVu
2354 PL_hints|5.005000|5.003007|poVu
2355 PL_in_my||5.003007|pou
2356 PL_in_my_stash||5.005000|pou
2357 PL_keyword_plugin|5.011002|5.011002|x
2358 PL_last_in_gv|||i
2359 PL_laststatval|5.005000|5.003007|poVu
2360 PL_lex_state||5.003007|pou
2361 PL_lex_stuff||5.003007|pou
2362 PL_linestr||5.003007|pou
2363 PL_mess_sv|5.005000|5.004000|poVu
2364 PL_modglobal|5.005000|5.005000|
2365 PL_na|5.004005|5.003007|p
2366 PL_no_modify|5.006000|5.003007|poVu
2367 PL_ofsgv|||i
2368 PL_opfreehook|5.011000|5.011000|
2369 PL_parser|5.009005|5.003007|p
2370 PL_peepp|5.007003|5.007003|
2371 PL_perldb|5.004005|5.003007|poVu
2372 PL_perl_destruct_level|5.004005|5.003007|p
2373 PL_ppaddr|5.006000|5.003007|poVu
2374 PL_rpeepp|5.013005|5.013005|
2375 PL_rsfp||5.003007|pou
2376 PL_rsfp_filters||5.003007|pou
2377 PL_rs|||i
2378 PL_runops|5.006000|5.006000|
2379 PL_signals|5.008001||pVu
2380 PL_stack_base|5.004005|5.003007|poVu
2381 PL_stack_sp|5.004005|5.003007|poVu
2382 PL_statcache|5.005000|5.003007|poVu
2383 PL_stdingv|5.004005|5.003007|poVu
2384 PL_Sv|5.005000|5.003007|poVu
2385 PL_sv_arenaroot|5.004005|5.003007|poVu
2386 PL_sv_no|5.004005|5.003007|p
2387 PL_sv_undef|5.004005|5.003007|p
2388 PL_sv_yes|5.004005|5.003007|p
2389 PL_sv_zero|5.027003|5.027003|
2390 PL_tainted|5.004005|5.003007|poVu
2391 PL_tainting|5.004005|5.003007|poVu
2392 PL_tokenbuf||5.003007|pou
2393 pm_description|5.009004||Viu
2394 pmop_dump|5.006000|5.006000|u
2395 pmruntime|5.003007||Viu
2396 pmtrans|5.003007||Viu
2397 _pMY_CXT|5.007003|5.009000|pV
2398 pMY_CXT_|5.007003|5.009000|pV
2399 pMY_CXT|5.009000|5.009000|p
2400 Poison|5.008000|5.003007|p
2401 PoisonFree|5.009004|5.003007|p
2402 PoisonNew|5.009004|5.003007|p
2403 PoisonWith|5.009004|5.003007|p
2404 POPi|5.003007|5.003007|
2405 POPl|5.003007|5.003007|
2406 POPMARK|||ciu
2407 POP_MULTICALL|5.009003|5.009003|
2408 POPn|5.006000|5.003007|
2409 POPp|5.003007|5.003007|
2410 POPpbytex|5.007001|5.007001|
2411 POPpx|5.005003|5.005003|
2412 POPs|5.003007|5.003007|
2413 pop_scope|5.003007|5.003007|u
2414 POPu|5.004000|5.004000|
2415 POPul|5.006000|5.006000|
2416 populate_ANYOF_from_invlist|5.019005||Viu
2417 populate_isa|||viu
2418 pregcomp|5.009005|5.009005|u
2419 pregexec|5.003007|5.003007|u
2420 pregfree2|5.011000|5.011000|u
2421 pregfree|5.003007|5.003007|u
2422 prescan_version|5.011004|5.011004|
2423 printbuf|5.009004||Viu
2424 print_bytes_for_locale|5.027002||Viu
2425 print_collxfrm_input_and_return|5.025004||Viu
2426 printf_nocontext|5.007001|5.007001|vndu
2427 PRIVLIB|5.003007|5.003007|
2428 process_special_blocks|5.009005||Viu
2429 pTHX|5.006000|5.003007|p
2430 pTHX_|5.006000|5.003007|pV
2431 PTR2IV|5.006000|5.003007|p
2432 PTR2nat|5.009003||pVu
2433 PTR2NV|5.006000|5.003007|p
2434 PTR2ul|5.007001||pVu
2435 PTR2UV|5.006000|5.003007|p
2436 ptr_hash|5.017010||nViu
2437 PTRSIZE|5.005000|5.005000|
2438 ptr_table_clear|5.009005|5.009005|du
2439 ptr_table_fetch|5.009005|5.009005|u
2440 ptr_table_find|5.009004||nViu
2441 ptr_table_free|5.009005|5.009005|u
2442 ptr_table_new|5.009005|5.009005|u
2443 ptr_table_split|5.009005|5.009005|u
2444 ptr_table_store|5.009005|5.009005|u
2445 PTRV|5.006000|5.003007|poVu
2446 PUSHi|5.003007|5.003007|
2447 PUSHMARK|5.003007|5.003007|
2448 PUSHmortal|5.009002|5.003007|p
2449 PUSH_MULTICALL|5.011000|5.011000|
2450 PUSHn|5.006000|5.003007|
2451 PUSHp|5.003007|5.003007|
2452 PUSHs|5.003007|5.003007|
2453 push_scope|5.003007|5.003007|u
2454 PUSHu|5.004000|5.003007|p
2455 PUTBACK|5.003007|5.003007|
2456 put_charclass_bitmap_innards|5.021004||Viu
2457 put_charclass_bitmap_innards_common|5.023008||Viu
2458 put_charclass_bitmap_innards_invlist|5.023008||Viu
2459 put_code_point|5.021004||Viu
2460 put_range|5.019009||Viu
2461 pv_display|5.006000|5.003007|p
2462 pv_escape|5.009004|5.003007|p
2463 pv_pretty|5.009004|5.003007|p
2464 pv_uni_display|5.007003|5.007003|
2465 qerror|5.006000||cViu
2466 quadmath_format_needed|5.021004||nV
2467 quadmath_format_single|5.021004||nV
2468 RANDBITS|5.003007|5.003007|
2469 READ_XDIGIT|5.017006|5.017006|
2470 realloc|5.007002|5.007002|n
2471 ReANY|||ncu
2472 re_compile|5.009005|5.009005|u
2473 re_croak2|||iu
2474 re_dup_guts|5.011000|5.011000|u
2475 reentrant_free|5.010000|5.010000|u
2476 reentrant_init|5.010000|5.010000|u
2477 reentrant_retry|5.010000|5.010000|vnu
2478 reentrant_size|5.010000|5.010000|u
2479 re_exec_indentf|5.023009||vViu
2480 ref|5.003007||Vu
2481 ref_array_or_hash|5.027008||Viu
2482 refcounted_he_chain_2hv|5.013007||cVi
2483 refcounted_he_fetch_pv|5.013007||cVi
2484 refcounted_he_fetch_pvn|5.013007||cVi
2485 refcounted_he_fetch_pvs|||i
2486 refcounted_he_fetch_sv|5.013007||cVi
2487 refcounted_he_free|5.013007||cVi
2488 refcounted_he_inc|5.013007||cVi
2489 refcounted_he_new_pv|5.013007||cVi
2490 refcounted_he_new_pvn|5.013007||cVi
2491 refcounted_he_new_pvs|||i
2492 refcounted_he_new_sv|5.013007||cVi
2493 refcounted_he_value|5.009004||Viu
2494 refkids|5.003007||Viu
2495 refto|5.005000||Viu
2496 reg2Lanode|5.021005||Viu
2497 reg|5.005000||Viu
2498 reganode|5.005000||Viu
2499 regatom|5.005000||Viu
2500 regbranch|5.005000||Viu
2501 reg_check_named_buff_matched|5.009005||nViu
2502 regclass|5.005000||Viu
2503 regcppop|5.005000||Viu
2504 regcppush|5.005000||Viu
2505 regcp_restore|5.025006||Viu
2506 regcurly|5.013010||nViu
2507 regdump|5.005000|5.005000|u
2508 regdump_extflags|5.009005||Viu
2509 regdump_intflags|5.019002||Viu
2510 regdupe_internal|5.009000|5.009000|u
2511 regexec_flags|5.005000|5.005000|u
2512 regex_set_precedence|5.021010||nViu
2513 regfree_internal|5.009005|5.009005|u
2514 reghop3|5.007001||nViu
2515 reghop4|5.009005||nViu
2516 reghopmaybe3|5.007001||nViu
2517 reginclass|5.005000||Viu
2518 reginitcolors|5.006000|5.006000|u
2519 reginsert|5.005000||Viu
2520 regmatch|5.005000||Viu
2521 reg_named_buff|5.009005||cViu
2522 reg_named_buff_all|5.009005|5.009005|u
2523 reg_named_buff_exists|5.009005|5.009005|u
2524 reg_named_buff_fetch|5.009005|5.009005|u
2525 reg_named_buff_firstkey|5.009005|5.009005|u
2526 reg_named_buff_iter|5.009005||cViu
2527 reg_named_buff_nextkey|5.009005|5.009005|u
2528 reg_named_buff_scalar|5.009005|5.009005|u
2529 regnext|5.005000|5.005000|u
2530 reg_node|5.005000||Viu
2531 regnode_guts|5.021005||Viu
2532 reg_numbered_buff_fetch|5.009005||cViu
2533 reg_numbered_buff_length|5.009005||cViu
2534 reg_numbered_buff_store|5.009005||cViu
2535 regpiece|5.005000||Viu
2536 regprop|5.003007||Viu
2537 reg_qr_package|5.009005||cViu
2538 regrepeat|5.005000||Viu
2539 reg_scan_name|5.009005||Viu
2540 reg_skipcomment|5.009005||nViu
2541 regtail|5.005000||Viu
2542 regtail_study|5.009004||Viu
2543 reg_temp_copy|5.009005||cViu
2544 regtry|5.005000||Viu
2545 re_indentf|5.023009||vViu
2546 re_intuit_start|5.006000||cVu
2547 re_intuit_string|5.006000||cVu
2548 Renew|5.003007|5.003007|
2549 Renewc|5.003007|5.003007|
2550 re_op_compile|5.017001||Viu
2551 repeatcpy|5.003007|5.003007|nu
2552 REPLACEMENT_CHARACTER_UTF8|5.025005|5.003007|p
2553 report_evil_fh|5.006001||Viu
2554 report_redefined_cv|5.015006||Viu
2555 report_uninit|5.006000||cVi
2556 report_wrongway_fh|5.013009||Viu
2557 re_printf|5.023009||vViu
2558 require_pv|5.006000|5.006000|
2559 require_tie_mod|5.009005||Viu
2560 RESTORE_ERRNO|||i
2561 RESTORE_LC_NUMERIC|5.021010|5.021010|
2562 restore_magic|5.009003||Viu
2563 restore_switched_locale|5.027009||Viu
2564 RETVAL|5.003007|5.003007|V
2565 rninstr|5.003007|5.003007|n
2566 rpeep|5.013005||Viu
2567 rsignal|5.004000|5.004000|
2568 rsignal_restore|5.004000||Viu
2569 rsignal_save|5.004000||Viu
2570 rsignal_state|5.004000|5.004000|u
2571 run_body|5.006000||Viu
2572 runops_debug|5.005000|5.005000|u
2573 runops_standard|5.005000|5.005000|u
2574 run_user_filter|5.009003||Viu
2575 rv2cv_op_cv|5.013006|5.013006|
2576 rvpv_dup|5.007003|5.007003|u
2577 rxres_free|5.004000||Viu
2578 rxres_restore|5.004000||Viu
2579 rxres_save|5.004000||Viu
2580 Safefree|5.003007|5.003007|
2581 safesyscalloc|5.006000|5.006000|nu
2582 safesysfree|5.006000|5.006000|nu
2583 safesysmalloc|5.006000|5.006000|nu
2584 safesysrealloc|5.006000|5.006000|nu
2585 same_dirent|5.003007||Viu
2586 SANE_ERRSV|5.031003|5.031003|
2587 save_adelete|5.011000|5.011000|u
2588 save_aelem|5.004005|5.004005|u
2589 save_aelem_flags|5.011000|5.011000|u
2590 save_alloc|5.006000|5.006000|u
2591 save_aptr|5.003007|5.003007|
2592 save_ary|5.003007|5.003007|
2593 save_bool|5.008001|5.008001|u
2594 save_clearsv|5.003007|5.003007|u
2595 SAVECLEARSV|||i
2596 SAVECOMPPAD|||i
2597 SAVE_DEFSV|5.004005|5.003007|poVu
2598 save_delete|5.003007|5.003007|u
2599 save_destructor|5.006000|5.006000|u
2600 save_destructor_x|5.006000|5.006000|u
2601 SAVE_ERRNO|||i
2602 save_freeop|5.010001|5.010001|u
2603 save_freepv|5.003007|5.003007|u
2604 save_freesv|5.003007|5.003007|u
2605 save_generic_pvref|5.006001|5.006001|u
2606 save_generic_svref|5.005003|5.005003|u
2607 save_gp|5.004000|5.004000|
2608 save_hash|5.003007|5.003007|
2609 save_hdelete|5.011000|5.011000|u
2610 save_hek_flags|5.008000||nViu
2611 save_helem|5.004005|5.004005|u
2612 save_helem_flags|5.011000|5.011000|u
2613 save_hints|5.010001|5.010001|u
2614 save_hptr|5.003007|5.003007|
2615 save_I16|5.004000|5.004000|u
2616 save_I32|5.003007|5.003007|u
2617 save_I8|5.006000|5.006000|u
2618 save_int|5.003007|5.003007|u
2619 save_item|5.003007|5.003007|
2620 save_iv|5.005000|5.005000|u
2621 save_lines|5.005000||Viu
2622 save_list|5.003007|5.003007|d
2623 save_long|5.003007|5.003007|du
2624 save_magic_flags|5.019002||Viu
2625 save_mortalizesv|5.007001|5.007001|u
2626 save_nogv|5.003007|5.003007|du
2627 save_op|5.010001|5.010001|u
2628 save_padsv_and_mortalize|5.010001|5.010001|u
2629 SAVEPADSV|||i
2630 save_pptr|5.003007|5.003007|u
2631 save_pushi32ptr|5.010001|5.010001|u
2632 save_pushptr|5.010001|5.010001|u
2633 save_pushptri32ptr|5.010001||Viu
2634 save_pushptrptr|5.010001|5.010001|u
2635 savepv|5.003007|5.003007|
2636 savepvn|5.003007|5.003007|
2637 savepvs|5.009003|5.009003|
2638 save_re_context|5.006000|5.006000|u
2639 save_scalar|5.003007|5.003007|
2640 save_scalar_at|5.005000||Viu
2641 save_set_svflags|5.009000|5.009000|u
2642 savesharedpv|5.007003|5.007003|
2643 savesharedpvn|5.009005|5.009005|
2644 save_shared_pvref|5.007003|5.007003|u
2645 savesharedpvs|5.013006|5.013006|
2646 savesharedsvpv|5.013006|5.013006|
2647 save_sptr|5.003007|5.003007|u
2648 savestack_grow|5.003007|5.003007|u
2649 savestack_grow_cnt|5.008001|5.008001|u
2650 save_strlen|5.019004||cViu
2651 savesvpv|5.009002|5.009002|
2652 save_svref|5.003007|5.003007|
2653 SAVETMPS|5.003007|5.003007|
2654 savetmps|5.023008|5.023008|xu
2655 save_to_buffer|5.027004||nViu
2656 save_vptr|5.006000|5.006000|u
2657 sawparens|5.003007||Viu
2658 scalar|5.003007||Viu
2659 scalarboolean|5.005000||Viu
2660 scalarkids|5.003007||Viu
2661 scalar_mod_type|5.006000||nViu
2662 scalarseq|5.003007||Viu
2663 scalarvoid|5.003007||Viu
2664 scan_bin|5.006000|5.006000|
2665 scan_commit|5.005000||Viu
2666 scan_const|5.003007||Viu
2667 scan_formline|5.003007||Viu
2668 scan_heredoc|5.003007||Viu
2669 scan_hex|5.006000|5.003007|
2670 scan_ident|5.003007||Viu
2671 scan_inputsymbol|5.003007||Viu
2672 scan_num|5.007001|5.007001|u
2673 scan_oct|5.006000|5.003007|
2674 scan_pat|5.003007||Viu
2675 scan_str|5.003007||xcViu
2676 scan_subst|5.003007||Viu
2677 scan_trans|5.003007||Viu
2678 scan_version|5.009001|5.009001|
2679 scan_vstring|5.009005|5.009005|u
2680 scan_word|5.003007||xcViu
2681 search_const|5.010001||Viu
2682 seed|5.008001|5.008001|u
2683 sequence_num|5.009003||Viu
2684 set_ANYOF_arg|5.019005||Viu
2685 set_caret_X|5.019006||Viu
2686 set_context|5.006000|5.006000|nu
2687 setdefout|5.003007|5.003007|
2688 SETERRNO|||i
2689 setfd_cloexec|5.027008||nViu
2690 setfd_cloexec_for_nonsysfd|5.027008||Viu
2691 setfd_cloexec_or_inhexec_by_sysfdness|5.027008||Viu
2692 setfd_inhexec|5.027008||nViu
2693 setfd_inhexec_for_sysfd|5.027008||Viu
2694 setlocale_debug_string|5.027002||nViu
2695 set_numeric_radix|5.006000||Viu
2696 set_numeric_standard|5.006000||cViu
2697 set_numeric_underlying|5.027006||cViu
2698 set_padlist|5.021006||ncViu
2699 set_regex_pv|5.029004||Viu
2700 _setup_canned_invlist|5.019008||cViu
2701 share_hek|5.004000|5.004000|u
2702 share_hek_flags|5.008000||Viu
2703 SHORTSIZE|5.004000|5.004000|
2704 should_warn_nl|5.021001||nViu
2705 si_dup|5.007003|5.007003|u
2706 sighandler|5.003007||nViu
2707 simplify_sort|5.006000||Viu
2708 SITELIB|5.003007|5.003007|
2709 skipspace_flags|5.019002||xcViu
2710 skip_to_be_ignored_text|5.023004||Viu
2711 Slab_Alloc|5.006000||cViu
2712 Slab_Free|5.007003||cViu
2713 Slab_to_ro|5.017002||Viu
2714 Slab_to_rw|5.009005||Viu
2715 softref2xv|||iu
2716 sortcv|5.009003||Viu
2717 sortcv_stacked|5.009003||Viu
2718 sortcv_xsub|5.009003||Viu
2719 sortsv|5.007003|5.007003|
2720 sortsv_flags|5.009003|5.009003|
2721 SP|5.003007|5.003007|
2722 space_join_names_mortal|5.009004||Viu
2723 SPAGAIN|5.003007|5.003007|
2724 ssc_add_range|5.019005||Viu
2725 ssc_and|5.019005||Viu
2726 ssc_anything|5.019005||Viu
2727 ssc_clear_locale|5.019005||nViu
2728 ssc_cp_and|5.019005||Viu
2729 ssc_finalize|5.019005||Viu
2730 ssc_init|5.019005||Viu
2731 ssc_intersection|5.019005||Viu
2732 ssc_is_anything|5.019005||nViu
2733 ssc_is_cp_posixl_init|5.019005||nViu
2734 ssc_or|5.019005||Viu
2735 ssc_union|5.019005||Viu
2736 ss_dup|5.007003|5.007003|u
2737 ST|5.003007|5.003007|
2738 stack_grow|5.003007|5.003007|u
2739 START_EXTERN_C|5.005000|5.003007|poVu
2740 start_glob|||xi
2741 START_MY_CXT|5.010000|5.010000|p
2742 STARTPERL|5.003007|5.003007|
2743 start_subparse|5.004000|5.003007|pu
2744 STDCHAR|5.003007|5.003007|
2745 stdize_locale|5.007001||Viu
2746 STMT_END|5.003007|5.003007|pV
2747 STMT_START|5.003007|5.003007|pV
2748 STORE_LC_NUMERIC_FORCE_TO_UNDERLYING|5.021010|5.021010|
2749 STORE_LC_NUMERIC_SET_TO_NEEDED|5.021010|5.021010|
2750 STORE_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003|
2751 strEQ|5.003007|5.003007|
2752 strGE|5.003007|5.003007|
2753 strGT|5.003007|5.003007|
2754 strip_return|5.009003||Viu
2755 strLE|5.003007|5.003007|
2756 strLT|5.003007|5.003007|
2757 strNE|5.003007|5.003007|
2758 strnEQ|5.003007|5.003007|
2759 strnNE|5.003007|5.003007|
2760 Strtod|5.029010|5.029010|n
2761 Strtol|5.006000|5.006000|n
2762 Strtoul|5.006000|5.006000|n
2763 str_to_version|5.006000|5.006000|u
2764 StructCopy|5.003007|5.003007|V
2765 STR_WITH_LEN|5.009003|5.003007|pV
2766 study_chunk|5.005000||Viu
2767 sub_crush_depth|5.004000||Viu
2768 sublex_done|5.005000||Viu
2769 sublex_push|5.005000||Viu
2770 sublex_start|5.005000||Viu
2771 sv_2bool|5.003007|5.003007|
2772 sv_2bool_flags|5.013006|5.013006|
2773 sv_2cv|5.003007|5.003007|
2774 sv_2io|5.003007|5.003007|
2775 sv_2iuv_common|5.009004||Viu
2776 sv_2iuv_non_preserve|5.007001||Viu
2777 sv_2iv|5.003007|5.003007|u
2778 sv_2iv_flags|5.009001|5.009001|
2779 sv_2mortal|5.003007|5.003007|
2780 sv_2num|5.010000||xVi
2781 sv_2nv_flags|5.013001|5.013001|
2782 sv_2pv|5.003007|5.003007|u
2783 sv_2pvbyte|5.006000|5.003007|p
2784 sv_2pvbyte_flags|5.031004|5.031004|u
2785 sv_2pvbyte_nolen|5.006000|5.003007|p
2786 sv_2pv_flags|5.007002|5.003007|p
2787 sv_2pv_nolen|5.006000|5.003007|p
2788 sv_2pvutf8|5.006000|5.006000|
2789 sv_2pvutf8_flags|5.031004|5.031004|u
2790 sv_2pvutf8_nolen|5.006000|5.006000|
2791 sv_2uv|5.004000|5.003007|pu
2792 sv_2uv_flags|5.009001|5.009001|
2793 sv_add_arena|5.003007||Vi
2794 sv_add_backref|||iu
2795 SvAMAGIC_off|5.031004|5.031004|nu
2796 SvAMAGIC_on|5.031004|5.031004|nu
2797 sv_backoff|5.003007|5.003007|n
2798 sv_bless|5.003007|5.003007|
2799 sv_buf_to_ro|5.019008||Viu
2800 sv_buf_to_rw|5.019008||Viu
2801 sv_cat_decode|5.008001|5.008001|
2802 sv_catpv|5.003007|5.003007|
2803 sv_catpvf|5.006000|5.004000|v
2804 sv_catpv_flags|5.013006|5.013006|
2805 sv_catpvf_mg|5.006000|5.004000|pv
2806 sv_catpvf_mg_nocontext|5.006000||pvnVu
2807 sv_catpvf_nocontext|5.006000||vnVu
2808 sv_catpv_mg|5.004005|5.003007|p
2809 sv_catpvn|5.003007|5.003007|
2810 sv_catpvn_flags|5.007002|5.007002|
2811 sv_catpvn_mg|5.004005|5.003007|p
2812 sv_catpvn_nomg|5.007002|5.003007|p
2813 sv_catpv_nomg|5.013006|5.013006|
2814 sv_catpvs|5.009003|5.003007|p
2815 sv_catpvs_flags|5.013006|5.013006|
2816 sv_catpvs_mg|5.013006|5.013006|
2817 sv_catpvs_nomg|5.013006|5.013006|
2818 sv_catsv|5.003007|5.003007|
2819 sv_catsv_flags|5.007002|5.007002|
2820 sv_catsv_mg|5.004005|5.003007|p
2821 sv_catsv_nomg|5.007002|5.003007|p
2822 sv_chop|5.003007|5.003007|
2823 sv_clean_all|5.003007||Vi
2824 sv_clean_objs|5.003007||Vi
2825 sv_clear|5.003007|5.003007|
2826 sv_cmp|5.003007|5.003007|
2827 sv_cmp_flags|5.013006|5.013006|
2828 sv_cmp_locale|5.004000|5.004000|
2829 sv_cmp_locale_flags|5.013006|5.013006|
2830 sv_collxfrm|||
2831 sv_collxfrm_flags|5.013006|5.013006|
2832 SV_CONST_RETURN|5.009003|5.003007|poVu
2833 sv_copypv|5.007003|5.007003|
2834 sv_copypv_flags|5.017002|5.017002|
2835 sv_copypv_nomg|5.017002|5.017002|
2836 SV_COW_DROP_PV|5.008001|5.003007|p
2837 SV_COW_SHARED_HASH_KEYS|5.009005|5.003007|poVu
2838 SvCUR|5.003007|5.003007|
2839 SvCUR_set|5.003007|5.003007|
2840 sv_dec|5.003007|5.003007|
2841 sv_dec_nomg|5.013002|5.013002|
2842 sv_del_backref|5.006000||cViu
2843 sv_derived_from|5.004000|5.004000|
2844 sv_derived_from_pv|5.015004|5.015004|
2845 sv_derived_from_pvn|5.015004|5.015004|
2846 sv_derived_from_sv|5.015004|5.015004|
2847 sv_destroyable|5.010000|5.010000|
2848 sv_display|5.021002||Viu
2849 sv_does|5.009004|5.009004|
2850 sv_does_pv|5.015004|5.015004|
2851 sv_does_pvn|5.015004|5.015004|
2852 sv_does_sv|5.015004|5.015004|
2853 sv_dump|5.003007|5.003007|
2854 sv_dup|5.007003|5.007003|u
2855 sv_dup_common|5.013002||Viu
2856 sv_dup_inc|5.013002|5.013002|u
2857 sv_dup_inc_multiple|5.011000||Viu
2858 SvEND|5.003007|5.003007|
2859 sv_eq|5.003007|5.003007|
2860 sv_eq_flags|5.013006|5.013006|
2861 sv_exp_grow|5.009003||Viu
2862 SVf|5.006000|5.003007|poVu
2863 SVfARG|5.009005||pVu
2864 sv_force_normal|5.006000|5.006000|
2865 sv_force_normal_flags|5.007001|5.007001|
2866 sv_free2|||xciu
2867 sv_free|5.003007|5.003007|
2868 sv_free_arenas|5.003007||Vi
2869 SVf_UTF8|5.006000|5.003007|p
2870 SvGAMAGIC|5.006001|5.006001|
2871 sv_get_backrefs|5.021008|5.021008|nx
2872 SvGETMAGIC|5.004005|5.003007|p
2873 sv_gets|5.003007|5.003007|
2874 SV_GMAGIC|5.007002|5.003007|p
2875 sv_grow|5.003007|5.003007|
2876 SvGROW|5.003007|5.003007|
2877 SV_HAS_TRAILING_NUL|5.009004|5.003007|p
2878 SV_IMMEDIATE_UNREF|5.007001|5.003007|p
2879 sv_inc|5.003007|5.003007|
2880 sv_i_ncmp|5.009003||Viu
2881 sv_inc_nomg|5.013002|5.013002|
2882 sv_insert|5.003007|5.003007|
2883 sv_insert_flags|5.010001|5.010001|
2884 SvIOK|5.003007|5.003007|
2885 SvIOK_notUV|5.006000|5.006000|
2886 SvIOK_off|5.003007|5.003007|
2887 SvIOK_on|5.003007|5.003007|
2888 SvIOK_only|5.003007|5.003007|
2889 SvIOK_only_UV|5.006000|5.006000|
2890 SvIOKp|5.003007|5.003007|
2891 SvIOK_UV|5.006000|5.006000|
2892 sv_isa|5.003007|5.003007|
2893 SvIsCOW|5.008003|5.008003|
2894 SvIsCOW_shared_hash|5.008003|5.008003|
2895 sv_isobject|5.003007|5.003007|
2896 SvIV|5.003007|5.003007|
2897 sv_iv|5.005000|5.005000|d
2898 SvIV_nomg|5.009001|5.007003|p
2899 SvIV_set|5.003007|5.003007|
2900 SvIVX|5.003007|5.003007|
2901 SvIVx|5.003007|5.003007|
2902 sv_kill_backrefs|||xiu
2903 sv_len|5.003007|5.003007|
2904 SvLEN|5.003007|5.003007|
2905 SvLEN_set|5.003007|5.003007|
2906 sv_len_utf8|5.006000|5.006000|p
2907 sv_len_utf8_nomg|5.017004||pViu
2908 SvLOCK|5.007003|5.007003|
2909 sv_magic|5.003007|5.003007|
2910 sv_magicext|5.007003|5.007003|
2911 sv_magicext_mglob|5.019002||cViu
2912 sv_magic_portable||5.004000|pou
2913 SvMAGIC_set|5.009003|5.003007|p
2914 sv_mortalcopy|5.003007|5.003007|
2915 sv_mortalcopy_flags|5.017005|5.007002|p
2916 SV_MUTABLE_RETURN|5.009003|5.003007|poVu
2917 sv_ncmp|5.009003||Viu
2918 sv_newmortal|5.003007|5.003007|
2919 sv_newref|5.003007|5.003007|
2920 SvNIOK|5.003007|5.003007|
2921 SvNIOK_off|5.003007|5.003007|
2922 SvNIOKp|5.003007|5.003007|
2923 SvNOK|5.003007|5.003007|
2924 SvNOK_off|5.003007|5.003007|
2925 SvNOK_on|5.003007|5.003007|
2926 SvNOK_only|5.003007|5.003007|
2927 SvNOKp|5.003007|5.003007|
2928 sv_nolocking|5.007003|5.007003|d
2929 sv_nosharing|5.007003|5.007003|
2930 SV_NOSTEAL|5.009002|5.007003|p
2931 sv_nounlocking|5.007003|5.007003|d
2932 SvNV|5.006000|5.003007|
2933 sv_nv|5.006000|5.005000|d
2934 SvNV_nomg|5.013002|5.007003|p
2935 SvNV_set|5.006000|5.003007|
2936 SvNVX|5.006000|5.003007|
2937 SvNVx|5.006000|5.003007|
2938 SvOK|5.003007|5.003007|
2939 sv_only_taint_gmagic|5.021010||nViu
2940 SvOOK|5.003007|5.003007|
2941 SvOOK_offset|5.011000|5.011000|
2942 sv_or_pv_pos_u2b|5.019004||Viu
2943 sv_peek|5.005000|5.005000|u
2944 SvPOK|5.003007|5.003007|
2945 SvPOK_off|5.003007|5.003007|
2946 SvPOK_on|5.003007|5.003007|
2947 SvPOK_only|5.003007|5.003007|
2948 SvPOK_only_UTF8|5.006000|5.006000|
2949 SvPOKp|5.003007|5.003007|
2950 sv_pos_b2u|5.006000|5.006000|
2951 sv_pos_b2u_flags|5.019003|5.019003|
2952 sv_pos_b2u_midway|5.009004||Viu
2953 sv_pos_u2b|5.006000|5.006000|
2954 sv_pos_u2b_cached|5.009004||Viu
2955 sv_pos_u2b_flags|5.011005|5.011005|
2956 sv_pos_u2b_forwards|5.009004||nViu
2957 sv_pos_u2b_midway|5.009004||nViu
2958 SvPV|5.003007|5.003007|
2959 sv_pv|5.006000|5.006000|
2960 SvPVbyte|5.006000|5.003007|p
2961 sv_pvbyte|5.006000|5.006000|
2962 SvPVbyte_force|5.009002|5.009002|
2963 sv_pvbyten|5.006000|5.006000|d
2964 sv_pvbyten_force|5.006000|5.006000|
2965 SvPVbyte_nolen|5.006000|5.006000|
2966 SvPVbyte_nomg|5.031004|5.031004|
2967 SvPVbyte_or_null|5.031004|5.031004|
2968 SvPVbyte_or_null_nomg|5.031004|5.031004|
2969 SvPVbytex|5.006000|5.006000|
2970 SvPVbytex_force|5.006000|5.006000|
2971 SvPVCLEAR|5.025006|5.025006|
2972 SvPV_const|5.009003||pVu
2973 SvPV_flags|5.007002||pVu
2974 SvPV_flags_const|5.009003||pVu
2975 SvPV_flags_const_nolen|5.009003||pVu
2976 SvPV_flags_mutable|5.009003||pVu
2977 SvPV_force|5.003007|5.003007|p
2978 SvPV_force_flags|5.007002||pVu
2979 SvPV_force_flags_mutable|5.009003||pVu
2980 SvPV_force_flags_nolen|5.009003||pVu
2981 SvPV_force_mutable|5.009003||pVu
2982 SvPV_force_nolen|5.009003||pVu
2983 SvPV_force_nomg|5.007002|5.003007|p
2984 SvPV_force_nomg_nolen|5.009003||pVu
2985 SvPV_mutable|5.009003||pVu
2986 sv_pvn|5.005000|5.005000|d
2987 sv_pvn_force|5.003007|5.003007|
2988 sv_pvn_force_flags|5.007002|5.003007|p
2989 sv_pvn_nomg|5.007003|5.005000|pdu
2990 SvPV_nolen|5.006000|5.003007|p
2991 SvPV_nolen_const|5.009003||pVu
2992 SvPV_nomg|5.007002|5.003007|p
2993 SvPV_nomg_const|5.009003||pVu
2994 SvPV_nomg_const_nolen|5.009003||pVu
2995 SvPV_nomg_nolen|5.013007|5.003007|p
2996 SvPV_renew|5.009003||pVu
2997 SvPV_set|5.003007|5.003007|
2998 sv_pvutf8|5.006000|5.006000|
2999 SvPVutf8|5.006000|5.006000|
3000 SvPVutf8_force|5.006000|5.006000|
3001 sv_pvutf8n|5.006000|5.006000|d
3002 sv_pvutf8n_force|5.006000|5.006000|
3003 SvPVutf8_nolen|5.006000|5.006000|
3004 SvPVutf8_nomg|5.031004|5.031004|
3005 SvPVutf8_or_null|5.031004|5.031004|
3006 SvPVutf8_or_null_nomg|5.031004|5.031004|
3007 SvPVutf8x|5.006000|5.006000|
3008 SvPVutf8x_force|5.006000|5.006000|
3009 SvPVX|5.003007|5.003007|
3010 SvPVx|5.003007|5.003007|
3011 SvPVX_const|5.009003||pVu
3012 SvPVX_mutable|5.009003||pVu
3013 SvREADONLY|5.003007|5.003007|
3014 SvREADONLY_off|5.003007|5.003007|
3015 SvREADONLY_on|5.003007|5.003007|
3016 sv_recode_to_utf8|5.007003|5.007003|
3017 sv_ref|5.015004|5.015004|
3018 SvREFCNT|5.003007|5.003007|
3019 SvREFCNT_dec|5.003007|5.003007|
3020 SvREFCNT_dec_NN|5.017007|5.017007|
3021 SvREFCNT_inc|5.003007|5.003007|pn
3022 SvREFCNT_inc_NN|5.009004|5.003007|pn
3023 SvREFCNT_inc_simple|5.009004|5.003007|p
3024 SvREFCNT_inc_simple_NN|5.009004|5.003007|p
3025 SvREFCNT_inc_simple_void|5.009004|5.003007|p
3026 SvREFCNT_inc_simple_void_NN|5.009004|5.003007|p
3027 SvREFCNT_inc_void|5.009004|5.003007|pn
3028 SvREFCNT_inc_void_NN|5.009004|5.003007|p
3029 sv_reftype|5.003007|5.003007|
3030 sv_replace|5.003007|5.003007|
3031 sv_report_used|5.003007|5.003007|
3032 sv_reset|5.003007|5.003007|
3033 sv_resetpvn|5.017005||Viu
3034 SvROK|5.003007|5.003007|
3035 SvROK_off|5.003007|5.003007|
3036 SvROK_on|5.003007|5.003007|
3037 SvRV|5.003007|5.003007|
3038 SvRV_set|5.009003|5.003007|p
3039 sv_rvunweaken|5.027004|5.027004|
3040 sv_rvweaken|5.006000|5.006000|
3041 SvRX|5.009005|5.003007|p
3042 SvRXOK|5.009005|5.003007|p
3043 sv_sethek|5.015004||cViu
3044 sv_setiv|5.003007|5.003007|
3045 sv_setiv_mg|5.004005|5.003007|p
3046 SvSETMAGIC|5.003007|5.003007|
3047 SvSetMagicSV|5.004000|5.004000|
3048 SvSetMagicSV_nosteal|5.004000|5.004000|
3049 sv_setnv|5.006000|5.003007|
3050 sv_setnv_mg|5.006000|5.003007|p
3051 sv_setpv|5.003007|5.003007|
3052 sv_setpv_bufsize|5.025006|5.025006|
3053 sv_setpvf|5.006000|5.004000|v
3054 sv_setpvf_mg|5.006000|5.004000|pv
3055 sv_setpvf_mg_nocontext|5.006000||pvnVu
3056 sv_setpvf_nocontext|5.006000||vnVu
3057 sv_setpviv|5.008001|5.008001|d
3058 sv_setpviv_mg|5.008001|5.008001|d
3059 sv_setpv_mg|5.004005|5.003007|p
3060 sv_setpvn|5.003007|5.003007|
3061 sv_setpvn_mg|5.004005|5.003007|p
3062 sv_setpvs|5.009004|5.003007|p
3063 sv_setpvs_mg|5.013006|5.013006|
3064 sv_setref_iv|5.003007|5.003007|
3065 sv_setref_nv|5.006000|5.003007|
3066 sv_setref_pv|5.003007|5.003007|
3067 sv_setref_pvn|5.003007|5.003007|
3068 sv_setref_pvs|5.013006|5.013006|
3069 sv_setref_uv|5.007001|5.007001|
3070 sv_setsv|5.003007|5.003007|
3071 SvSetSV|5.003007|5.003007|
3072 sv_setsv_cow|5.009000||xcViu
3073 sv_setsv_flags|5.007002|5.007002|p
3074 sv_setsv_mg|5.004005|5.003007|p
3075 sv_setsv_nomg|5.007002|5.003007|p
3076 SvSetSV_nosteal|5.004000|5.004000|
3077 sv_set_undef|5.025008|5.025008|
3078 sv_setuv|5.004000|5.003007|p
3079 sv_setuv_mg|5.004005|5.003007|p
3080 SvSHARE|5.007003|5.007003|
3081 SvSHARED_HASH|5.009003||pVu
3082 SV_SMAGIC|5.009003|5.003007|p
3083 SvSTASH|5.003007|5.003007|
3084 SvSTASH_set|5.009003|5.003007|p
3085 SVs_TEMP|5.003007|5.003007|
3086 sv_string_from_errnum|5.027003|5.027003|
3087 SvTAINT|5.003007|5.003007|
3088 sv_taint|5.004000|5.004000|
3089 sv_tainted|5.004000|5.004000|
3090 SvTAINTED|5.004000|5.004000|
3091 SvTAINTED_off|5.004000|5.004000|
3092 SvTAINTED_on|5.004000|5.004000|
3093 SvTHINKFIRST|||i
3094 SVt_INVLIST|||c
3095 SVt_IV|5.003007|5.003007|
3096 SVt_NULL|5.003007|5.003007|
3097 SVt_NV|5.003007|5.003007|
3098 SVt_PV|5.003007|5.003007|
3099 SVt_PVAV|5.003007|5.003007|
3100 SVt_PVCV|5.003007|5.003007|
3101 SVt_PVFM|5.003007|5.003007|
3102 SVt_PVGV|5.003007|5.003007|
3103 SVt_PVHV|5.003007|5.003007|
3104 SVt_PVIO|5.003007|5.003007|
3105 SVt_PVIV|5.003007|5.003007|
3106 SVt_PVLV|5.003007|5.003007|
3107 SVt_PVMG|5.003007|5.003007|
3108 SVt_PVNV|5.003007|5.003007|
3109 SVt_REGEXP|5.011000|5.011000|
3110 SvTRUE|5.003007|5.003007|
3111 sv_true|5.005000|5.005000|
3112 SvTRUE_nomg|5.013006|5.007003|p
3113 SvTRUEx|5.003007|5.003007|
3114 SvTYPE|5.003007|5.003007|
3115 svtype|5.003007|5.003007|V
3116 sv_unglob|5.005000||Viu
3117 sv_uni_display|5.007003|5.007003|
3118 SvUNLOCK|5.007003|5.007003|
3119 sv_unmagic|5.003007|5.003007|
3120 sv_unmagicext|5.013008|5.003007|p
3121 sv_unref|5.003007|5.003007|
3122 sv_unref_flags|5.007001|5.007001|
3123 sv_untaint|5.004000|5.004000|
3124 SvUOK|5.007001|5.006000|p
3125 sv_upgrade|5.003007|5.003007|
3126 SvUPGRADE|5.003007|5.003007|
3127 sv_usepvn|5.003007|5.003007|
3128 sv_usepvn_flags|5.009004|5.009004|
3129 sv_usepvn_mg|5.004005|5.003007|p
3130 SvUTF8|5.006000|5.006000|
3131 sv_utf8_decode|5.006000|5.006000|
3132 sv_utf8_downgrade|5.006000|5.006000|
3133 sv_utf8_downgrade_flags|5.031004|5.031004|
3134 sv_utf8_downgrade_nomg|5.031004|5.031004|
3135 sv_utf8_encode|5.006000|5.006000|
3136 SV_UTF8_NO_ENCODING|5.008001|5.003007|poVu
3137 SvUTF8_off|5.006000|5.006000|
3138 SvUTF8_on|5.006000|5.006000|
3139 sv_utf8_upgrade|5.007001|5.007001|
3140 sv_utf8_upgrade_flags|5.007002|5.007002|
3141 sv_utf8_upgrade_flags_grow|5.011000|5.011000|
3142 sv_utf8_upgrade_nomg|5.007002|5.007002|
3143 SvUV|5.004000|5.003007|p
3144 sv_uv|5.005000|5.003007|pd
3145 SvUV_nomg|5.009001|5.007003|p
3146 SvUV_set|5.009003|5.003007|p
3147 SvUVX|5.004000|5.003007|p
3148 SvUVx|5.004000|5.003007|p
3149 SvUVXx|5.004000|5.003007|pd
3150 sv_vcatpvf|5.006000|5.004000|p
3151 sv_vcatpvf_mg|5.006000|5.004000|p
3152 sv_vcatpvfn|5.004000|5.004000|
3153 sv_vcatpvfn_flags|5.017002|5.017002|
3154 SvVOK|5.008001|5.008001|
3155 sv_vsetpvf|5.006000|5.004000|p
3156 sv_vsetpvf_mg|5.006000|5.004000|p
3157 sv_vsetpvfn|5.004000|5.004000|
3158 SvVSTRING_mg|5.009004||pVu
3159 swallow_bom|5.006001||Viu
3160 swash_fetch|5.006000||cViu
3161 swash_init|5.006000||cViu
3162 swash_scan_list_line|5.021001||Viu
3163 swatch_get|5.015007||Viu
3164 switch_category_locale_to_template|5.027009||Viu
3165 switch_to_global_locale|5.027009|5.003007|pn
3166 sync_locale|5.027009|5.003007|pn
3167 sys_init3|5.010000|5.010000|nu
3168 sys_init|5.010000|5.010000|nu
3169 sys_intern_clear|5.006001||Vu
3170 sys_intern_dup|5.006000||Vu
3171 sys_intern_init|5.006001||Vu
3172 sys_term|5.010000|5.010000|nu
3173 taint_env|5.003007|5.003007|u
3174 taint_proper|5.003007|5.003007|u
3175 THIS|5.003007|5.003007|V
3176 thread_locale_init|5.027009|5.027009|nxu
3177 thread_locale_term|5.027009|5.027009|nxu
3178 tied_method|5.013009||vViu
3179 tmps_grow_p|5.021005||cViu
3180 to_byte_substr|5.008000||Viu
3181 toFOLD|5.019001|5.019001|
3182 _to_fold_latin1|5.015005||ncViu
3183 toFOLD_utf8|5.019001|5.019001|
3184 toFOLD_utf8_safe|5.025009|5.025009|
3185 toFOLD_uvchr|5.023009|5.023009|
3186 tokenize_use|5.009003||Viu
3187 tokeq|5.005000||Viu
3188 tokereport|5.007001||Viu
3189 toLOWER|5.003007|5.003007|
3190 toLOWER_L1|5.019001|5.019001|
3191 to_lower_latin1|5.015005||nViu
3192 toLOWER_LC|5.004000|5.004000|
3193 toLOWER_utf8|5.015007|5.015007|
3194 toLOWER_utf8_safe|5.025009|5.025009|
3195 toLOWER_uvchr|5.023009|5.023009|
3196 too_few_arguments_pv|5.016000||Viu
3197 too_many_arguments_pv|5.016000||Viu
3198 TOPMARK|||ciu
3199 toTITLE|5.019001|5.019001|
3200 toTITLE_utf8|5.015007|5.015007|
3201 toTITLE_utf8_safe|5.025009|5.025009|
3202 toTITLE_uvchr|5.023009|5.023009|
3203 to_uni_fold|5.031004||cVu
3204 _to_uni_fold_flags|5.014000||cVu
3205 to_uni_lower|5.006000||cVu
3206 to_uni_lower_lc|5.006000||dcVu
3207 to_uni_title|5.006000||cVu
3208 to_uni_title_lc|5.006000||dcVu
3209 to_uni_upper|5.006000||cVu
3210 to_uni_upper_lc|5.006000||dcVu
3211 toUPPER|5.003007|5.003007|
3212 _to_upper_title_latin1|5.015005||Viu
3213 toUPPER_utf8|5.015007|5.015007|
3214 toUPPER_utf8_safe|5.025009|5.025009|
3215 toUPPER_uvchr|5.023009|5.023009|
3216 _to_utf8_case|5.023006||Viu
3217 to_utf8_fold|5.015007|5.015007|d
3218 _to_utf8_fold_flags|5.014000||cVu
3219 to_utf8_lower|5.015007|5.015007|d
3220 _to_utf8_lower_flags|5.015006||cVu
3221 to_utf8_substr|5.008000||Viu
3222 to_utf8_title|5.015007|5.015007|d
3223 _to_utf8_title_flags|5.015006||cVu
3224 to_utf8_upper|5.015007|5.015007|d
3225 _to_utf8_upper_flags|5.015006||cVu
3226 translate_substr_offsets|5.015006||nViu
3227 traverse_op_tree|5.029008||Vi
3228 try_amagic_bin|||ciu
3229 try_amagic_un|||ciu
3230 turkic_fc|5.029008||Viu
3231 turkic_lc|5.029008||Viu
3232 turkic_uc|5.029008||Viu
3233 U16SIZE|5.006000|5.006000|
3234 U16TYPE|5.006000|5.006000|
3235 U32SIZE|5.006000|5.006000|
3236 U32TYPE|5.006000|5.006000|
3237 U8SIZE|5.006000|5.006000|
3238 U8TYPE|5.006000|5.006000|
3239 uiv_2buf|5.009003||nViu
3240 UNDERBAR|5.009002|5.003007|p
3241 unexpected_non_continuation_text|5.025006||Viu
3242 UNICODE_REPLACEMENT|5.007001|5.003007|p
3243 UNI_TO_NATIVE|5.007001|5.007001|
3244 UNLIKELY|5.009004|5.003007|p
3245 unlnk|5.003007||Vu
3246 unpack_rec|5.008001||Viu
3247 unpack_str|5.007003|5.007003|d
3248 unpackstring|5.008001|5.008001|
3249 unreferenced_to_tmp_stack|5.013002||Viu
3250 unshare_hek|5.004000||Viu
3251 unshare_hek_or_pvn|5.008000||Viu
3252 unsharepvn|5.003007|5.003007|u
3253 unwind_handler_stack|5.009003||Viu
3254 update_debugger_info|5.009005||Viu
3255 upg_version|5.009005|5.009005|
3256 usage|5.005000||Viu
3257 utf16_textfilter|5.011001||Viu
3258 utf16_to_utf8|5.006000||cViu
3259 utf16_to_utf8_reversed|5.006000||cViu
3260 utf8_distance|5.006000|5.006000|
3261 utf8_hop|5.006000|5.006000|n
3262 utf8_hop_back|5.025007|5.025007|n
3263 utf8_hop_forward|5.025007|5.025007|n
3264 utf8_hop_safe|5.025007|5.025007|n
3265 UTF8_IS_INVARIANT|5.007001|5.003007|p
3266 UTF8_IS_NONCHAR|5.023002|5.023002|
3267 UTF8_IS_SUPER|5.023002|5.023002|
3268 UTF8_IS_SURROGATE|5.023002|5.023002|
3269 utf8_length|5.007001|5.007001|
3270 UTF8_MAXBYTES|5.009002|5.006000|p
3271 utf8_mg_len_cache_update|5.013003||Viu
3272 utf8_mg_pos_cache_update|5.009004||Viu
3273 utf8n_to_uvchr|5.007001|5.007001|n
3274 utf8n_to_uvchr_error|5.025006|5.025006|n
3275 utf8n_to_uvchr_msgs|5.027009|5.027009|nx
3276 _utf8n_to_uvchr_msgs_helper|5.029001||ncVu
3277 utf8n_to_uvuni|5.007001||cV
3278 UTF8_SAFE_SKIP|5.029009|5.006000|p
3279 UTF8SKIP|5.006000|5.006000|
3280 utf8_to_bytes|5.006001|5.006001|x
3281 utf8_to_uvchr|5.007001|5.006001|pd
3282 utf8_to_uvchr_buf|5.015009|5.006001|p
3283 utf8_to_uvchr_buf_helper|5.031004||cVu
3284 utf8_to_uvuni|5.007001||dcV
3285 utf8_to_uvuni_buf|5.015009||dcV
3286 utilize|5.003007||Viu
3287 UVCHR_IS_INVARIANT|5.019004|5.003007|p
3288 UVCHR_SKIP|5.022000|5.003007|p
3289 uvchr_to_utf8|5.007001|5.007001|
3290 uvchr_to_utf8_flags|5.007003|5.007003|
3291 uvchr_to_utf8_flags_msgs|5.027009|5.027009|x
3292 UVof|5.006000|5.003007|p
3293 uvoffuni_to_utf8_flags|||c
3294 uvoffuni_to_utf8_flags_msgs|5.027009||cVu
3295 UVSIZE|5.006000|5.003007|p
3296 UVTYPE|5.006000|5.003007|p
3297 UVuf|5.006000|5.003007|p
3298 uvuni_to_utf8|5.019004||cVu
3299 uvuni_to_utf8_flags|5.007003||cV
3300 UVxf|5.006000|5.003007|p
3301 UVXf|5.007001|5.007001|p
3302 validate_proto|5.019002||xcVi
3303 validate_suid|||iu
3304 valid_utf8_to_uvchr|5.015009||ncV
3305 valid_utf8_to_uvuni|5.015009||dcVu
3306 variant_byte_number|5.031004||ncVu
3307 variant_under_utf8_count|5.027007||nVi
3308 varname|5.009003||Viu
3309 vcmp|5.009000|5.009000|
3310 vcroak|5.006000|5.006000|
3311 vdeb|5.007003|5.007003|u
3312 vform|5.006000|5.006000|u
3313 visit|5.005000||Viu
3314 vivify_defelem|5.004000||cViu
3315 vivify_ref|5.004000||Viu
3316 vload_module|5.006000|5.003007|pu
3317 vmess|5.006000|5.004000|p
3318 vnewSVpvf|5.006000|5.004000|pu
3319 vnormal|5.009002|5.009002|
3320 vnumify|5.009000|5.009000|
3321 vstringify|5.009000|5.009000|
3322 vverify|5.009003|5.009003|
3323 vwarn|5.006000|5.006000|
3324 vwarner|5.006000|5.006000|u
3325 wait4pid|5.003007||Viu
3326 warn|5.006000|5.003007|v
3327 WARN_ALL|5.006000|5.003007|p
3328 WARN_AMBIGUOUS|5.006000|5.003007|p
3329 WARN_ASSERTIONS||5.003007|pou
3330 WARN_BAREWORD|5.006000|5.003007|p
3331 WARN_CLOSED|5.006000|5.003007|p
3332 WARN_CLOSURE|5.006000|5.003007|p
3333 WARN_DEBUGGING|5.006000|5.003007|p
3334 WARN_DEPRECATED|5.006000|5.003007|p
3335 WARN_DIGIT|5.006000|5.003007|p
3336 warner|5.006000|5.004000|pvu
3337 warner_nocontext|5.006000||vnVu
3338 WARN_EXEC|5.006000|5.003007|p
3339 WARN_EXITING|5.006000|5.003007|p
3340 WARN_EXPERIMENTAL|5.017004|5.017004|
3341 WARN_EXPERIMENTAL__ALPHA_ASSERTIONS|5.027009|5.027009|
3342 WARN_EXPERIMENTAL__BITWISE|5.021009|5.021009|
3343 WARN_EXPERIMENTAL__CONST_ATTR|5.021008|5.021008|
3344 WARN_EXPERIMENTAL__DECLARED_REFS|5.025003|5.025003|
3345 WARN_EXPERIMENTAL__LEXICAL_SUBS|5.017005|5.017005|
3346 WARN_EXPERIMENTAL__POSTDEREF|5.019005|5.019005|
3347 WARN_EXPERIMENTAL__PRIVATE_USE|5.029009|5.029009|
3348 WARN_EXPERIMENTAL__REFALIASING|5.021005|5.021005|
3349 WARN_EXPERIMENTAL__REGEX_SETS|5.017008|5.017008|
3350 WARN_EXPERIMENTAL__RE_STRICT|5.021008|5.021008|
3351 WARN_EXPERIMENTAL__SCRIPT_RUN|5.027008|5.027008|
3352 WARN_EXPERIMENTAL__SIGNATURES|5.019009|5.019009|
3353 WARN_EXPERIMENTAL__SMARTMATCH|5.017011|5.017011|
3354 WARN_EXPERIMENTAL__UNIPROP_WILDCARDS|5.029009|5.029009|
3355 WARN_EXPERIMENTAL__VLB|5.029009|5.029009|
3356 WARN_EXPERIMENTAL__WIN32_PERLIO|5.021001|5.021001|
3357 WARN_GLOB|5.006000|5.003007|p
3358 WARN_ILLEGALPROTO|5.011004|5.011004|
3359 WARN_IMPRECISION|5.011000|5.011000|
3360 WARN_INPLACE|5.006000|5.003007|p
3361 WARN_INTERNAL|5.006000|5.003007|p
3362 WARN_IO|5.006000|5.003007|p
3363 WARN_LAYER|5.008000|5.003007|p
3364 WARN_LOCALE|5.021006|5.021006|
3365 WARN_MALLOC|5.006000|5.003007|p
3366 WARN_MISC|5.006000|5.003007|p
3367 WARN_MISSING|5.021002|5.021002|
3368 WARN_NEWLINE|5.006000|5.003007|p
3369 warn_nocontext|5.006000||pvnVu
3370 WARN_NONCHAR|5.013010|5.013010|
3371 WARN_NON_UNICODE|5.013010|5.013010|
3372 WARN_NUMERIC|5.006000|5.003007|p
3373 WARN_ONCE|5.006000|5.003007|p
3374 warn_on_first_deprecated_use|5.025009||Viu
3375 WARN_OVERFLOW|5.006000|5.003007|p
3376 WARN_PACK|5.006000|5.003007|p
3377 WARN_PARENTHESIS|5.006000|5.003007|p
3378 WARN_PIPE|5.006000|5.003007|p
3379 WARN_PORTABLE|5.006000|5.003007|p
3380 WARN_PRECEDENCE|5.006000|5.003007|p
3381 WARN_PRINTF|5.006000|5.003007|p
3382 _warn_problematic_locale|5.021008||ncViu
3383 WARN_PROTOTYPE|5.006000|5.003007|p
3384 WARN_QW|5.006000|5.003007|p
3385 WARN_RECURSION|5.006000|5.003007|p
3386 WARN_REDEFINE|5.006000|5.003007|p
3387 WARN_REDUNDANT|5.021002|5.021002|
3388 WARN_REGEXP|5.006000|5.003007|p
3389 WARN_RESERVED|5.006000|5.003007|p
3390 WARN_SEMICOLON|5.006000|5.003007|p
3391 WARN_SEVERE|5.006000|5.003007|p
3392 WARN_SHADOW|5.027007|5.027007|
3393 WARN_SIGNAL|5.006000|5.003007|p
3394 WARN_SUBSTR|5.006000|5.003007|p
3395 WARN_SURROGATE|5.013010|5.013010|
3396 warn_sv|5.013001|5.003007|p
3397 WARN_SYNTAX|5.006000|5.003007|p
3398 WARN_SYSCALLS|5.019004|5.019004|
3399 WARN_TAINT|5.006000|5.003007|p
3400 WARN_THREADS|5.008000|5.003007|p
3401 WARN_UNINITIALIZED|5.006000|5.003007|p
3402 WARN_UNOPENED|5.006000|5.003007|p
3403 WARN_UNPACK|5.006000|5.003007|p
3404 WARN_UNTIE|5.006000|5.003007|p
3405 WARN_UTF8|5.006000|5.003007|p
3406 WARN_VOID|5.006000|5.003007|p
3407 was_lvalue_sub|||ciu
3408 watch|5.003007||Viu
3409 whichsig|5.003007|5.003007|u
3410 whichsig_pv|5.015004|5.015004|u
3411 whichsig_pvn|5.015004|5.015004|u
3412 whichsig_sv|5.015004|5.015004|u
3413 WIDEST_UTYPE|5.015004|5.003007|p
3414 win32_croak_not_implemented|5.017006||nViu
3415 win32_setlocale|5.027006||Viu
3416 WITH_LC_NUMERIC_SET_TO_NEEDED|5.031003|5.031003|
3417 WITH_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003|
3418 with_queued_errors|5.013001||Viu
3419 wrap_keyword_plugin|5.027006|5.027006|x
3420 wrap_op_checker|5.015008|5.015008|
3421 write_to_stderr|5.008001||Viu
3422 XCPT_CATCH|5.009002|5.003007|p
3423 XCPT_RETHROW|5.009002|5.003007|p
3424 XCPT_TRY_END|5.009002|5.003007|p
3425 XCPT_TRY_START|5.009002|5.003007|p
3426 XopDISABLE|5.013007|5.013007|V
3427 XopENABLE|5.013007|5.013007|V
3428 XopENTRY|5.013007|5.013007|V
3429 XopENTRYCUSTOM|5.019006|5.013007|V
3430 XopENTRY_set|5.013007|5.013007|V
3431 XopFLAGS|5.013007|5.013007|
3432 XPUSHi|5.003007|5.003007|
3433 XPUSHmortal|5.009002|5.003007|p
3434 XPUSHn|5.006000|5.003007|
3435 XPUSHp|5.003007|5.003007|
3436 XPUSHs|5.003007|5.003007|
3437 XPUSHu|5.004000|5.003007|p
3438 XS|5.003007|5.003007|V
3439 XS_APIVERSION_BOOTCHECK|5.013004|5.013004|
3440 xs_boot_epilog|5.021006||cViu
3441 XS_EXTERNAL|5.015002|5.015002|V
3442 xs_handshake|||vnciu
3443 XS_INTERNAL|5.015002|5.015002|V
3444 XSprePUSH|5.006000|5.003007|poVu
3445 XSPROTO|5.010000||pVu
3446 XSRETURN|5.003007|5.003007|p
3447 XSRETURN_EMPTY|5.003007|5.003007|
3448 XSRETURN_IV|5.003007|5.003007|
3449 XSRETURN_NO|5.003007|5.003007|
3450 XSRETURN_NV|5.006000|5.003007|
3451 XSRETURN_PV|5.003007|5.003007|
3452 XSRETURN_UNDEF|5.003007|5.003007|
3453 XSRETURN_UV|5.008001|5.003007|p
3454 XSRETURN_YES|5.003007|5.003007|
3455 XST_mIV|5.003007|5.003007|
3456 XST_mNO|5.003007|5.003007|
3457 XST_mNV|5.006000|5.003007|
3458 XST_mPV|5.003007|5.003007|
3459 XST_mUNDEF|5.003007|5.003007|
3460 XST_mUV|5.008001|5.003007|p
3461 XST_mYES|5.003007|5.003007|
3462 XS_VERSION|5.003007|5.003007|
3463 XS_VERSION_BOOTCHECK|5.003007|5.003007|
3464 xs_version_bootcheck|||iu
3465 yyerror|5.003007||Viu
3466 yyerror_pv|5.016000||Viu
3467 yyerror_pvn|5.016000||Viu
3468 yylex|5.003007||cViu
3469 yyparse|5.003007||Viu
3470 yyquit|5.025010||Viu
3471 yyunlex|5.013005||Viu
3472 yywarn|5.003007||Viu
3473 Zero|5.003007|5.003007|
3474 ZeroD|5.009002|5.003007|p
3475 );
3476 
3477 if (exists $opt{'list-unsupported'}) {
3478   my $f;
3479   for $f (sort dictionary_order keys %API) {
3480     next if $API{$f}{core_only};
3481     next if $API{$f}{beyond_depr};
3482     next if $API{$f}{inaccessible};
3483     next if $API{$f}{experimental};
3484     next unless $API{$f}{todo};
3485     next if int_parse_version($API{$f}{todo}) <= $int_min_perl;
3486     print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n";
3487   }
3488   exit 0;
3489 }
3490 
3491 # Scan for hints, possible replacement candidates, etc.
3492 
3493 my(%replace, %need, %hints, %warnings, %depends);
3494 my $replace = 0;
3495 my($hint, $define, $function);
3496 
3497 sub find_api
3498 {
3499   my $code = shift;
3500   no warnings 'uninitialized';
3501   $code =~ s{
3502     / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
3503   | "[^"\\]*(?:\\.[^"\\]*)*"
3504   | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx;
3505   grep { exists $API{$_} } $code =~ /(\w+)/mg;
3506 }
3507 
3508 while (<DATA>) {
3509   if ($hint) {
3510 
3511     # Here, we are in the middle of accumulating a hint or warning.
3512     my $end_of_hint = 0;
3513 
3514     # A line containing a comment end marker closes the hint.  Remove that
3515     # marker for processing below.
3516     if (s/\s*$rcce(.*?)\s*$//) {
3517         die "Nothing can follow the end of comment in '$_'\n" if length $1 > 0;
3518         $end_of_hint = 1;
3519     }
3520 
3521     # Set $h to the hash of which type.
3522     my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings;
3523 
3524     # Ignore any leading and trailing white space, and an optional star comment
3525     # continuation marker, then place the meat of the line into $1
3526     m/^\s*(?:\*\s*)?(.*?)\s*$/;
3527 
3528     # Add the meat of this line to the hash value of each API element it
3529     # applies to
3530     for (@{$hint->[1]}) {
3531       $h->{$_} ||= '';  # avoid the warning older perls generate
3532       $h->{$_} .= "$1\n";
3533     }
3534 
3535     # If the line had a comment close, we are through with this hint
3536     undef $hint if $end_of_hint;
3537 
3538     next;
3539   }
3540 
3541   # Set up $hint if this is the beginning of a Hint: or Warning:
3542   # These are from a multi-line C comment in the file, with the first line
3543   # looking like (a space has been inserted because this file can't have C
3544   # comment markers in it):
3545   #   / * Warning: PL_expect, PL_copline, PL_rsfp
3546   #
3547   # $hint becomes
3548   #     [
3549   #      'Warning',
3550   #                [
3551   #                  'PL_expect',
3552   #                  'PL_copline',
3553   #                  'PL_rsfp',
3554   #                ],
3555   #     ]
3556   if (m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}) {
3557       $hint = [$1, [split /,?\s+/, $2]];
3558       next;
3559   }
3560 
3561   if ($define) { # If in the middle of a definition...
3562 
3563     # append a continuation line ending with backslash.
3564     if ($define->[1] =~ /\\$/) {
3565       $define->[1] .= $_;
3566     }
3567     else {  # Otherwise this line ends the definition, make foo depend on bar
3568             # (and what bar depends on) if its not one of ppp's own constructs
3569       if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) {
3570         my @n = find_api($define->[1]);
3571         push @{$depends{$define->[0]}}, @n if @n
3572       }
3573       undef $define;
3574     }
3575   }
3576 
3577   # For '#define foo bar' or '#define foo(a,b,c) bar', $define becomes a
3578   # reference to [ foo, bar ]
3579   $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)};
3580 
3581   if ($function) {
3582     if (/^}/) {
3583       if (exists $API{$function->[0]}) {
3584         my @n = find_api($function->[1]);
3585         push @{$depends{$function->[0]}}, @n if @n
3586       }
3587       undef $function;
3588     }
3589     else {
3590       $function->[1] .= $_;
3591     }
3592   }
3593 
3594   $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)};
3595 
3596   # Set $replace to the number given for lines that look like
3597   # / * Replace: \d+ * /
3598   # (blanks added to keep real C comments from appearing in this file)
3599   # Thus setting it to 1 starts a region where replacements are automatically
3600   # done, and setting it to 0 ends that region.
3601   $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$};
3602 
3603   # Add bar => foo to %replace  for lines like '#define foo bar in a region
3604   # where $replace is non-zero
3605   $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)};
3606 
3607   # Add bar => foo to %replace for lines like '#define foo bar  / * Replace * /
3608   # (blanks added to keep real C comments from appearing in this file)
3609   $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce};
3610 
3611   # Add foo => bar to %replace for lines like / * Replace foo with bar * /
3612   # (blanks added to keep real C comments from appearing in this file)
3613   $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$};
3614 
3615   # For lines like / * foo, bar depends on baz, bat * /
3616   # create a list of the elements on the rhs, and make that list apply to each
3617   # element in the lhs, which becomes a key in \%depends.
3618   # (blanks added to keep real C comments from appearing in this file)
3619   if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) {
3620     my @deps = map { s/\s+//g; $_ } split /,/, $3;
3621     my $d;
3622     for $d (map { s/\s+//g; $_ } split /,/, $1) {
3623       push @{$depends{$d}}, @deps;
3624     }
3625   }
3626 
3627   $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)};
3628 }
3629 
3630 for (values %depends) {
3631   my %seen;
3632   $_ = [sort dictionary_order grep !$seen{$_}++, @$_];
3633 }
3634 
3635 if (exists $opt{'api-info'}) {
3636   my $f;
3637   my $count = 0;
3638   my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
3639   for $f (sort dictionary_order keys %API) {
3640     next unless $f =~ /$match/;
3641     print "\n=== $f ===\n";
3642     my $info = 0;
3643     my $base;
3644     $base = int_parse_version($API{$f}{base}) if $API{$f}{base};
3645     my $todo;
3646     $todo = int_parse_version($API{$f}{todo}) if $API{$f}{todo};
3647 
3648     # Output information if it is generally publicly usable
3649     if ($base && ! $API{$f}{inaccessible} && ! $API{$f}{core_only}) {
3650         my $with_or= "";
3651         if (    $base <= $int_min_perl
3652             || (   (! $API{$f}{provided} && ! $todo)
3653                 || ($todo && $todo >= $base)))
3654         {
3655             $with_or= " with or";
3656         }
3657         print "\nSupported at least since perl-",
3658               format_version($base), ",$with_or without $ppport.";
3659         if ($API{$f}{unverified}) {
3660             print "\nThis information is based on inspection of the source code",
3661                   " and has not been\n",
3662                   "verified by successful compilation.";
3663         }
3664         print "\n";
3665         $info++;
3666      }
3667      if ($API{$f}{provided} || $todo) {
3668         print "\nThis is only supported by $ppport, and NOT by perl versions going forward.\n" unless $base;
3669         if ($todo) {
3670             if (! $base || $todo < $base) {
3671                 my $additionally = "";
3672                 $additionally .= " additionally" if $base;
3673                 print "$ppport$additionally provides support at least back to perl-",
3674                     format_version($todo),
3675                     ".\n";
3676             }
3677         }
3678         elsif (! $base || $base > $int_min_perl) {
3679             if (exists $depends{$f}) {
3680                 my $max = 0;
3681                 for (@{$depends{$f}}) {
3682                     $max = int_parse_version($API{$_}{todo}) if $API{$_}{todo} && $API{$_}{todo} > $max;
3683                     # XXX What to assume unspecified values are?  This effectively makes them MIN_PERL
3684                 }
3685                 $todo = $max if $max;
3686             }
3687             print "\n$ppport provides support for this, but ironically, does not",
3688                   " currently know,\n",
3689                   "for this report, the minimum version it supports for this";
3690             if ($API{$f}{undocumented}) {
3691                 print " and many things\n",
3692                       "it provides that are implemented as macros and aren't",
3693                       " documented.  You can\n",
3694                       "help by submitting a documentation patch";
3695             }
3696             print ".\n";
3697             if ($todo) {
3698                 if ($todo <= $int_min_perl) {
3699                     print "It may very well be supported all the way back to ",
3700                           format_version(5.003_07), ".\n";
3701                 }
3702                 else {
3703                     print "But given the things $f depends on, it's a good",
3704                           " guess that it isn't\n",
3705                           "supported prior to ", format_version($todo), ".\n";
3706                 }
3707             }
3708         }
3709     }
3710     if ($API{$f}{provided}) {
3711       print "Support needs to be explicitly requested by #define NEED_$f\n",
3712             "(or #define NEED_${f}_GLOBAL).\n"              if exists $need{$f};
3713       $info++;
3714     }
3715 
3716     if ($base || ! $API{$f}{ppport_fnc}) {
3717       my $email = "Send email to perl5-porters\@perl.org if you need to have this functionality.\n";
3718       if ($API{$f}{inaccessible}) {
3719         print "\nThis is not part of the public API, and may not even be accessible to XS code.\n";
3720         $info++;
3721       }
3722       elsif ($API{$f}{core_only}) {
3723         print "\nThis is not part of the public API, and should not be used by XS code.\n";
3724         $info++;
3725       }
3726       elsif ($API{$f}{deprecated}) {
3727         print "\nThis is deprecated and should not be used.  Convert existing uses.\n";
3728         $info++;
3729       }
3730       elsif ($API{$f}{experimental}) {
3731         print "\nThe API for this is unstable and should not be used by XS code.\n", $email;
3732         $info++;
3733       }
3734       elsif ($API{$f}{undocumented}) {
3735         print "\nSince this is undocumented, the API should be considered unstable.\n";
3736         if ($API{$f}{provided}) {
3737             print "Consider bringing this up on the list: perl5-porters\@perl.org.\n";
3738         }
3739         else {
3740             print "It may be that this is not intended for XS use, or it may just be\n",
3741                   "that no one has gotten around to documenting it.\n", $email;
3742         }
3743         $info++;
3744       }
3745       unless ($info) {
3746         print "No portability information available.  Check your spelling; or",
3747               " this could be\na bug in Devel::PPPort.  To report an issue:\n",
3748               "https://github.com/Dual-Life/Devel-PPPort/issues/new\n";
3749       }
3750     }
3751 
3752     print "\nDepends on: ", join(', ', @{$depends{$f}}), ".\n"
3753                                                          if exists $depends{$f};
3754     if (exists $hints{$f} || exists $warnings{$f}) {
3755       print "\n$hints{$f}" if exists $hints{$f};
3756       print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f};
3757       $info++;
3758     }
3759     $count++;
3760   }
3761 
3762   $count or print "\nFound no API matching '$opt{'api-info'}'.";
3763   print "\n";
3764   exit 0;
3765 }
3766 
3767 if (exists $opt{'list-provided'}) {
3768   my $f;
3769   for $f (sort dictionary_order keys %API) {
3770     next unless $API{$f}{provided};
3771     my @flags;
3772     push @flags, 'explicit' if exists $need{$f};
3773     push @flags, 'depend'   if exists $depends{$f};
3774     push @flags, 'hint'     if exists $hints{$f};
3775     push @flags, 'warning'  if exists $warnings{$f};
3776     my $flags = @flags ? '  ['.join(', ', @flags).']' : '';
3777     print "$f$flags\n";
3778   }
3779   exit 0;
3780 }
3781 
3782 my @files;
3783 my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc );
3784 my $srcext = join '|', map { quotemeta $_ } @srcext;
3785 
3786 if (@ARGV) {
3787   my %seen;
3788   for (@ARGV) {
3789     if (-e) {
3790       if (-f) {
3791         push @files, $_ unless $seen{$_}++;
3792       }
3793       else { warn "'$_' is not a file.\n" }
3794     }
3795     else {
3796       my @new = grep { -f } glob $_
3797           or warn "'$_' does not exist.\n";
3798       push @files, grep { !$seen{$_}++ } @new;
3799     }
3800   }
3801 }
3802 else {
3803   eval {
3804     require File::Find;
3805     File::Find::find(sub {
3806       $File::Find::name =~ /($srcext)$/i
3807           and push @files, $File::Find::name;
3808     }, '.');
3809   };
3810   if ($@) {
3811     @files = map { glob "*$_" } @srcext;
3812   }
3813 }
3814 
3815 if (!@ARGV || $opt{filter}) {
3816   my(@in, @out);
3817   my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
3818   for (@files) {
3819     my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i;
3820     push @{ $out ? \@out : \@in }, $_;
3821   }
3822   if (@ARGV && @out) {
3823     warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out);
3824   }
3825   @files = @in;
3826 }
3827 
3828 die "No input files given!\n" unless @files;
3829 
3830 my(%files, %global, %revreplace);
3831 %revreplace = reverse %replace;
3832 my $filename;
3833 my $patch_opened = 0;
3834 
3835 for $filename (@files) {
3836   unless (open IN, "<$filename") {
3837     warn "Unable to read from $filename: $!\n";
3838     next;
3839   }
3840 
3841   info("Scanning $filename ...");
3842 
3843   my $c = do { local $/; <IN> };
3844   close IN;
3845 
3846   my %file = (orig => $c, changes => 0);
3847 
3848   # Temporarily remove C/XS comments and strings from the code
3849   my @ccom;
3850 
3851   $c =~ s{
3852     ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]*
3853     | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* )
3854   | ( ^$HS*\#[^\r\n]*
3855     | "[^"\\]*(?:\\.[^"\\]*)*"
3856     | '[^'\\]*(?:\\.[^'\\]*)*'
3857     | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) )
3858   }{ defined $2 and push @ccom, $2;
3859      defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex;
3860 
3861   $file{ccom} = \@ccom;
3862   $file{code} = $c;
3863   $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m;
3864 
3865   my $func;
3866 
3867   for $func (keys %API) {
3868     my $match = $func;
3869     $match .= "|$revreplace{$func}" if exists $revreplace{$func};
3870     if ($c =~ /\b(?:Perl_)?($match)\b/) {
3871       $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func};
3872       $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/;
3873       if (exists $API{$func}{provided}) {
3874         $file{uses_provided}{$func}++;
3875         if ( ! exists $API{$func}{base}
3876             || int_parse_version($API{$func}{base}) > $opt{'compat-version'})
3877         {
3878           $file{uses}{$func}++;
3879           my @deps = rec_depend($func);
3880           if (@deps) {
3881             $file{uses_deps}{$func} = \@deps;
3882             for (@deps) {
3883               $file{uses}{$_} = 0 unless exists $file{uses}{$_};
3884             }
3885           }
3886           for ($func, @deps) {
3887             $file{needs}{$_} = 'static' if exists $need{$_};
3888           }
3889         }
3890       }
3891       if (   exists $API{$func}{todo}
3892           && int_parse_version($API{$func}{todo}) > $opt{'compat-version'})
3893       {
3894         if ($c =~ /\b$func\b/) {
3895           $file{uses_todo}{$func}++;
3896         }
3897       }
3898     }
3899   }
3900 
3901   while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) {
3902     if (exists $need{$2}) {
3903       $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++;
3904     }
3905     else { warning("Possibly wrong #define $1 in $filename") }
3906   }
3907 
3908   for (qw(uses needs uses_todo needed_global needed_static)) {
3909     for $func (keys %{$file{$_}}) {
3910       push @{$global{$_}{$func}}, $filename;
3911     }
3912   }
3913 
3914   $files{$filename} = \%file;
3915 }
3916 
3917 # Globally resolve NEED_'s
3918 my $need;
3919 for $need (keys %{$global{needs}}) {
3920   if (@{$global{needs}{$need}} > 1) {
3921     my @targets = @{$global{needs}{$need}};
3922     my @t = grep $files{$_}{needed_global}{$need}, @targets;
3923     @targets = @t if @t;
3924     @t = grep /\.xs$/i, @targets;
3925     @targets = @t if @t;
3926     my $target = shift @targets;
3927     $files{$target}{needs}{$need} = 'global';
3928     for (@{$global{needs}{$need}}) {
3929       $files{$_}{needs}{$need} = 'extern' if $_ ne $target;
3930     }
3931   }
3932 }
3933 
3934 for $filename (@files) {
3935   exists $files{$filename} or next;
3936 
3937   info("=== Analyzing $filename ===");
3938 
3939   my %file = %{$files{$filename}};
3940   my $func;
3941   my $c = $file{code};
3942   my $warnings = 0;
3943 
3944   for $func (sort dictionary_order keys %{$file{uses_Perl}}) {
3945     if ($API{$func}{varargs}) {
3946       unless ($API{$func}{noTHXarg}) {
3947         my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))}
3948                               { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge);
3949         if ($changes) {
3950           warning("Doesn't pass interpreter argument aTHX to Perl_$func");
3951           $file{changes} += $changes;
3952         }
3953       }
3954     }
3955     else {
3956       warning("Uses Perl_$func instead of $func");
3957       $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*}
3958                                 {$func$1(}g);
3959     }
3960   }
3961 
3962   for $func (sort dictionary_order keys %{$file{uses_replace}}) {
3963     warning("Uses $func instead of $replace{$func}");
3964     $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
3965   }
3966 
3967   for $func (sort dictionary_order keys %{$file{uses_provided}}) {
3968     if ($file{uses}{$func}) {
3969       if (exists $file{uses_deps}{$func}) {
3970         diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}}));
3971       }
3972       else {
3973         diag("Uses $func");
3974       }
3975     }
3976     $warnings += hint($func);
3977   }
3978 
3979   unless ($opt{quiet}) {
3980     for $func (sort dictionary_order keys %{$file{uses_todo}}) {
3981       next if int_parse_version($API{$func}{todo}) <= $int_min_perl;
3982       print "*** WARNING: Uses $func, which may not be portable below perl ",
3983             format_version($API{$func}{todo}), ", even with '$ppport'\n";
3984       $warnings++;
3985     }
3986   }
3987 
3988   for $func (sort dictionary_order keys %{$file{needed_static}}) {
3989     my $message = '';
3990     if (not exists $file{uses}{$func}) {
3991       $message = "No need to define NEED_$func if $func is never used";
3992     }
3993     elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') {
3994       $message = "No need to define NEED_$func when already needed globally";
3995     }
3996     if ($message) {
3997       diag($message);
3998       $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg);
3999     }
4000   }
4001 
4002   for $func (sort dictionary_order keys %{$file{needed_global}}) {
4003     my $message = '';
4004     if (not exists $global{uses}{$func}) {
4005       $message = "No need to define NEED_${func}_GLOBAL if $func is never used";
4006     }
4007     elsif (exists $file{needs}{$func}) {
4008       if ($file{needs}{$func} eq 'extern') {
4009         $message = "No need to define NEED_${func}_GLOBAL when already needed globally";
4010       }
4011       elsif ($file{needs}{$func} eq 'static') {
4012         $message = "No need to define NEED_${func}_GLOBAL when only used in this file";
4013       }
4014     }
4015     if ($message) {
4016       diag($message);
4017       $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg);
4018     }
4019   }
4020 
4021   $file{needs_inc_ppport} = keys %{$file{uses}};
4022 
4023   if ($file{needs_inc_ppport}) {
4024     my $pp = '';
4025 
4026     for $func (sort dictionary_order keys %{$file{needs}}) {
4027       my $type = $file{needs}{$func};
4028       next if $type eq 'extern';
4029       my $suffix = $type eq 'global' ? '_GLOBAL' : '';
4030       unless (exists $file{"needed_$type"}{$func}) {
4031         if ($type eq 'global') {
4032           diag("Files [@{$global{needs}{$func}}] need $func, adding global request");
4033         }
4034         else {
4035           diag("File needs $func, adding static request");
4036         }
4037         $pp .= "#define NEED_$func$suffix\n";
4038       }
4039     }
4040 
4041     if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) {
4042       $pp = '';
4043       $file{changes}++;
4044     }
4045 
4046     unless ($file{has_inc_ppport}) {
4047       diag("Needs to include '$ppport'");
4048       $pp .= qq(#include "$ppport"\n)
4049     }
4050 
4051     if ($pp) {
4052       $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms)
4053                      || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m)
4054                      || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m)
4055                      || ($c =~ s/^/$pp/);
4056     }
4057   }
4058   else {
4059     if ($file{has_inc_ppport}) {
4060       diag("No need to include '$ppport'");
4061       $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m);
4062     }
4063   }
4064 
4065   # put back in our C comments
4066   my $ix;
4067   my $cppc = 0;
4068   my @ccom = @{$file{ccom}};
4069   for $ix (0 .. $#ccom) {
4070     if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) {
4071       $cppc++;
4072       $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/;
4073     }
4074     else {
4075       $c =~ s/$rccs$ix$rcce/$ccom[$ix]/;
4076     }
4077   }
4078 
4079   if ($cppc) {
4080     my $s = $cppc != 1 ? 's' : '';
4081     warning("Uses $cppc C++ style comment$s, which is not portable");
4082   }
4083 
4084   my $s = $warnings != 1 ? 's' : '';
4085   my $warn = $warnings ? " ($warnings warning$s)" : '';
4086   info("Analysis completed$warn");
4087 
4088   if ($file{changes}) {
4089     if (exists $opt{copy}) {
4090       my $newfile = "$filename$opt{copy}";
4091       if (-e $newfile) {
4092         error("'$newfile' already exists, refusing to write copy of '$filename'");
4093       }
4094       else {
4095         local *F;
4096         if (open F, ">$newfile") {
4097           info("Writing copy of '$filename' with changes to '$newfile'");
4098           print F $c;
4099           close F;
4100         }
4101         else {
4102           error("Cannot open '$newfile' for writing: $!");
4103         }
4104       }
4105     }
4106     elsif (exists $opt{patch} || $opt{changes}) {
4107       if (exists $opt{patch}) {
4108         unless ($patch_opened) {
4109           if (open PATCH, ">$opt{patch}") {
4110             $patch_opened = 1;
4111           }
4112           else {
4113             error("Cannot open '$opt{patch}' for writing: $!");
4114             delete $opt{patch};
4115             $opt{changes} = 1;
4116             goto fallback;
4117           }
4118         }
4119         mydiff(\*PATCH, $filename, $c);
4120       }
4121       else {
4122 fallback:
4123         info("Suggested changes:");
4124         mydiff(\*STDOUT, $filename, $c);
4125       }
4126     }
4127     else {
4128       my $s = $file{changes} == 1 ? '' : 's';
4129       info("$file{changes} potentially required change$s detected");
4130     }
4131   }
4132   else {
4133     info("Looks good");
4134   }
4135 }
4136 
4137 close PATCH if $patch_opened;
4138 
4139 exit 0;
4140 
4141 
4142 sub try_use { eval "use @_;"; return $@ eq '' }
4143 
4144 sub mydiff
4145 {
4146   local *F = shift;
4147   my($file, $str) = @_;
4148   my $diff;
4149 
4150   if (exists $opt{diff}) {
4151     $diff = run_diff($opt{diff}, $file, $str);
4152   }
4153 
4154   if (!defined $diff and try_use('Text::Diff')) {
4155     $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' });
4156     $diff = <<HEADER . $diff;
4157 --- $file
4158 +++ $file.patched
4159 HEADER
4160   }
4161 
4162   if (!defined $diff) {
4163     $diff = run_diff('diff -u', $file, $str);
4164   }
4165 
4166   if (!defined $diff) {
4167     $diff = run_diff('diff', $file, $str);
4168   }
4169 
4170   if (!defined $diff) {
4171     error("Cannot generate a diff. Please install Text::Diff or use --copy.");
4172     return;
4173   }
4174 
4175   print F $diff;
4176 }
4177 
4178 sub run_diff
4179 {
4180   my($prog, $file, $str) = @_;
4181   my $tmp = 'dppptemp';
4182   my $suf = 'aaa';
4183   my $diff = '';
4184   local *F;
4185 
4186   while (-e "$tmp.$suf") { $suf++ }
4187   $tmp = "$tmp.$suf";
4188 
4189   if (open F, ">$tmp") {
4190     print F $str;
4191     close F;
4192 
4193     if (open F, "$prog $file $tmp |") {
4194       while (<F>) {
4195         s/\Q$tmp\E/$file.patched/;
4196         $diff .= $_;
4197       }
4198       close F;
4199       unlink $tmp;
4200       return $diff;
4201     }
4202 
4203     unlink $tmp;
4204   }
4205   else {
4206     error("Cannot open '$tmp' for writing: $!");
4207   }
4208 
4209   return undef;
4210 }
4211 
4212 sub rec_depend
4213 {
4214   my($func, $seen) = @_;
4215   return () unless exists $depends{$func};
4216   $seen = {%{$seen||{}}};
4217   return () if $seen->{$func}++;
4218   my %s;
4219   grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}};
4220 }
4221 
4222 sub info
4223 {
4224   $opt{quiet} and return;
4225   print @_, "\n";
4226 }
4227 
4228 sub diag
4229 {
4230   $opt{quiet} and return;
4231   $opt{diag} and print @_, "\n";
4232 }
4233 
4234 sub warning
4235 {
4236   $opt{quiet} and return;
4237   print "*** ", @_, "\n";
4238 }
4239 
4240 sub error
4241 {
4242   print "*** ERROR: ", @_, "\n";
4243 }
4244 
4245 my %given_hints;
4246 my %given_warnings;
4247 sub hint
4248 {
4249   $opt{quiet} and return;
4250   my $func = shift;
4251   my $rv = 0;
4252   if (exists $warnings{$func} && !$given_warnings{$func}++) {
4253     my $warn = $warnings{$func};
4254     $warn =~ s!^!*** !mg;
4255     print "*** WARNING: $func\n", $warn;
4256     $rv++;
4257   }
4258   if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) {
4259     my $hint = $hints{$func};
4260     $hint =~ s/^/   /mg;
4261     print "   --- hint for $func ---\n", $hint;
4262   }
4263   $rv;
4264 }
4265 
4266 sub usage
4267 {
4268   my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms;
4269   my %M = ( 'I' => '*' );
4270   $usage =~ s/^\s*perl\s+\S+/$^X $0/;
4271   $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g;
4272 
4273   print <<ENDUSAGE;
4274 
4275 Usage: $usage
4276 
4277 See perldoc $0 for details.
4278 
4279 ENDUSAGE
4280 
4281   exit 2;
4282 }
4283 
4284 sub strip
4285 {
4286   my $self = do { local(@ARGV,$/)=($0); <> };
4287   my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms;
4288   $copy =~ s/^(?=\S+)/    /gms;
4289   $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms;
4290   $self =~ s/^SKIP.*(?=^__DATA__)/SKIP
4291 if (\@ARGV && \$ARGV[0] eq '--unstrip') {
4292   eval { require Devel::PPPort };
4293   \$@ and die "Cannot require Devel::PPPort, please install.\\n";
4294   if (eval \$Devel::PPPort::VERSION < $VERSION) {
4295     die "$0 was originally generated with Devel::PPPort $VERSION.\\n"
4296       . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
4297       . "Please install a newer version, or --unstrip will not work.\\n";
4298   }
4299   Devel::PPPort::WriteFile(\$0);
4300   exit 0;
4301 }
4302 print <<END;
4303 
4304 Sorry, but this is a stripped version of \$0.
4305 
4306 To be able to use its original script and doc functionality,
4307 please try to regenerate this file using:
4308 
4309   \$^X \$0 --unstrip
4310 
4311 END
4312 /ms;
4313   my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms;
4314   $c =~ s{
4315     / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
4316   | ( "[^"\\]*(?:\\.[^"\\]*)*"
4317     | '[^'\\]*(?:\\.[^'\\]*)*' )
4318   | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex;
4319   $c =~ s!\s+$!!mg;
4320   $c =~ s!^$LF!!mg;
4321   $c =~ s!^\s*#\s*!#!mg;
4322   $c =~ s!^\s+!!mg;
4323 
4324   open OUT, ">$0" or die "cannot strip $0: $!\n";
4325   print OUT "$pl$c\n";
4326 
4327   exit 0;
4328 }
4329 
4330 __DATA__
4331 */
4332 
4333 #ifndef _P_P_PORTABILITY_H_
4334 #define _P_P_PORTABILITY_H_
4335 
4336 #ifndef DPPP_NAMESPACE
4337 #  define DPPP_NAMESPACE DPPP_
4338 #endif
4339 
4340 #define DPPP_CAT2(x,y) CAT2(x,y)
4341 #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
4342 
4343 #ifndef PERL_REVISION
4344 #  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
4345 #    define PERL_PATCHLEVEL_H_IMPLICIT
4346 #    include <patchlevel.h>
4347 #  endif
4348 #  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
4349 #    include <could_not_find_Perl_patchlevel.h>
4350 #  endif
4351 #  ifndef PERL_REVISION
4352 #    define PERL_REVISION       (5)
4353      /* Replace: 1 */
4354 #    define PERL_VERSION        PATCHLEVEL
4355 #    define PERL_SUBVERSION     SUBVERSION
4356      /* Replace PERL_PATCHLEVEL with PERL_VERSION */
4357      /* Replace: 0 */
4358 #  endif
4359 #endif
4360 
4361 #define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10))
4362 #define PERL_BCDVERSION ((D_PPP_DEC2BCD(PERL_REVISION)<<24)|(D_PPP_DEC2BCD(PERL_VERSION)<<12)|D_PPP_DEC2BCD(PERL_SUBVERSION))
4363 
4364 /* It is very unlikely that anyone will try to use this with Perl 6
4365    (or greater), but who knows.
4366  */
4367 #if PERL_REVISION != 5
4368 #  error ppport.h only works with Perl version 5
4369 #endif /* PERL_REVISION != 5 */
4370 #ifndef dTHR
4371 #  define dTHR                           dNOOP
4372 #endif
4373 #ifndef dTHX
4374 #  define dTHX                           dNOOP
4375 #endif
4376 
4377 /* Hint: dTHX
4378 
4379   For pre-5.6.0 thread compatibility, instead use dTHXR, available only through
4380   ppport.h */
4381 #ifndef dTHXa
4382 #  define dTHXa(x)                       dNOOP
4383 #endif
4384 #ifndef pTHX
4385 #  define pTHX                           void
4386 #endif
4387 
4388 #ifndef pTHX_
4389 #  define pTHX_
4390 #endif
4391 
4392 #ifndef aTHX
4393 #  define aTHX
4394 #endif
4395 
4396 /* Hint: aTHX
4397 
4398   For pre-5.6.0 thread compatibility, instead use aTHXR, available only through
4399   ppport.h */
4400 #ifndef aTHX_
4401 #  define aTHX_
4402 #endif
4403 
4404 /* Hint: aTHX_
4405 
4406   For pre-5.6.0 thread compatibility, instead use aTHXR_, available only
4407   through ppport.h */
4408 
4409 #if (PERL_BCDVERSION < 0x5006000)
4410 #  ifdef USE_THREADS
4411 #    define aTHXR  thr
4412 #    define aTHXR_ thr,
4413 #  else
4414 #    define aTHXR
4415 #    define aTHXR_
4416 #  endif
4417 #  define dTHXR  dTHR
4418 #else
4419 #  define aTHXR  aTHX
4420 #  define aTHXR_ aTHX_
4421 #  define dTHXR  dTHX
4422 #endif
4423 #ifndef dTHXoa
4424 #  define dTHXoa(x)                      dTHXa(x)
4425 #endif
4426 
4427 #ifdef I_LIMITS
4428 #  include <limits.h>
4429 #endif
4430 
4431 #ifndef PERL_UCHAR_MIN
4432 #  define PERL_UCHAR_MIN ((unsigned char)0)
4433 #endif
4434 
4435 #ifndef PERL_UCHAR_MAX
4436 #  ifdef UCHAR_MAX
4437 #    define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)
4438 #  else
4439 #    ifdef MAXUCHAR
4440 #      define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)
4441 #    else
4442 #      define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)
4443 #    endif
4444 #  endif
4445 #endif
4446 
4447 #ifndef PERL_USHORT_MIN
4448 #  define PERL_USHORT_MIN ((unsigned short)0)
4449 #endif
4450 
4451 #ifndef PERL_USHORT_MAX
4452 #  ifdef USHORT_MAX
4453 #    define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)
4454 #  else
4455 #    ifdef MAXUSHORT
4456 #      define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)
4457 #    else
4458 #      ifdef USHRT_MAX
4459 #        define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)
4460 #      else
4461 #        define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)
4462 #      endif
4463 #    endif
4464 #  endif
4465 #endif
4466 
4467 #ifndef PERL_SHORT_MAX
4468 #  ifdef SHORT_MAX
4469 #    define PERL_SHORT_MAX ((short)SHORT_MAX)
4470 #  else
4471 #    ifdef MAXSHORT    /* Often used in <values.h> */
4472 #      define PERL_SHORT_MAX ((short)MAXSHORT)
4473 #    else
4474 #      ifdef SHRT_MAX
4475 #        define PERL_SHORT_MAX ((short)SHRT_MAX)
4476 #      else
4477 #        define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))
4478 #      endif
4479 #    endif
4480 #  endif
4481 #endif
4482 
4483 #ifndef PERL_SHORT_MIN
4484 #  ifdef SHORT_MIN
4485 #    define PERL_SHORT_MIN ((short)SHORT_MIN)
4486 #  else
4487 #    ifdef MINSHORT
4488 #      define PERL_SHORT_MIN ((short)MINSHORT)
4489 #    else
4490 #      ifdef SHRT_MIN
4491 #        define PERL_SHORT_MIN ((short)SHRT_MIN)
4492 #      else
4493 #        define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))
4494 #      endif
4495 #    endif
4496 #  endif
4497 #endif
4498 
4499 #ifndef PERL_UINT_MAX
4500 #  ifdef UINT_MAX
4501 #    define PERL_UINT_MAX ((unsigned int)UINT_MAX)
4502 #  else
4503 #    ifdef MAXUINT
4504 #      define PERL_UINT_MAX ((unsigned int)MAXUINT)
4505 #    else
4506 #      define PERL_UINT_MAX (~(unsigned int)0)
4507 #    endif
4508 #  endif
4509 #endif
4510 
4511 #ifndef PERL_UINT_MIN
4512 #  define PERL_UINT_MIN ((unsigned int)0)
4513 #endif
4514 
4515 #ifndef PERL_INT_MAX
4516 #  ifdef INT_MAX
4517 #    define PERL_INT_MAX ((int)INT_MAX)
4518 #  else
4519 #    ifdef MAXINT    /* Often used in <values.h> */
4520 #      define PERL_INT_MAX ((int)MAXINT)
4521 #    else
4522 #      define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))
4523 #    endif
4524 #  endif
4525 #endif
4526 
4527 #ifndef PERL_INT_MIN
4528 #  ifdef INT_MIN
4529 #    define PERL_INT_MIN ((int)INT_MIN)
4530 #  else
4531 #    ifdef MININT
4532 #      define PERL_INT_MIN ((int)MININT)
4533 #    else
4534 #      define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))
4535 #    endif
4536 #  endif
4537 #endif
4538 
4539 #ifndef PERL_ULONG_MAX
4540 #  ifdef ULONG_MAX
4541 #    define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)
4542 #  else
4543 #    ifdef MAXULONG
4544 #      define PERL_ULONG_MAX ((unsigned long)MAXULONG)
4545 #    else
4546 #      define PERL_ULONG_MAX (~(unsigned long)0)
4547 #    endif
4548 #  endif
4549 #endif
4550 
4551 #ifndef PERL_ULONG_MIN
4552 #  define PERL_ULONG_MIN ((unsigned long)0L)
4553 #endif
4554 
4555 #ifndef PERL_LONG_MAX
4556 #  ifdef LONG_MAX
4557 #    define PERL_LONG_MAX ((long)LONG_MAX)
4558 #  else
4559 #    ifdef MAXLONG
4560 #      define PERL_LONG_MAX ((long)MAXLONG)
4561 #    else
4562 #      define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))
4563 #    endif
4564 #  endif
4565 #endif
4566 
4567 #ifndef PERL_LONG_MIN
4568 #  ifdef LONG_MIN
4569 #    define PERL_LONG_MIN ((long)LONG_MIN)
4570 #  else
4571 #    ifdef MINLONG
4572 #      define PERL_LONG_MIN ((long)MINLONG)
4573 #    else
4574 #      define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))
4575 #    endif
4576 #  endif
4577 #endif
4578 
4579 #if defined(HAS_QUAD) && (defined(convex) || defined(uts))
4580 #  ifndef PERL_UQUAD_MAX
4581 #    ifdef ULONGLONG_MAX
4582 #      define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)
4583 #    else
4584 #      ifdef MAXULONGLONG
4585 #        define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)
4586 #      else
4587 #        define PERL_UQUAD_MAX (~(unsigned long long)0)
4588 #      endif
4589 #    endif
4590 #  endif
4591 
4592 #  ifndef PERL_UQUAD_MIN
4593 #    define PERL_UQUAD_MIN ((unsigned long long)0L)
4594 #  endif
4595 
4596 #  ifndef PERL_QUAD_MAX
4597 #    ifdef LONGLONG_MAX
4598 #      define PERL_QUAD_MAX ((long long)LONGLONG_MAX)
4599 #    else
4600 #      ifdef MAXLONGLONG
4601 #        define PERL_QUAD_MAX ((long long)MAXLONGLONG)
4602 #      else
4603 #        define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))
4604 #      endif
4605 #    endif
4606 #  endif
4607 
4608 #  ifndef PERL_QUAD_MIN
4609 #    ifdef LONGLONG_MIN
4610 #      define PERL_QUAD_MIN ((long long)LONGLONG_MIN)
4611 #    else
4612 #      ifdef MINLONGLONG
4613 #        define PERL_QUAD_MIN ((long long)MINLONGLONG)
4614 #      else
4615 #        define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))
4616 #      endif
4617 #    endif
4618 #  endif
4619 #endif
4620 
4621 /* This is based on code from 5.003 perl.h */
4622 #ifdef HAS_QUAD
4623 #  ifdef cray
4624 #ifndef IVTYPE
4625 #  define IVTYPE                         int
4626 #endif
4627 
4628 #ifndef IV_MIN
4629 #  define IV_MIN                         PERL_INT_MIN
4630 #endif
4631 
4632 #ifndef IV_MAX
4633 #  define IV_MAX                         PERL_INT_MAX
4634 #endif
4635 
4636 #ifndef UV_MIN
4637 #  define UV_MIN                         PERL_UINT_MIN
4638 #endif
4639 
4640 #ifndef UV_MAX
4641 #  define UV_MAX                         PERL_UINT_MAX
4642 #endif
4643 
4644 #    ifdef INTSIZE
4645 #ifndef IVSIZE
4646 #  define IVSIZE                         INTSIZE
4647 #endif
4648 
4649 #    endif
4650 #  else
4651 #    if defined(convex) || defined(uts)
4652 #ifndef IVTYPE
4653 #  define IVTYPE                         long long
4654 #endif
4655 
4656 #ifndef IV_MIN
4657 #  define IV_MIN                         PERL_QUAD_MIN
4658 #endif
4659 
4660 #ifndef IV_MAX
4661 #  define IV_MAX                         PERL_QUAD_MAX
4662 #endif
4663 
4664 #ifndef UV_MIN
4665 #  define UV_MIN                         PERL_UQUAD_MIN
4666 #endif
4667 
4668 #ifndef UV_MAX
4669 #  define UV_MAX                         PERL_UQUAD_MAX
4670 #endif
4671 
4672 #      ifdef LONGLONGSIZE
4673 #ifndef IVSIZE
4674 #  define IVSIZE                         LONGLONGSIZE
4675 #endif
4676 
4677 #      endif
4678 #    else
4679 #ifndef IVTYPE
4680 #  define IVTYPE                         long
4681 #endif
4682 
4683 #ifndef IV_MIN
4684 #  define IV_MIN                         PERL_LONG_MIN
4685 #endif
4686 
4687 #ifndef IV_MAX
4688 #  define IV_MAX                         PERL_LONG_MAX
4689 #endif
4690 
4691 #ifndef UV_MIN
4692 #  define UV_MIN                         PERL_ULONG_MIN
4693 #endif
4694 
4695 #ifndef UV_MAX
4696 #  define UV_MAX                         PERL_ULONG_MAX
4697 #endif
4698 
4699 #      ifdef LONGSIZE
4700 #ifndef IVSIZE
4701 #  define IVSIZE                         LONGSIZE
4702 #endif
4703 
4704 #      endif
4705 #    endif
4706 #  endif
4707 #ifndef IVSIZE
4708 #  define IVSIZE                         8
4709 #endif
4710 
4711 #ifndef LONGSIZE
4712 #  define LONGSIZE                       8
4713 #endif
4714 
4715 #ifndef PERL_QUAD_MIN
4716 #  define PERL_QUAD_MIN                  IV_MIN
4717 #endif
4718 
4719 #ifndef PERL_QUAD_MAX
4720 #  define PERL_QUAD_MAX                  IV_MAX
4721 #endif
4722 
4723 #ifndef PERL_UQUAD_MIN
4724 #  define PERL_UQUAD_MIN                 UV_MIN
4725 #endif
4726 
4727 #ifndef PERL_UQUAD_MAX
4728 #  define PERL_UQUAD_MAX                 UV_MAX
4729 #endif
4730 
4731 #else
4732 #ifndef IVTYPE
4733 #  define IVTYPE                         long
4734 #endif
4735 
4736 #ifndef LONGSIZE
4737 #  define LONGSIZE                       4
4738 #endif
4739 
4740 #ifndef IV_MIN
4741 #  define IV_MIN                         PERL_LONG_MIN
4742 #endif
4743 
4744 #ifndef IV_MAX
4745 #  define IV_MAX                         PERL_LONG_MAX
4746 #endif
4747 
4748 #ifndef UV_MIN
4749 #  define UV_MIN                         PERL_ULONG_MIN
4750 #endif
4751 
4752 #ifndef UV_MAX
4753 #  define UV_MAX                         PERL_ULONG_MAX
4754 #endif
4755 
4756 #endif
4757 
4758 #ifndef IVSIZE
4759 #  ifdef LONGSIZE
4760 #    define IVSIZE LONGSIZE
4761 #  else
4762 #    define IVSIZE 4 /* A bold guess, but the best we can make. */
4763 #  endif
4764 #endif
4765 #ifndef UVTYPE
4766 #  define UVTYPE                         unsigned IVTYPE
4767 #endif
4768 
4769 #ifndef UVSIZE
4770 #  define UVSIZE                         IVSIZE
4771 #endif
4772 
4773 #ifndef PERL_SIGNALS_UNSAFE_FLAG
4774 
4775 #define PERL_SIGNALS_UNSAFE_FLAG 0x0001
4776 
4777 #if (PERL_BCDVERSION < 0x5008000)
4778 #  define D_PPP_PERL_SIGNALS_INIT   PERL_SIGNALS_UNSAFE_FLAG
4779 #else
4780 #  define D_PPP_PERL_SIGNALS_INIT   0
4781 #endif
4782 
4783 #if defined(NEED_PL_signals)
4784 static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
4785 #elif defined(NEED_PL_signals_GLOBAL)
4786 U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
4787 #else
4788 extern U32 DPPP_(my_PL_signals);
4789 #endif
4790 #define PL_signals DPPP_(my_PL_signals)
4791 
4792 #endif
4793 
4794 /* Hint: PL_ppaddr
4795  * Calling an op via PL_ppaddr requires passing a context argument
4796  * for threaded builds. Since the context argument is different for
4797  * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will
4798  * automatically be defined as the correct argument.
4799  */
4800 
4801 #if (PERL_BCDVERSION <= 0x5005005)
4802 /* Replace: 1 */
4803 #  define PL_ppaddr                 ppaddr
4804 #  define PL_no_modify              no_modify
4805 /* Replace: 0 */
4806 #endif
4807 
4808 #if (PERL_BCDVERSION <= 0x5004005)
4809 /* Replace: 1 */
4810 #  define PL_DBsignal               DBsignal
4811 #  define PL_DBsingle               DBsingle
4812 #  define PL_DBsub                  DBsub
4813 #  define PL_DBtrace                DBtrace
4814 #  define PL_Sv                     Sv
4815 #  define PL_bufend                 bufend
4816 #  define PL_bufptr                 bufptr
4817 #  define PL_compiling              compiling
4818 #  define PL_copline                copline
4819 #  define PL_curcop                 curcop
4820 #  define PL_curstash               curstash
4821 #  define PL_debstash               debstash
4822 #  define PL_defgv                  defgv
4823 #  define PL_diehook                diehook
4824 #  define PL_dirty                  dirty
4825 #  define PL_dowarn                 dowarn
4826 #  define PL_errgv                  errgv
4827 #  define PL_error_count            error_count
4828 #  define PL_expect                 expect
4829 #  define PL_hexdigit               hexdigit
4830 #  define PL_hints                  hints
4831 #  define PL_in_my                  in_my
4832 #  define PL_laststatval            laststatval
4833 #  define PL_lex_state              lex_state
4834 #  define PL_lex_stuff              lex_stuff
4835 #  define PL_linestr                linestr
4836 #  define PL_na                     na
4837 #  define PL_perl_destruct_level    perl_destruct_level
4838 #  define PL_perldb                 perldb
4839 #  define PL_rsfp_filters           rsfp_filters
4840 #  define PL_rsfp                   rsfp
4841 #  define PL_stack_base             stack_base
4842 #  define PL_stack_sp               stack_sp
4843 #  define PL_statcache              statcache
4844 #  define PL_stdingv                stdingv
4845 #  define PL_sv_arenaroot           sv_arenaroot
4846 #  define PL_sv_no                  sv_no
4847 #  define PL_sv_undef               sv_undef
4848 #  define PL_sv_yes                 sv_yes
4849 #  define PL_tainted                tainted
4850 #  define PL_tainting               tainting
4851 #  define PL_tokenbuf               tokenbuf
4852 #  define PL_mess_sv                mess_sv
4853 /* Replace: 0 */
4854 #endif
4855 
4856 /* Warning: PL_parser
4857  * For perl versions earlier than 5.9.5, this is an always
4858  * non-NULL dummy. Also, it cannot be dereferenced. Don't
4859  * use it if you can avoid it, and unless you absolutely know
4860  * what you're doing.
4861  * If you always check that PL_parser is non-NULL, you can
4862  * define DPPP_PL_parser_NO_DUMMY to avoid the creation of
4863  * a dummy parser structure.
4864  */
4865 
4866 #if (PERL_BCDVERSION >= 0x5009005)
4867 # ifdef DPPP_PL_parser_NO_DUMMY
4868 #  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
4869                 (croak("panic: PL_parser == NULL in %s:%d", \
4870                        __FILE__, __LINE__), (yy_parser *) NULL))->var)
4871 # else
4872 #  ifdef DPPP_PL_parser_NO_DUMMY_WARNING
4873 #   define D_PPP_parser_dummy_warning(var)
4874 #  else
4875 #   define D_PPP_parser_dummy_warning(var) \
4876              warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__),
4877 #  endif
4878 #  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
4879                 (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var)
4880 #if defined(NEED_PL_parser)
4881 static yy_parser DPPP_(dummy_PL_parser);
4882 #elif defined(NEED_PL_parser_GLOBAL)
4883 yy_parser DPPP_(dummy_PL_parser);
4884 #else
4885 extern yy_parser DPPP_(dummy_PL_parser);
4886 #endif
4887 
4888 # endif
4889 
4890 /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */
4891 /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf
4892  * Do not use this variable unless you know exactly what you're
4893  * doing. It is internal to the perl parser and may change or even
4894  * be removed in the future. As of perl 5.9.5, you have to check
4895  * for (PL_parser != NULL) for this variable to have any effect.
4896  * An always non-NULL PL_parser dummy is provided for earlier
4897  * perl versions.
4898  * If PL_parser is NULL when you try to access this variable, a
4899  * dummy is being accessed instead and a warning is issued unless
4900  * you define DPPP_PL_parser_NO_DUMMY_WARNING.
4901  * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access
4902  * this variable will croak with a panic message.
4903  */
4904 
4905 # define PL_expect         D_PPP_my_PL_parser_var(expect)
4906 # define PL_copline        D_PPP_my_PL_parser_var(copline)
4907 # define PL_rsfp           D_PPP_my_PL_parser_var(rsfp)
4908 # define PL_rsfp_filters   D_PPP_my_PL_parser_var(rsfp_filters)
4909 # define PL_linestr        D_PPP_my_PL_parser_var(linestr)
4910 # define PL_bufptr         D_PPP_my_PL_parser_var(bufptr)
4911 # define PL_bufend         D_PPP_my_PL_parser_var(bufend)
4912 # define PL_lex_state      D_PPP_my_PL_parser_var(lex_state)
4913 # define PL_lex_stuff      D_PPP_my_PL_parser_var(lex_stuff)
4914 # define PL_tokenbuf       D_PPP_my_PL_parser_var(tokenbuf)
4915 # define PL_in_my          D_PPP_my_PL_parser_var(in_my)
4916 # define PL_in_my_stash    D_PPP_my_PL_parser_var(in_my_stash)
4917 # define PL_error_count    D_PPP_my_PL_parser_var(error_count)
4918 
4919 
4920 #else
4921 
4922 /* ensure that PL_parser != NULL and cannot be dereferenced */
4923 # define PL_parser         ((void *) 1)
4924 
4925 #endif
4926 
4927 #if   (PERL_BCDVERSION <= 0x5003022)
4928 #  undef start_subparse
4929 #  if (PERL_BCDVERSION < 0x5003022)
4930 #ifndef start_subparse
4931 #  define start_subparse(a, b)           Perl_start_subparse()
4932 #endif
4933 
4934 #  else
4935 #ifndef start_subparse
4936 #  define start_subparse(a, b)           Perl_start_subparse(b)
4937 #endif
4938 
4939 #  endif
4940 
4941 #if (PERL_BCDVERSION < 0x5003007)
4942 foo
4943 #endif
4944 #endif
4945 
4946 /* Hint: newCONSTSUB
4947  * Returns a CV* as of perl-5.7.1. This return value is not supported
4948  * by Devel::PPPort.
4949  */
4950 
4951 /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
4952 #if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005)
4953 
4954 /* And before that, we need to make sure this gets compiled for the functions
4955  * that rely on it */
4956 #define NEED_newCONSTSUB
4957 
4958 #if defined(NEED_newCONSTSUB)
4959 static void DPPP_(my_newCONSTSUB)(HV * stash, const char * name, SV * sv);
4960 static
4961 #else
4962 extern void DPPP_(my_newCONSTSUB)(HV * stash, const char * name, SV * sv);
4963 #endif
4964 
4965 #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
4966 
4967 #ifdef newCONSTSUB
4968 #  undef newCONSTSUB
4969 #endif
4970 #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c)
4971 #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB)
4972 
4973 
4974 /* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */
4975 /* (There's no PL_parser in perl < 5.005, so this is completely safe)     */
4976 #define D_PPP_PL_copline PL_copline
4977 
4978 void
DPPP_(my_newCONSTSUB)4979 DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
4980 {
4981         U32 oldhints = PL_hints;
4982         HV *old_cop_stash = PL_curcop->cop_stash;
4983         HV *old_curstash = PL_curstash;
4984         line_t oldline = PL_curcop->cop_line;
4985         PL_curcop->cop_line = D_PPP_PL_copline;
4986 
4987         PL_hints &= ~HINT_BLOCK_SCOPE;
4988         if (stash)
4989                 PL_curstash = PL_curcop->cop_stash = stash;
4990 
4991         newSUB(
4992 
4993                 start_subparse(FALSE, 0),
4994 
4995                 newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
4996                 newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
4997                 newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
4998         );
4999 
5000         PL_hints = oldhints;
5001         PL_curcop->cop_stash = old_cop_stash;
5002         PL_curstash = old_curstash;
5003         PL_curcop->cop_line = oldline;
5004 }
5005 #endif
5006 #endif
5007 #ifndef PERL_MAGIC_sv
5008 #  define PERL_MAGIC_sv                  '\0'
5009 #endif
5010 
5011 #ifndef PERL_MAGIC_overload
5012 #  define PERL_MAGIC_overload            'A'
5013 #endif
5014 
5015 #ifndef PERL_MAGIC_overload_elem
5016 #  define PERL_MAGIC_overload_elem       'a'
5017 #endif
5018 
5019 #ifndef PERL_MAGIC_overload_table
5020 #  define PERL_MAGIC_overload_table      'c'
5021 #endif
5022 
5023 #ifndef PERL_MAGIC_bm
5024 #  define PERL_MAGIC_bm                  'B'
5025 #endif
5026 
5027 #ifndef PERL_MAGIC_regdata
5028 #  define PERL_MAGIC_regdata             'D'
5029 #endif
5030 
5031 #ifndef PERL_MAGIC_regdatum
5032 #  define PERL_MAGIC_regdatum            'd'
5033 #endif
5034 
5035 #ifndef PERL_MAGIC_env
5036 #  define PERL_MAGIC_env                 'E'
5037 #endif
5038 
5039 #ifndef PERL_MAGIC_envelem
5040 #  define PERL_MAGIC_envelem             'e'
5041 #endif
5042 
5043 #ifndef PERL_MAGIC_fm
5044 #  define PERL_MAGIC_fm                  'f'
5045 #endif
5046 
5047 #ifndef PERL_MAGIC_regex_global
5048 #  define PERL_MAGIC_regex_global        'g'
5049 #endif
5050 
5051 #ifndef PERL_MAGIC_isa
5052 #  define PERL_MAGIC_isa                 'I'
5053 #endif
5054 
5055 #ifndef PERL_MAGIC_isaelem
5056 #  define PERL_MAGIC_isaelem             'i'
5057 #endif
5058 
5059 #ifndef PERL_MAGIC_nkeys
5060 #  define PERL_MAGIC_nkeys               'k'
5061 #endif
5062 
5063 #ifndef PERL_MAGIC_dbfile
5064 #  define PERL_MAGIC_dbfile              'L'
5065 #endif
5066 
5067 #ifndef PERL_MAGIC_dbline
5068 #  define PERL_MAGIC_dbline              'l'
5069 #endif
5070 
5071 #ifndef PERL_MAGIC_mutex
5072 #  define PERL_MAGIC_mutex               'm'
5073 #endif
5074 
5075 #ifndef PERL_MAGIC_shared
5076 #  define PERL_MAGIC_shared              'N'
5077 #endif
5078 
5079 #ifndef PERL_MAGIC_shared_scalar
5080 #  define PERL_MAGIC_shared_scalar       'n'
5081 #endif
5082 
5083 #ifndef PERL_MAGIC_collxfrm
5084 #  define PERL_MAGIC_collxfrm            'o'
5085 #endif
5086 
5087 #ifndef PERL_MAGIC_tied
5088 #  define PERL_MAGIC_tied                'P'
5089 #endif
5090 
5091 #ifndef PERL_MAGIC_tiedelem
5092 #  define PERL_MAGIC_tiedelem            'p'
5093 #endif
5094 
5095 #ifndef PERL_MAGIC_tiedscalar
5096 #  define PERL_MAGIC_tiedscalar          'q'
5097 #endif
5098 
5099 #ifndef PERL_MAGIC_qr
5100 #  define PERL_MAGIC_qr                  'r'
5101 #endif
5102 
5103 #ifndef PERL_MAGIC_sig
5104 #  define PERL_MAGIC_sig                 'S'
5105 #endif
5106 
5107 #ifndef PERL_MAGIC_sigelem
5108 #  define PERL_MAGIC_sigelem             's'
5109 #endif
5110 
5111 #ifndef PERL_MAGIC_taint
5112 #  define PERL_MAGIC_taint               't'
5113 #endif
5114 
5115 #ifndef PERL_MAGIC_uvar
5116 #  define PERL_MAGIC_uvar                'U'
5117 #endif
5118 
5119 #ifndef PERL_MAGIC_uvar_elem
5120 #  define PERL_MAGIC_uvar_elem           'u'
5121 #endif
5122 
5123 #ifndef PERL_MAGIC_vstring
5124 #  define PERL_MAGIC_vstring             'V'
5125 #endif
5126 
5127 #ifndef PERL_MAGIC_vec
5128 #  define PERL_MAGIC_vec                 'v'
5129 #endif
5130 
5131 #ifndef PERL_MAGIC_utf8
5132 #  define PERL_MAGIC_utf8                'w'
5133 #endif
5134 
5135 #ifndef PERL_MAGIC_substr
5136 #  define PERL_MAGIC_substr              'x'
5137 #endif
5138 
5139 #ifndef PERL_MAGIC_defelem
5140 #  define PERL_MAGIC_defelem             'y'
5141 #endif
5142 
5143 #ifndef PERL_MAGIC_glob
5144 #  define PERL_MAGIC_glob                '*'
5145 #endif
5146 
5147 #ifndef PERL_MAGIC_arylen
5148 #  define PERL_MAGIC_arylen              '#'
5149 #endif
5150 
5151 #ifndef PERL_MAGIC_pos
5152 #  define PERL_MAGIC_pos                 '.'
5153 #endif
5154 
5155 #ifndef PERL_MAGIC_backref
5156 #  define PERL_MAGIC_backref             '<'
5157 #endif
5158 
5159 #ifndef PERL_MAGIC_ext
5160 #  define PERL_MAGIC_ext                 '~'
5161 #endif
5162 #ifndef cBOOL
5163 #  define cBOOL(cbool)                   ((cbool) ? (bool)1 : (bool)0)
5164 #endif
5165 
5166 #ifndef OpHAS_SIBLING
5167 #  define OpHAS_SIBLING(o)               (cBOOL((o)->op_sibling))
5168 #endif
5169 
5170 #ifndef OpSIBLING
5171 #  define OpSIBLING(o)                   (0 + (o)->op_sibling)
5172 #endif
5173 
5174 #ifndef OpMORESIB_set
5175 #  define OpMORESIB_set(o, sib)          ((o)->op_sibling = (sib))
5176 #endif
5177 
5178 #ifndef OpLASTSIB_set
5179 #  define OpLASTSIB_set(o, parent)       ((o)->op_sibling = NULL)
5180 #endif
5181 
5182 #ifndef OpMAYBESIB_set
5183 #  define OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib))
5184 #endif
5185 
5186 #ifndef HEf_SVKEY
5187 #  define HEf_SVKEY                      -2
5188 #endif
5189 
5190 #if defined(DEBUGGING) && !defined(__COVERITY__)
5191 #ifndef __ASSERT_
5192 #  define __ASSERT_(statement)           assert(statement),
5193 #endif
5194 
5195 #else
5196 #ifndef __ASSERT_
5197 #  define __ASSERT_(statement)
5198 #endif
5199 
5200 #endif
5201 #ifndef SvRX
5202 #  define SvRX(rv)                       (SvROK((rv)) ? (SvMAGICAL(SvRV((rv))) ? (mg_find(SvRV((rv)), PERL_MAGIC_qr) ? mg_find(SvRV((rv)), PERL_MAGIC_qr)->mg_obj : NULL) : NULL) : NULL)
5203 #endif
5204 
5205 #ifndef SvRXOK
5206 #  define SvRXOK(sv)                     (!!SvRX(sv))
5207 #endif
5208 
5209 #ifndef PERL_UNUSED_DECL
5210 #  ifdef HASATTRIBUTE
5211 #    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
5212 #      define PERL_UNUSED_DECL
5213 #    else
5214 #      define PERL_UNUSED_DECL __attribute__((unused))
5215 #    endif
5216 #  else
5217 #    define PERL_UNUSED_DECL
5218 #  endif
5219 #endif
5220 
5221 #ifndef PERL_UNUSED_ARG
5222 #  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
5223 #    include <note.h>
5224 #    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
5225 #  else
5226 #    define PERL_UNUSED_ARG(x) ((void)x)
5227 #  endif
5228 #endif
5229 
5230 #ifndef PERL_UNUSED_VAR
5231 #  define PERL_UNUSED_VAR(x) ((void)x)
5232 #endif
5233 
5234 #ifndef PERL_UNUSED_CONTEXT
5235 #  ifdef USE_ITHREADS
5236 #    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
5237 #  else
5238 #    define PERL_UNUSED_CONTEXT
5239 #  endif
5240 #endif
5241 
5242 #ifndef PERL_UNUSED_RESULT
5243 #  if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT)
5244 #    define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END
5245 #  else
5246 #    define PERL_UNUSED_RESULT(v) ((void)(v))
5247 #  endif
5248 #endif
5249 #ifndef NOOP
5250 #  define NOOP                           /*EMPTY*/(void)0
5251 #endif
5252 
5253 #ifndef dNOOP
5254 #  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
5255 #endif
5256 
5257 #ifndef NVTYPE
5258 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
5259 #    define NVTYPE long double
5260 #  else
5261 #    define NVTYPE double
5262 #  endif
5263 typedef NVTYPE NV;
5264 #endif
5265 
5266 #ifndef INT2PTR
5267 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
5268 #    define PTRV                  UV
5269 #    define INT2PTR(any,d)        (any)(d)
5270 #  else
5271 #    if PTRSIZE == LONGSIZE
5272 #      define PTRV                unsigned long
5273 #    else
5274 #      define PTRV                unsigned
5275 #    endif
5276 #    define INT2PTR(any,d)        (any)(PTRV)(d)
5277 #  endif
5278 #endif
5279 
5280 #ifndef PTR2ul
5281 #  if PTRSIZE == LONGSIZE
5282 #    define PTR2ul(p)     (unsigned long)(p)
5283 #  else
5284 #    define PTR2ul(p)     INT2PTR(unsigned long,p)
5285 #  endif
5286 #endif
5287 #ifndef PTR2nat
5288 #  define PTR2nat(p)                     (PTRV)(p)
5289 #endif
5290 
5291 #ifndef NUM2PTR
5292 #  define NUM2PTR(any,d)                 (any)PTR2nat(d)
5293 #endif
5294 
5295 #ifndef PTR2IV
5296 #  define PTR2IV(p)                      INT2PTR(IV,p)
5297 #endif
5298 
5299 #ifndef PTR2UV
5300 #  define PTR2UV(p)                      INT2PTR(UV,p)
5301 #endif
5302 
5303 #ifndef PTR2NV
5304 #  define PTR2NV(p)                      NUM2PTR(NV,p)
5305 #endif
5306 
5307 #undef START_EXTERN_C
5308 #undef END_EXTERN_C
5309 #undef EXTERN_C
5310 #ifdef __cplusplus
5311 #  define START_EXTERN_C extern "C" {
5312 #  define END_EXTERN_C }
5313 #  define EXTERN_C extern "C"
5314 #else
5315 #  define START_EXTERN_C
5316 #  define END_EXTERN_C
5317 #  define EXTERN_C extern
5318 #endif
5319 
5320 #if (PERL_BCDVERSION < 0x5004000) || defined(PERL_GCC_PEDANTIC)
5321 #  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
5322 #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
5323 #  define PERL_GCC_BRACE_GROUPS_FORBIDDEN
5324 #endif
5325 
5326 #  endif
5327 #endif
5328 
5329 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
5330 #  ifndef PERL_USE_GCC_BRACE_GROUPS
5331 #    define PERL_USE_GCC_BRACE_GROUPS
5332 #  endif
5333 #endif
5334 
5335 #undef STMT_START
5336 #undef STMT_END
5337 #ifdef PERL_USE_GCC_BRACE_GROUPS
5338 #  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */
5339 #  define STMT_END      )
5340 #else
5341 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
5342 #    define STMT_START  if (1)
5343 #    define STMT_END    else (void)0
5344 #  else
5345 #    define STMT_START  do
5346 #    define STMT_END    while (0)
5347 #  endif
5348 #endif
5349 #ifndef boolSV
5350 #  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no)
5351 #endif
5352 
5353 /* DEFSV appears first in 5.004_56 */
5354 #ifndef DEFSV
5355 #  define DEFSV                          GvSV(PL_defgv)
5356 #endif
5357 
5358 #ifndef SAVE_DEFSV
5359 #  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv))
5360 #endif
5361 
5362 #ifndef DEFSV_set
5363 #  define DEFSV_set(sv)                  (DEFSV = (sv))
5364 #endif
5365 
5366 /* Older perls (<=5.003) lack AvFILLp */
5367 #ifndef AvFILLp
5368 #  define AvFILLp                        AvFILL
5369 #endif
5370 #ifndef av_tindex
5371 #  define av_tindex                      AvFILL
5372 #endif
5373 
5374 #ifndef av_top_index
5375 #  define av_top_index                   AvFILL
5376 #endif
5377 #ifndef ERRSV
5378 #  define ERRSV                          get_sv("@",FALSE)
5379 #endif
5380 
5381 /* Hint: gv_stashpvn
5382  * This function's backport doesn't support the length parameter, but
5383  * rather ignores it. Portability can only be ensured if the length
5384  * parameter is used for speed reasons, but the length can always be
5385  * correctly computed from the string argument.
5386  */
5387 #ifndef gv_stashpvn
5388 #  define gv_stashpvn(str,len,create)    gv_stashpv(str,create)
5389 #endif
5390 
5391 /* Replace: 1 */
5392 #ifndef get_cv
5393 #  define get_cv                         perl_get_cv
5394 #endif
5395 
5396 #ifndef get_sv
5397 #  define get_sv                         perl_get_sv
5398 #endif
5399 
5400 #ifndef get_av
5401 #  define get_av                         perl_get_av
5402 #endif
5403 
5404 #ifndef get_hv
5405 #  define get_hv                         perl_get_hv
5406 #endif
5407 
5408 /* Replace: 0 */
5409 #ifndef dUNDERBAR
5410 #  define dUNDERBAR                      dNOOP
5411 #endif
5412 
5413 #ifndef UNDERBAR
5414 #  define UNDERBAR                       DEFSV
5415 #endif
5416 #ifndef dAX
5417 #  define dAX                            I32 ax = MARK - PL_stack_base + 1
5418 #endif
5419 
5420 #ifndef dITEMS
5421 #  define dITEMS                         I32 items = SP - MARK
5422 #endif
5423 #ifndef dXSTARG
5424 #  define dXSTARG                        SV * targ = sv_newmortal()
5425 #endif
5426 #ifndef dAXMARK
5427 #  define dAXMARK                        I32 ax = POPMARK; \
5428                                register SV ** const mark = PL_stack_base + ax++
5429 #endif
5430 #ifndef XSprePUSH
5431 #  define XSprePUSH                      (sp = PL_stack_base + ax - 1)
5432 #endif
5433 
5434 #if (PERL_BCDVERSION < 0x5005000)
5435 #  undef XSRETURN
5436 #  define XSRETURN(off)                                   \
5437       STMT_START {                                        \
5438           PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
5439           return;                                         \
5440       } STMT_END
5441 #endif
5442 #ifndef XSPROTO
5443 #  define XSPROTO(name)                  void name(pTHX_ CV* cv)
5444 #endif
5445 
5446 #ifndef SVfARG
5447 #  define SVfARG(p)                      ((void*)(p))
5448 #endif
5449 #ifndef PERL_ABS
5450 #  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x))
5451 #endif
5452 #ifndef dVAR
5453 #  define dVAR                           dNOOP
5454 #endif
5455 #ifndef SVf
5456 #  define SVf                            "_"
5457 #endif
5458 #ifndef CPERLscope
5459 #  define CPERLscope(x)                  x
5460 #endif
5461 #ifndef PERL_HASH
5462 #  define PERL_HASH(hash,str,len)        \
5463      STMT_START { \
5464         const char *s_PeRlHaSh = str; \
5465         I32 i_PeRlHaSh = len; \
5466         U32 hash_PeRlHaSh = 0; \
5467         while (i_PeRlHaSh--) \
5468             hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
5469         (hash) = hash_PeRlHaSh; \
5470     } STMT_END
5471 #endif
5472 
5473 #ifndef PERLIO_FUNCS_DECL
5474 # ifdef PERLIO_FUNCS_CONST
5475 #  define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs
5476 #  define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs)
5477 # else
5478 #  define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs
5479 #  define PERLIO_FUNCS_CAST(funcs) (funcs)
5480 # endif
5481 #endif
5482 
5483 /* provide these typedefs for older perls */
5484 #if (PERL_BCDVERSION < 0x5009003)
5485 
5486 # ifdef ARGSproto
5487 typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto);
5488 # else
5489 typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX);
5490 # endif
5491 
5492 typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
5493 
5494 #endif
5495 
5496 #ifndef WIDEST_UTYPE
5497 # ifdef QUADKIND
5498 #  ifdef U64TYPE
5499 #   define WIDEST_UTYPE U64TYPE
5500 #  else
5501 #   define WIDEST_UTYPE Quad_t
5502 #  endif
5503 # else
5504 #  define WIDEST_UTYPE U32
5505 # endif
5506 #endif
5507 
5508 /* On versions without this, only ASCII is supported */
5509 #ifdef NATIVE_TO_ASCII
5510 #ifndef NATIVE_TO_LATIN1
5511 #  define NATIVE_TO_LATIN1(c)            NATIVE_TO_ASCII(c)
5512 #endif
5513 
5514 #else
5515 #ifndef NATIVE_TO_LATIN1
5516 #  define NATIVE_TO_LATIN1(c)            (c)
5517 #endif
5518 
5519 #endif
5520 
5521 #ifdef ASCII_TO_NATIVE
5522 #ifndef LATIN1_TO_NATIVE
5523 #  define LATIN1_TO_NATIVE(c)            ASCII_TO_NATIVE(c)
5524 #endif
5525 
5526 #else
5527 #ifndef LATIN1_TO_NATIVE
5528 #  define LATIN1_TO_NATIVE(c)            (c)
5529 #endif
5530 
5531 #endif
5532 
5533 /* Warning: LATIN1_TO_NATIVE, NATIVE_TO_LATIN1
5534    EBCDIC is not supported on versions earlier than 5.7.1
5535  */
5536 
5537 #ifdef EBCDIC
5538 
5539 /* This is the first version where these macros are fully correct on EBCDIC
5540  * platforms.  Relying on * the C library functions, as earlier releases did,
5541  * causes problems with * locales */
5542 # if (PERL_BCDVERSION < 0x5022000)
5543 #  undef isALNUM
5544 #  undef isALNUM_A
5545 #  undef isALNUM_L1
5546 #  undef isALNUMC
5547 #  undef isALNUMC_A
5548 #  undef isALNUMC_L1
5549 #  undef isALPHA
5550 #  undef isALPHA_A
5551 #  undef isALPHA_L1
5552 #  undef isALPHANUMERIC
5553 #  undef isALPHANUMERIC_A
5554 #  undef isALPHANUMERIC_L1
5555 #  undef isASCII
5556 #  undef isASCII_A
5557 #  undef isASCII_L1
5558 #  undef isBLANK
5559 #  undef isBLANK_A
5560 #  undef isBLANK_L1
5561 #  undef isCNTRL
5562 #  undef isCNTRL_A
5563 #  undef isCNTRL_L1
5564 #  undef isDIGIT
5565 #  undef isDIGIT_A
5566 #  undef isDIGIT_L1
5567 #  undef isGRAPH
5568 #  undef isGRAPH_A
5569 #  undef isGRAPH_L1
5570 #  undef isIDCONT
5571 #  undef isIDCONT_A
5572 #  undef isIDCONT_L1
5573 #  undef isIDFIRST
5574 #  undef isIDFIRST_A
5575 #  undef isIDFIRST_L1
5576 #  undef isLOWER
5577 #  undef isLOWER_A
5578 #  undef isLOWER_L1
5579 #  undef isOCTAL
5580 #  undef isOCTAL_A
5581 #  undef isOCTAL_L1
5582 #  undef isPRINT
5583 #  undef isPRINT_A
5584 #  undef isPRINT_L1
5585 #  undef isPSXSPC
5586 #  undef isPSXSPC_A
5587 #  undef isPSXSPC_L1
5588 #  undef isPUNCT
5589 #  undef isPUNCT_A
5590 #  undef isPUNCT_L1
5591 #  undef isSPACE
5592 #  undef isSPACE_A
5593 #  undef isSPACE_L1
5594 #  undef isUPPER
5595 #  undef isUPPER_A
5596 #  undef isUPPER_L1
5597 #  undef isWORDCHAR
5598 #  undef isWORDCHAR_A
5599 #  undef isWORDCHAR_L1
5600 #  undef isXDIGIT
5601 #  undef isXDIGIT_A
5602 #  undef isXDIGIT_L1
5603 # endif
5604 #ifndef isASCII
5605 #  define isASCII(c)                     (isCNTRL(c) || isPRINT(c))
5606 #endif
5607 
5608         /* The below is accurate for all EBCDIC code pages supported by
5609          * all the versions of Perl overridden by this */
5610 #ifndef isCNTRL
5611 #  define isCNTRL(c)                     (    (c) == '\0' || (c) == '\a' || (c) == '\b'      \
5612                              ||  (c) == '\f' || (c) == '\n' || (c) == '\r'      \
5613                              ||  (c) == '\t' || (c) == '\v'                     \
5614                              || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */      \
5615                              ||  (c) == 7    /* U+7F DEL */                     \
5616                              || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */       \
5617                                                       /* DLE, DC[1-3] */        \
5618                              ||  (c) == 0x18 /* U+18 CAN */                     \
5619                              ||  (c) == 0x19 /* U+19 EOM */                     \
5620                              || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */      \
5621                              ||  (c) == 0x26 /* U+17 ETB */                     \
5622                              ||  (c) == 0x27 /* U+1B ESC */                     \
5623                              ||  (c) == 0x2D /* U+05 ENQ */                     \
5624                              ||  (c) == 0x2E /* U+06 ACK */                     \
5625                              ||  (c) == 0x32 /* U+16 SYN */                     \
5626                              ||  (c) == 0x37 /* U+04 EOT */                     \
5627                              ||  (c) == 0x3C /* U+14 DC4 */                     \
5628                              ||  (c) == 0x3D /* U+15 NAK */                     \
5629                              ||  (c) == 0x3F /* U+1A SUB */                     \
5630                             )
5631 #endif
5632 
5633 #if '^' == 106    /* EBCDIC POSIX-BC */
5634 #  define D_PPP_OUTLIER_CONTROL 0x5F
5635 #else   /* EBCDIC 1047 037 */
5636 #  define D_PPP_OUTLIER_CONTROL 0xFF
5637 #endif
5638 
5639 /* The controls are everything below blank, plus one outlier */
5640 #ifndef isCNTRL_L1
5641 #  define isCNTRL_L1(c)                  ((WIDEST_UTYPE) (c) < ' '                           \
5642                           || (WIDEST_UTYPE) (c) == D_PPP_OUTLIER_CONTROL)
5643 #endif
5644 
5645                             )
5646 /* The ordering of the tests in this and isUPPER are to exclude most characters
5647  * early */
5648 #ifndef isLOWER
5649 #  define isLOWER(c)                     (        (c) >= 'a' && (c) <= 'z'                   \
5650                              &&  (   (c) <= 'i'                                 \
5651                                  || ((c) >= 'j' && (c) <= 'r')                  \
5652                                  ||  (c) >= 's'))
5653 #endif
5654 
5655 #ifndef isUPPER
5656 #  define isUPPER(c)                     (        (c) >= 'A' && (c) <= 'Z'                   \
5657                              && (    (c) <= 'I'                                 \
5658                                  || ((c) >= 'J' && (c) <= 'R')                  \
5659                                  ||  (c) >= 'S'))
5660 #endif
5661 
5662 #else   /* Above is EBCDIC; below is ASCII */
5663 
5664 # if (PERL_BCDVERSION < 0x5004000)
5665 /* The implementation of these in older perl versions can give wrong results if
5666  * the C program locale is set to other than the C locale */
5667 #  undef isALNUM
5668 #  undef isALNUM_A
5669 #  undef isALPHA
5670 #  undef isALPHA_A
5671 #  undef isDIGIT
5672 #  undef isDIGIT_A
5673 #  undef isIDFIRST
5674 #  undef isIDFIRST_A
5675 #  undef isLOWER
5676 #  undef isLOWER_A
5677 #  undef isUPPER
5678 #  undef isUPPER_A
5679 # endif
5680 
5681 # if (PERL_BCDVERSION < 0x5008000) /* earlier perls omitted DEL */
5682 #  undef isCNTRL
5683 # endif
5684 
5685 # if (PERL_BCDVERSION < 0x5010000)
5686 /* earlier perls included all of the isSPACE() characters, which is wrong. The
5687  * version provided by Devel::PPPort always overrides an existing buggy
5688  * version. */
5689 #  undef isPRINT
5690 #  undef isPRINT_A
5691 # endif
5692 
5693 # if (PERL_BCDVERSION < 0x5014000)
5694 /* earlier perls always returned true if the parameter was a signed char */
5695 #  undef isASCII
5696 #  undef isASCII_A
5697 # endif
5698 
5699 # if (PERL_BCDVERSION < 0x5017008) /* earlier perls didn't include PILCROW, SECTION SIGN */
5700 #  undef isPUNCT_L1
5701 # endif
5702 
5703 # if (PERL_BCDVERSION < 0x5013007) /* khw didn't investigate why this failed */
5704 #  undef isALNUMC_L1
5705 #endif
5706 
5707 # if (PERL_BCDVERSION < 0x5020000) /* earlier perls didn't include \v */
5708 #  undef isSPACE
5709 #  undef isSPACE_A
5710 #  undef isSPACE_L1
5711 
5712 # endif
5713 #ifndef isASCII
5714 #  define isASCII(c)                     ((WIDEST_UTYPE) (c) <= 127)
5715 #endif
5716 
5717 #ifndef isCNTRL
5718 #  define isCNTRL(c)                     ((WIDEST_UTYPE) (c) < ' ' || (c) == 127)
5719 #endif
5720 
5721 #ifndef isCNTRL_L1
5722 #  define isCNTRL_L1(c)                  (isCNTRL(c) || (   (WIDEST_UTYPE) (c) <= 0x9F  \
5723                                                 && (WIDEST_UTYPE) (c) >= 0x80))
5724 #endif
5725 
5726 #ifndef isLOWER
5727 #  define isLOWER(c)                     ((c) >= 'a' && (c) <= 'z')
5728 #endif
5729 
5730 #ifndef isUPPER
5731 #  define isUPPER(c)                     ((c) <= 'Z' && (c) >= 'A')
5732 #endif
5733 
5734 #endif /* Below are definitions common to EBCDIC and ASCII */
5735 #ifndef isASCII_L1
5736 #  define isASCII_L1(c)                  isASCII(c)
5737 #endif
5738 
5739 #ifndef isALNUM
5740 #  define isALNUM(c)                     isWORDCHAR(c)
5741 #endif
5742 
5743 #ifndef isALNUMC
5744 #  define isALNUMC(c)                    isALPHANUMERIC(c)
5745 #endif
5746 
5747 #ifndef isALNUMC_L1
5748 #  define isALNUMC_L1(c)                 isALPHANUMERIC_L1(c)
5749 #endif
5750 
5751 #ifndef isALPHA
5752 #  define isALPHA(c)                     (isUPPER(c) || isLOWER(c))
5753 #endif
5754 
5755 #ifndef isALPHA_L1
5756 #  define isALPHA_L1(c)                  (isUPPER_L1(c) || isLOWER_L1(c))
5757 #endif
5758 
5759 #ifndef isALPHANUMERIC
5760 #  define isALPHANUMERIC(c)              (isALPHA(c) || isDIGIT(c))
5761 #endif
5762 
5763 #ifndef isALPHANUMERIC_L1
5764 #  define isALPHANUMERIC_L1(c)           (isALPHA_L1(c) || isDIGIT(c))
5765 #endif
5766 
5767 #ifndef isBLANK
5768 #  define isBLANK(c)                     ((c) == ' ' || (c) == '\t')
5769 #endif
5770 
5771 #ifndef isBLANK_L1
5772 #  define isBLANK_L1(c)                  (    isBLANK(c)                                    \
5773                              || (   (WIDEST_UTYPE) (c) < 256                   \
5774                                  && NATIVE_TO_LATIN1((U8) c) == 0xA0))
5775 #endif
5776 
5777 #ifndef isDIGIT
5778 #  define isDIGIT(c)                     ((c) <= '9' && (c) >= '0')
5779 #endif
5780 
5781 #ifndef isDIGIT_L1
5782 #  define isDIGIT_L1(c)                  isDIGIT(c)
5783 #endif
5784 
5785 #ifndef isGRAPH
5786 #  define isGRAPH(c)                     (isWORDCHAR(c) || isPUNCT(c))
5787 #endif
5788 
5789 #ifndef isGRAPH_L1
5790 #  define isGRAPH_L1(c)                  (isPRINT_L1(c) && (c) != ' ')
5791 #endif
5792 
5793 #ifndef isIDCONT
5794 #  define isIDCONT(c)                    isWORDCHAR(c)
5795 #endif
5796 
5797 #ifndef isIDCONT_L1
5798 #  define isIDCONT_L1(c)                 isWORDCHAR_L1(c)
5799 #endif
5800 
5801 #ifndef isIDFIRST
5802 #  define isIDFIRST(c)                   (isALPHA(c) || (c) == '_')
5803 #endif
5804 
5805 #ifndef isIDFIRST_L1
5806 #  define isIDFIRST_L1(c)                (isALPHA_L1(c) || NATIVE_TO_LATIN1(c) == '_')
5807 #endif
5808 
5809 #ifndef isLOWER_L1
5810 #  define isLOWER_L1(c)                  (    isLOWER(c)                                    \
5811                              || (   (WIDEST_UTYPE) (c) < 256                   \
5812                                  && (  (   NATIVE_TO_LATIN1((U8) c) >= 0xDF    \
5813                                         && NATIVE_TO_LATIN1((U8) c) != 0xF7)   \
5814                                      || NATIVE_TO_LATIN1((U8) c) == 0xAA       \
5815                                      || NATIVE_TO_LATIN1((U8) c) == 0xBA       \
5816                                      || NATIVE_TO_LATIN1((U8) c) == 0xB5)))
5817 #endif
5818 
5819 #ifndef isOCTAL
5820 #  define isOCTAL(c)                     (((WIDEST_UTYPE)((c)) & ~7) == '0')
5821 #endif
5822 
5823 #ifndef isOCTAL_L1
5824 #  define isOCTAL_L1(c)                  isOCTAL(c)
5825 #endif
5826 
5827 #ifndef isPRINT
5828 #  define isPRINT(c)                     (isGRAPH(c) || (c) == ' ')
5829 #endif
5830 
5831 #ifndef isPRINT_L1
5832 #  define isPRINT_L1(c)                  ((WIDEST_UTYPE) (c) < 256 && ! isCNTRL_L1(c))
5833 #endif
5834 
5835 #ifndef isPSXSPC
5836 #  define isPSXSPC(c)                    isSPACE(c)
5837 #endif
5838 
5839 #ifndef isPSXSPC_L1
5840 #  define isPSXSPC_L1(c)                 isSPACE_L1(c)
5841 #endif
5842 
5843 #ifndef isPUNCT
5844 #  define isPUNCT(c)                     (   (c) == '-' || (c) == '!' || (c) == '"'         \
5845                              || (c) == '#' || (c) == '$' || (c) == '%'         \
5846                              || (c) == '&' || (c) == '\'' || (c) == '('        \
5847                              || (c) == ')' || (c) == '*' || (c) == '+'         \
5848                              || (c) == ',' || (c) == '.' || (c) == '/'         \
5849                              || (c) == ':' || (c) == ';' || (c) == '<'         \
5850                              || (c) == '=' || (c) == '>' || (c) == '?'         \
5851                              || (c) == '@' || (c) == '[' || (c) == '\\'        \
5852                              || (c) == ']' || (c) == '^' || (c) == '_'         \
5853                              || (c) == '`' || (c) == '{' || (c) == '|'         \
5854                              || (c) == '}' || (c) == '~')
5855 #endif
5856 
5857 #ifndef isPUNCT_L1
5858 #  define isPUNCT_L1(c)                  (    isPUNCT(c)                                   \
5859                               || (   (WIDEST_UTYPE) (c) < 256                  \
5860                                   && (   NATIVE_TO_LATIN1((U8) c) == 0xA1      \
5861                                       || NATIVE_TO_LATIN1((U8) c) == 0xA7      \
5862                                       || NATIVE_TO_LATIN1((U8) c) == 0xAB      \
5863                                       || NATIVE_TO_LATIN1((U8) c) == 0xB6      \
5864                                       || NATIVE_TO_LATIN1((U8) c) == 0xB7      \
5865                                       || NATIVE_TO_LATIN1((U8) c) == 0xBB      \
5866                                       || NATIVE_TO_LATIN1((U8) c) == 0xBF)))
5867 #endif
5868 
5869 #ifndef isSPACE
5870 #  define isSPACE(c)                     (   isBLANK(c) || (c) == '\n' || (c) == '\r'   \
5871                                  || (c) == '\v' || (c) == '\f')
5872 #endif
5873 
5874 #ifndef isSPACE_L1
5875 #  define isSPACE_L1(c)                  (    isSPACE(c)                                    \
5876                              || (   (WIDEST_UTYPE) (c) < 256                   \
5877                                  && (   NATIVE_TO_LATIN1((U8) c) == 0x85       \
5878                                      || NATIVE_TO_LATIN1((U8) c) == 0xA0)))
5879 #endif
5880 
5881 #ifndef isUPPER_L1
5882 #  define isUPPER_L1(c)                  (   isUPPER(c)                                     \
5883                              || (   (WIDEST_UTYPE) (c) < 256                   \
5884                                  && (   NATIVE_TO_LATIN1((U8) c) >= 0xC0       \
5885                                      && NATIVE_TO_LATIN1((U8) c) <= 0xDE       \
5886                                      && NATIVE_TO_LATIN1((U8) c) != 0xD7)))
5887 #endif
5888 
5889 #ifndef isWORDCHAR
5890 #  define isWORDCHAR(c)                  (isALPHANUMERIC(c) || (c) == '_')
5891 #endif
5892 
5893 #ifndef isWORDCHAR_L1
5894 #  define isWORDCHAR_L1(c)               (isIDFIRST_L1(c) || isDIGIT(c))
5895 #endif
5896 
5897 #ifndef isXDIGIT
5898 #  define isXDIGIT(c)                    (   isDIGIT(c)                                 \
5899                                  || ((c) >= 'a' && (c) <= 'f')                 \
5900                                  || ((c) >= 'A' && (c) <= 'F'))
5901 #endif
5902 
5903 #ifndef isXDIGIT_L1
5904 #  define isXDIGIT_L1(c)                 isXDIGIT(c)
5905 #endif
5906 #ifndef isALNUM_A
5907 #  define isALNUM_A(c)                   isALNUM(c)
5908 #endif
5909 
5910 #ifndef isALNUMC_A
5911 #  define isALNUMC_A(c)                  isALNUMC(c)
5912 #endif
5913 
5914 #ifndef isALPHA_A
5915 #  define isALPHA_A(c)                   isALPHA(c)
5916 #endif
5917 
5918 #ifndef isALPHANUMERIC_A
5919 #  define isALPHANUMERIC_A(c)            isALPHANUMERIC(c)
5920 #endif
5921 
5922 #ifndef isASCII_A
5923 #  define isASCII_A(c)                   isASCII(c)
5924 #endif
5925 
5926 #ifndef isBLANK_A
5927 #  define isBLANK_A(c)                   isBLANK(c)
5928 #endif
5929 
5930 #ifndef isCNTRL_A
5931 #  define isCNTRL_A(c)                   isCNTRL(c)
5932 #endif
5933 
5934 #ifndef isDIGIT_A
5935 #  define isDIGIT_A(c)                   isDIGIT(c)
5936 #endif
5937 
5938 #ifndef isGRAPH_A
5939 #  define isGRAPH_A(c)                   isGRAPH(c)
5940 #endif
5941 
5942 #ifndef isIDCONT_A
5943 #  define isIDCONT_A(c)                  isIDCONT(c)
5944 #endif
5945 
5946 #ifndef isIDFIRST_A
5947 #  define isIDFIRST_A(c)                 isIDFIRST(c)
5948 #endif
5949 
5950 #ifndef isLOWER_A
5951 #  define isLOWER_A(c)                   isLOWER(c)
5952 #endif
5953 
5954 #ifndef isOCTAL_A
5955 #  define isOCTAL_A(c)                   isOCTAL(c)
5956 #endif
5957 
5958 #ifndef isPRINT_A
5959 #  define isPRINT_A(c)                   isPRINT(c)
5960 #endif
5961 
5962 #ifndef isPSXSPC_A
5963 #  define isPSXSPC_A(c)                  isPSXSPC(c)
5964 #endif
5965 
5966 #ifndef isPUNCT_A
5967 #  define isPUNCT_A(c)                   isPUNCT(c)
5968 #endif
5969 
5970 #ifndef isSPACE_A
5971 #  define isSPACE_A(c)                   isSPACE(c)
5972 #endif
5973 
5974 #ifndef isUPPER_A
5975 #  define isUPPER_A(c)                   isUPPER(c)
5976 #endif
5977 
5978 #ifndef isWORDCHAR_A
5979 #  define isWORDCHAR_A(c)                isWORDCHAR(c)
5980 #endif
5981 
5982 #ifndef isXDIGIT_A
5983 #  define isXDIGIT_A(c)                  isXDIGIT(c)
5984 #endif
5985 
5986 /* Until we figure out how to support this in older perls... */
5987 #if (PERL_BCDVERSION >= 0x5008000)
5988 #ifndef HeUTF8
5989 #  define HeUTF8(he)                     ((HeKLEN(he) == HEf_SVKEY) ?            \
5990                                  SvUTF8(HeKEY_sv(he)) :                 \
5991                                  (U32)HeKUTF8(he))
5992 #endif
5993 
5994 #endif
5995 #ifndef C_ARRAY_LENGTH
5996 #  define C_ARRAY_LENGTH(a)              (sizeof(a)/sizeof((a)[0]))
5997 #endif
5998 
5999 #ifndef C_ARRAY_END
6000 #  define C_ARRAY_END(a)                 ((a) + C_ARRAY_LENGTH(a))
6001 #endif
6002 #ifndef LIKELY
6003 #  define LIKELY(x)                      (x)
6004 #endif
6005 
6006 #ifndef UNLIKELY
6007 #  define UNLIKELY(x)                    (x)
6008 #endif
6009 
6010 #ifndef MUTABLE_PTR
6011 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
6012 #  define MUTABLE_PTR(p) ({ void *_p = (p); _p; })
6013 #else
6014 #  define MUTABLE_PTR(p) ((void *) (p))
6015 #endif
6016 #endif
6017 #ifndef MUTABLE_SV
6018 #  define MUTABLE_SV(p)                  ((SV *)MUTABLE_PTR(p))
6019 #endif
6020 
6021 #if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf)
6022 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
6023 #  define vnewSVpvf(pat, args) ({ SV *_sv = newSV(0); sv_vsetpvfn(_sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)); _sv; })
6024 #else
6025 #  define vnewSVpvf(pat, args) ((PL_Sv = newSV(0)), sv_vsetpvfn(PL_Sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)), PL_Sv)
6026 #endif
6027 #endif
6028 
6029 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf)
6030 #  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
6031 #endif
6032 
6033 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf)
6034 #  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
6035 #endif
6036 
6037 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg)
6038 #if defined(NEED_sv_catpvf_mg)
6039 static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...);
6040 static
6041 #else
6042 extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...);
6043 #endif
6044 
6045 #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL)
6046 
6047 #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg)
6048 
6049 
6050 void
DPPP_(my_sv_catpvf_mg)6051 DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...)
6052 {
6053   va_list args;
6054   va_start(args, pat);
6055   sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
6056   SvSETMAGIC(sv);
6057   va_end(args);
6058 }
6059 
6060 #endif
6061 #endif
6062 
6063 #ifdef PERL_IMPLICIT_CONTEXT
6064 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext)
6065 #if defined(NEED_sv_catpvf_mg_nocontext)
6066 static void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...);
6067 static
6068 #else
6069 extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...);
6070 #endif
6071 
6072 #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL)
6073 
6074 #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
6075 #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
6076 
6077 
6078 void
DPPP_(my_sv_catpvf_mg_nocontext)6079 DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...)
6080 {
6081   dTHX;
6082   va_list args;
6083   va_start(args, pat);
6084   sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
6085   SvSETMAGIC(sv);
6086   va_end(args);
6087 }
6088 
6089 #endif
6090 #endif
6091 #endif
6092 
6093 /* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */
6094 #ifndef sv_catpvf_mg
6095 #  ifdef PERL_IMPLICIT_CONTEXT
6096 #    define sv_catpvf_mg   Perl_sv_catpvf_mg_nocontext
6097 #  else
6098 #    define sv_catpvf_mg   Perl_sv_catpvf_mg
6099 #  endif
6100 #endif
6101 
6102 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg)
6103 #  define sv_vcatpvf_mg(sv, pat, args)                                     \
6104    STMT_START {                                                            \
6105      sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
6106      SvSETMAGIC(sv);                                                       \
6107    } STMT_END
6108 #endif
6109 
6110 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg)
6111 #if defined(NEED_sv_setpvf_mg)
6112 static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...);
6113 static
6114 #else
6115 extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...);
6116 #endif
6117 
6118 #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL)
6119 
6120 #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg)
6121 
6122 
6123 void
DPPP_(my_sv_setpvf_mg)6124 DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...)
6125 {
6126   va_list args;
6127   va_start(args, pat);
6128   sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
6129   SvSETMAGIC(sv);
6130   va_end(args);
6131 }
6132 
6133 #endif
6134 #endif
6135 
6136 #ifdef PERL_IMPLICIT_CONTEXT
6137 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext)
6138 #if defined(NEED_sv_setpvf_mg_nocontext)
6139 static void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...);
6140 static
6141 #else
6142 extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...);
6143 #endif
6144 
6145 #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL)
6146 
6147 #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
6148 #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
6149 
6150 
6151 void
DPPP_(my_sv_setpvf_mg_nocontext)6152 DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...)
6153 {
6154   dTHX;
6155   va_list args;
6156   va_start(args, pat);
6157   sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
6158   SvSETMAGIC(sv);
6159   va_end(args);
6160 }
6161 
6162 #endif
6163 #endif
6164 #endif
6165 
6166 /* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */
6167 #ifndef sv_setpvf_mg
6168 #  ifdef PERL_IMPLICIT_CONTEXT
6169 #    define sv_setpvf_mg   Perl_sv_setpvf_mg_nocontext
6170 #  else
6171 #    define sv_setpvf_mg   Perl_sv_setpvf_mg
6172 #  endif
6173 #endif
6174 
6175 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg)
6176 #  define sv_vsetpvf_mg(sv, pat, args)                                     \
6177    STMT_START {                                                            \
6178      sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
6179      SvSETMAGIC(sv);                                                       \
6180    } STMT_END
6181 #endif
6182 
6183 /* Hint: sv_2pv_nolen
6184  * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen().
6185  */
6186 #ifndef sv_2pv_nolen
6187 #  define sv_2pv_nolen(sv)               SvPV_nolen(sv)
6188 #endif
6189 
6190 #ifdef SvPVbyte
6191 
6192 /* Hint: SvPVbyte
6193  * Does not work in perl-5.6.1, ppport.h implements a version
6194  * borrowed from perl-5.7.3.
6195  */
6196 
6197 #if (PERL_BCDVERSION < 0x5007000)
6198 #ifndef sv_2pvbyte
6199 #  define sv_2pvbyte(sv, lp)             (sv_utf8_downgrade((sv), 0), SvPV((sv), *(lp)))
6200 #endif
6201 
6202 /* Hint: sv_2pvbyte
6203  * Use the SvPVbyte() macro instead of sv_2pvbyte().
6204  */
6205 
6206 /* Replace sv_2pvbyte with SvPVbyte */
6207 
6208 #undef SvPVbyte
6209 
6210 #define SvPVbyte(sv, lp)                                                \
6211         ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \
6212          ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
6213 
6214 #endif
6215 
6216 #else
6217 
6218 #  define SvPVbyte          SvPV
6219 #  define sv_2pvbyte        sv_2pv
6220 
6221 #endif
6222 #ifndef sv_2pvbyte_nolen
6223 #  define sv_2pvbyte_nolen(sv)           sv_2pv_nolen(sv)
6224 #endif
6225 
6226 /* Hint: sv_pvn
6227  * Always use the SvPV() macro instead of sv_pvn().
6228  */
6229 
6230 /* Replace sv_pvn with SvPV */
6231 
6232 /* Hint: sv_pvn_force
6233  * Always use the SvPV_force() macro instead of sv_pvn_force().
6234  */
6235 
6236 /* Replace sv_pvn_force with SvPV_force */
6237 
6238 /* If these are undefined, they're not handled by the core anyway */
6239 #ifndef SV_IMMEDIATE_UNREF
6240 #  define SV_IMMEDIATE_UNREF             0
6241 #endif
6242 
6243 #ifndef SV_GMAGIC
6244 #  define SV_GMAGIC                      0
6245 #endif
6246 
6247 #ifndef SV_COW_DROP_PV
6248 #  define SV_COW_DROP_PV                 0
6249 #endif
6250 
6251 #ifndef SV_UTF8_NO_ENCODING
6252 #  define SV_UTF8_NO_ENCODING            0
6253 #endif
6254 
6255 #ifndef SV_CONST_RETURN
6256 #  define SV_CONST_RETURN                0
6257 #endif
6258 
6259 #ifndef SV_MUTABLE_RETURN
6260 #  define SV_MUTABLE_RETURN              0
6261 #endif
6262 
6263 #ifndef SV_SMAGIC
6264 #  define SV_SMAGIC                      0
6265 #endif
6266 
6267 #ifndef SV_HAS_TRAILING_NUL
6268 #  define SV_HAS_TRAILING_NUL            0
6269 #endif
6270 
6271 #ifndef SV_COW_SHARED_HASH_KEYS
6272 #  define SV_COW_SHARED_HASH_KEYS        0
6273 #endif
6274 
6275 #if (PERL_BCDVERSION < 0x5007002)
6276 #ifndef sv_2pv_flags
6277 #  define sv_2pv_flags(sv, lp, flags)    sv_2pv((sv), (lp) ? (lp) : &PL_na)
6278 #endif
6279 
6280 #ifndef sv_pvn_force_flags
6281 #  define sv_pvn_force_flags(sv, lp, flags) sv_pvn_force((sv), (lp) ? (lp) : &PL_na)
6282 #endif
6283 
6284 #endif
6285 
6286 #if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
6287 # define D_PPP_SVPV_NOLEN_LP_ARG &PL_na
6288 #else
6289 # define D_PPP_SVPV_NOLEN_LP_ARG 0
6290 #endif
6291 #ifndef SvPV_const
6292 #  define SvPV_const(sv, lp)             SvPV_flags_const(sv, lp, SV_GMAGIC)
6293 #endif
6294 
6295 #ifndef SvPV_mutable
6296 #  define SvPV_mutable(sv, lp)           SvPV_flags_mutable(sv, lp, SV_GMAGIC)
6297 #endif
6298 #ifndef SvPV_flags
6299 #  define SvPV_flags(sv, lp, flags)      \
6300                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6301                   ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
6302 #endif
6303 #ifndef SvPV_flags_const
6304 #  define SvPV_flags_const(sv, lp, flags) \
6305                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6306                   ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
6307                   (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
6308 #endif
6309 #ifndef SvPV_flags_const_nolen
6310 #  define SvPV_flags_const_nolen(sv, flags) \
6311                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6312                   ? SvPVX_const(sv) : \
6313                   (const char*) sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
6314 #endif
6315 #ifndef SvPV_flags_mutable
6316 #  define SvPV_flags_mutable(sv, lp, flags) \
6317                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6318                   ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
6319                   sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
6320 #endif
6321 #ifndef SvPV_force
6322 #  define SvPV_force(sv, lp)             SvPV_force_flags(sv, lp, SV_GMAGIC)
6323 #endif
6324 
6325 #ifndef SvPV_force_nolen
6326 #  define SvPV_force_nolen(sv)           SvPV_force_flags_nolen(sv, SV_GMAGIC)
6327 #endif
6328 
6329 #ifndef SvPV_force_mutable
6330 #  define SvPV_force_mutable(sv, lp)     SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
6331 #endif
6332 
6333 #ifndef SvPV_force_nomg
6334 #  define SvPV_force_nomg(sv, lp)        SvPV_force_flags(sv, lp, 0)
6335 #endif
6336 
6337 #ifndef SvPV_force_nomg_nolen
6338 #  define SvPV_force_nomg_nolen(sv)      SvPV_force_flags_nolen(sv, 0)
6339 #endif
6340 #ifndef SvPV_force_flags
6341 #  define SvPV_force_flags(sv, lp, flags) \
6342                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
6343                  ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
6344 #endif
6345 #ifndef SvPV_force_flags_nolen
6346 #  define SvPV_force_flags_nolen(sv, flags) \
6347                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
6348                  ? SvPVX(sv) : sv_pvn_force_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags))
6349 #endif
6350 #ifndef SvPV_force_flags_mutable
6351 #  define SvPV_force_flags_mutable(sv, lp, flags) \
6352                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
6353                  ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
6354                   : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
6355 #endif
6356 #ifndef SvPV_nolen
6357 #  define SvPV_nolen(sv)                 \
6358                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6359                   ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
6360 #endif
6361 #ifndef SvPV_nolen_const
6362 #  define SvPV_nolen_const(sv)           \
6363                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6364                   ? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
6365 #endif
6366 #ifndef SvPV_nomg
6367 #  define SvPV_nomg(sv, lp)              SvPV_flags(sv, lp, 0)
6368 #endif
6369 
6370 #ifndef SvPV_nomg_const
6371 #  define SvPV_nomg_const(sv, lp)        SvPV_flags_const(sv, lp, 0)
6372 #endif
6373 
6374 #ifndef SvPV_nomg_const_nolen
6375 #  define SvPV_nomg_const_nolen(sv)      SvPV_flags_const_nolen(sv, 0)
6376 #endif
6377 
6378 #ifndef SvPV_nomg_nolen
6379 #  define SvPV_nomg_nolen(sv)            ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
6380                                     ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, 0))
6381 #endif
6382 #ifndef SvPV_renew
6383 #  define SvPV_renew(sv,n)               STMT_START { SvLEN_set(sv, n); \
6384                  SvPV_set((sv), (char *) saferealloc(          \
6385                        (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
6386                } STMT_END
6387 #endif
6388 #ifndef WARN_ALL
6389 #  define WARN_ALL                       0
6390 #endif
6391 
6392 #ifndef WARN_CLOSURE
6393 #  define WARN_CLOSURE                   1
6394 #endif
6395 
6396 #ifndef WARN_DEPRECATED
6397 #  define WARN_DEPRECATED                2
6398 #endif
6399 
6400 #ifndef WARN_EXITING
6401 #  define WARN_EXITING                   3
6402 #endif
6403 
6404 #ifndef WARN_GLOB
6405 #  define WARN_GLOB                      4
6406 #endif
6407 
6408 #ifndef WARN_IO
6409 #  define WARN_IO                        5
6410 #endif
6411 
6412 #ifndef WARN_CLOSED
6413 #  define WARN_CLOSED                    6
6414 #endif
6415 
6416 #ifndef WARN_EXEC
6417 #  define WARN_EXEC                      7
6418 #endif
6419 
6420 #ifndef WARN_LAYER
6421 #  define WARN_LAYER                     8
6422 #endif
6423 
6424 #ifndef WARN_NEWLINE
6425 #  define WARN_NEWLINE                   9
6426 #endif
6427 
6428 #ifndef WARN_PIPE
6429 #  define WARN_PIPE                      10
6430 #endif
6431 
6432 #ifndef WARN_UNOPENED
6433 #  define WARN_UNOPENED                  11
6434 #endif
6435 
6436 #ifndef WARN_MISC
6437 #  define WARN_MISC                      12
6438 #endif
6439 
6440 #ifndef WARN_NUMERIC
6441 #  define WARN_NUMERIC                   13
6442 #endif
6443 
6444 #ifndef WARN_ONCE
6445 #  define WARN_ONCE                      14
6446 #endif
6447 
6448 #ifndef WARN_OVERFLOW
6449 #  define WARN_OVERFLOW                  15
6450 #endif
6451 
6452 #ifndef WARN_PACK
6453 #  define WARN_PACK                      16
6454 #endif
6455 
6456 #ifndef WARN_PORTABLE
6457 #  define WARN_PORTABLE                  17
6458 #endif
6459 
6460 #ifndef WARN_RECURSION
6461 #  define WARN_RECURSION                 18
6462 #endif
6463 
6464 #ifndef WARN_REDEFINE
6465 #  define WARN_REDEFINE                  19
6466 #endif
6467 
6468 #ifndef WARN_REGEXP
6469 #  define WARN_REGEXP                    20
6470 #endif
6471 
6472 #ifndef WARN_SEVERE
6473 #  define WARN_SEVERE                    21
6474 #endif
6475 
6476 #ifndef WARN_DEBUGGING
6477 #  define WARN_DEBUGGING                 22
6478 #endif
6479 
6480 #ifndef WARN_INPLACE
6481 #  define WARN_INPLACE                   23
6482 #endif
6483 
6484 #ifndef WARN_INTERNAL
6485 #  define WARN_INTERNAL                  24
6486 #endif
6487 
6488 #ifndef WARN_MALLOC
6489 #  define WARN_MALLOC                    25
6490 #endif
6491 
6492 #ifndef WARN_SIGNAL
6493 #  define WARN_SIGNAL                    26
6494 #endif
6495 
6496 #ifndef WARN_SUBSTR
6497 #  define WARN_SUBSTR                    27
6498 #endif
6499 
6500 #ifndef WARN_SYNTAX
6501 #  define WARN_SYNTAX                    28
6502 #endif
6503 
6504 #ifndef WARN_AMBIGUOUS
6505 #  define WARN_AMBIGUOUS                 29
6506 #endif
6507 
6508 #ifndef WARN_BAREWORD
6509 #  define WARN_BAREWORD                  30
6510 #endif
6511 
6512 #ifndef WARN_DIGIT
6513 #  define WARN_DIGIT                     31
6514 #endif
6515 
6516 #ifndef WARN_PARENTHESIS
6517 #  define WARN_PARENTHESIS               32
6518 #endif
6519 
6520 #ifndef WARN_PRECEDENCE
6521 #  define WARN_PRECEDENCE                33
6522 #endif
6523 
6524 #ifndef WARN_PRINTF
6525 #  define WARN_PRINTF                    34
6526 #endif
6527 
6528 #ifndef WARN_PROTOTYPE
6529 #  define WARN_PROTOTYPE                 35
6530 #endif
6531 
6532 #ifndef WARN_QW
6533 #  define WARN_QW                        36
6534 #endif
6535 
6536 #ifndef WARN_RESERVED
6537 #  define WARN_RESERVED                  37
6538 #endif
6539 
6540 #ifndef WARN_SEMICOLON
6541 #  define WARN_SEMICOLON                 38
6542 #endif
6543 
6544 #ifndef WARN_TAINT
6545 #  define WARN_TAINT                     39
6546 #endif
6547 
6548 #ifndef WARN_THREADS
6549 #  define WARN_THREADS                   40
6550 #endif
6551 
6552 #ifndef WARN_UNINITIALIZED
6553 #  define WARN_UNINITIALIZED             41
6554 #endif
6555 
6556 #ifndef WARN_UNPACK
6557 #  define WARN_UNPACK                    42
6558 #endif
6559 
6560 #ifndef WARN_UNTIE
6561 #  define WARN_UNTIE                     43
6562 #endif
6563 
6564 #ifndef WARN_UTF8
6565 #  define WARN_UTF8                      44
6566 #endif
6567 
6568 #ifndef WARN_VOID
6569 #  define WARN_VOID                      45
6570 #endif
6571 
6572 #ifndef WARN_ASSERTIONS
6573 #  define WARN_ASSERTIONS                46
6574 #endif
6575 #ifndef packWARN
6576 #  define packWARN(a)                    (a)
6577 #endif
6578 
6579 #ifndef ckWARN
6580 #  ifdef G_WARN_ON
6581 #    define  ckWARN(a)                  (PL_dowarn & G_WARN_ON)
6582 #  else
6583 #    define  ckWARN(a)                  PL_dowarn
6584 #  endif
6585 #endif
6586 
6587 #if (PERL_BCDVERSION >= 0x5004000) && !defined(warner)
6588 #if defined(NEED_warner)
6589 static void DPPP_(my_warner)(U32 err, const char * pat, ...);
6590 static
6591 #else
6592 extern void DPPP_(my_warner)(U32 err, const char * pat, ...);
6593 #endif
6594 
6595 #if defined(NEED_warner) || defined(NEED_warner_GLOBAL)
6596 
6597 #define Perl_warner DPPP_(my_warner)
6598 
6599 
6600 void
DPPP_(my_warner)6601 DPPP_(my_warner)(U32 err, const char *pat, ...)
6602 {
6603   SV *sv;
6604   va_list args;
6605 
6606   PERL_UNUSED_ARG(err);
6607 
6608   va_start(args, pat);
6609   sv = vnewSVpvf(pat, &args);
6610   va_end(args);
6611   sv_2mortal(sv);
6612   warn("%s", SvPV_nolen(sv));
6613 }
6614 
6615 #define warner  Perl_warner
6616 
6617 #define Perl_warner_nocontext  Perl_warner
6618 
6619 #endif
6620 #endif
6621 
6622 #ifndef IVdf
6623 #  if IVSIZE == LONGSIZE
6624 #    define     IVdf      "ld"
6625 #    define     UVuf      "lu"
6626 #    define     UVof      "lo"
6627 #    define     UVxf      "lx"
6628 #    define     UVXf      "lX"
6629 #  elif IVSIZE == INTSIZE
6630 #    define   IVdf      "d"
6631 #    define   UVuf      "u"
6632 #    define   UVof      "o"
6633 #    define   UVxf      "x"
6634 #    define   UVXf      "X"
6635 #  else
6636 #    error "cannot define IV/UV formats"
6637 #  endif
6638 #endif
6639 
6640 #ifndef NVef
6641 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
6642       defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000)
6643             /* Not very likely, but let's try anyway. */
6644 #    define NVef          PERL_PRIeldbl
6645 #    define NVff          PERL_PRIfldbl
6646 #    define NVgf          PERL_PRIgldbl
6647 #  else
6648 #    define NVef          "e"
6649 #    define NVff          "f"
6650 #    define NVgf          "g"
6651 #  endif
6652 #endif
6653 #ifndef sv_setuv
6654 #  define sv_setuv(sv, uv)               \
6655                STMT_START {                         \
6656                  UV TeMpUv = uv;                    \
6657                  if (TeMpUv <= IV_MAX)              \
6658                    sv_setiv(sv, TeMpUv);            \
6659                  else                               \
6660                    sv_setnv(sv, (double)TeMpUv);    \
6661                } STMT_END
6662 #endif
6663 #ifndef newSVuv
6664 #  define newSVuv(uv)                    ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
6665 #endif
6666 
6667 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
6668 #ifndef sv_2uv
6669 #  define sv_2uv(sv)                     ({ SV *_sv = (sv); (UV) (SvNOK(_sv) ? SvNV(_sv) : sv_2nv(_sv)); })
6670 #endif
6671 
6672 #else
6673 #ifndef sv_2uv
6674 #  define sv_2uv(sv)                     ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
6675 #endif
6676 
6677 #endif
6678 #ifndef SvUVX
6679 #  define SvUVX(sv)                      ((UV)SvIVX(sv))
6680 #endif
6681 
6682 #ifndef SvUVXx
6683 #  define SvUVXx(sv)                     SvUVX(sv)
6684 #endif
6685 
6686 #ifndef SvUV
6687 #  define SvUV(sv)                       (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
6688 #endif
6689 
6690 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
6691 #ifndef SvUVx
6692 #  define SvUVx(sv)                      ({ SV *_sv = (sv)); SvUV(_sv); })
6693 #endif
6694 
6695 #else
6696 #ifndef SvUVx
6697 #  define SvUVx(sv)                      ((PL_Sv = (sv)), SvUV(PL_Sv))
6698 #endif
6699 
6700 #endif
6701 
6702 /* Hint: sv_uv
6703  * Always use the SvUVx() macro instead of sv_uv().
6704  */
6705 /* Replace sv_uv with SvUVx */
6706 #ifndef sv_uv
6707 #  define sv_uv(sv)                      SvUVx(sv)
6708 #endif
6709 
6710 #if !defined(SvUOK) && defined(SvIOK_UV)
6711 #  define SvUOK(sv) SvIOK_UV(sv)
6712 #endif
6713 #ifndef XST_mUV
6714 #  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  )
6715 #endif
6716 
6717 #ifndef XSRETURN_UV
6718 #  define XSRETURN_UV(v)                 STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
6719 #endif
6720 #ifndef PUSHu
6721 #  define PUSHu(u)                       STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG;  } STMT_END
6722 #endif
6723 
6724 #ifndef XPUSHu
6725 #  define XPUSHu(u)                      STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
6726 #endif
6727 
6728 #if !defined(my_strnlen)
6729 #if defined(NEED_my_strnlen)
6730 static Size_t DPPP_(my_my_strnlen)(const char * str, Size_t maxlen);
6731 static
6732 #else
6733 extern Size_t DPPP_(my_my_strnlen)(const char * str, Size_t maxlen);
6734 #endif
6735 
6736 #if defined(NEED_my_strnlen) || defined(NEED_my_strnlen_GLOBAL)
6737 
6738 #define my_strnlen DPPP_(my_my_strnlen)
6739 #define Perl_my_strnlen DPPP_(my_my_strnlen)
6740 
6741 
6742 Size_t
DPPP_(my_my_strnlen)6743 DPPP_(my_my_strnlen)(const char *str, Size_t maxlen)
6744 {
6745     const char *p = str;
6746 
6747     while(maxlen-- && *p)
6748         p++;
6749 
6750     return p - str;
6751 }
6752 
6753 #endif
6754 #endif
6755 
6756 #ifdef HAS_MEMCMP
6757 #ifndef memNE
6758 #  define memNE(s1,s2,l)                 (memcmp(s1,s2,l))
6759 #endif
6760 
6761 #ifndef memEQ
6762 #  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l))
6763 #endif
6764 
6765 #else
6766 #ifndef memNE
6767 #  define memNE(s1,s2,l)                 (bcmp(s1,s2,l))
6768 #endif
6769 
6770 #ifndef memEQ
6771 #  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l))
6772 #endif
6773 
6774 #endif
6775 #ifndef memEQs
6776 #  define memEQs(s1, l, s2)              \
6777                    (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1)))
6778 #endif
6779 
6780 #ifndef memNEs
6781 #  define memNEs(s1, l, s2)              !memEQs(s1, l, s2)
6782 #endif
6783 #ifndef MoveD
6784 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t))
6785 #endif
6786 
6787 #ifndef CopyD
6788 #  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
6789 #endif
6790 
6791 #ifdef HAS_MEMSET
6792 #ifndef ZeroD
6793 #  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t))
6794 #endif
6795 
6796 #else
6797 #ifndef ZeroD
6798 #  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)), d)
6799 #endif
6800 
6801 #endif
6802 #ifndef PoisonWith
6803 #  define PoisonWith(d,n,t,b)            (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))
6804 #endif
6805 
6806 #ifndef PoisonNew
6807 #  define PoisonNew(d,n,t)               PoisonWith(d,n,t,0xAB)
6808 #endif
6809 
6810 #ifndef PoisonFree
6811 #  define PoisonFree(d,n,t)              PoisonWith(d,n,t,0xEF)
6812 #endif
6813 
6814 #ifndef Poison
6815 #  define Poison(d,n,t)                  PoisonFree(d,n,t)
6816 #endif
6817 #ifndef Newx
6818 #  define Newx(v,n,t)                    New(0,v,n,t)
6819 #endif
6820 
6821 #ifndef Newxc
6822 #  define Newxc(v,n,t,c)                 Newc(0,v,n,t,c)
6823 #endif
6824 
6825 #ifndef Newxz
6826 #  define Newxz(v,n,t)                   Newz(0,v,n,t)
6827 #endif
6828 
6829 #ifdef NEED_mess_sv
6830 #define NEED_mess
6831 #endif
6832 
6833 #ifdef NEED_mess
6834 #define NEED_mess_nocontext
6835 #define NEED_vmess
6836 #endif
6837 
6838 #ifndef croak_sv
6839 #if (PERL_BCDVERSION >= 0x5007003) || ( (PERL_BCDVERSION >= 0x5006001) && (PERL_BCDVERSION < 0x5007000) )
6840 #  if ( (PERL_BCDVERSION >= 0x5008000) && (PERL_BCDVERSION < 0x5008009) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5010001) )
6841 #    define D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv)                    \
6842         STMT_START {                                           \
6843             SV *_errsv = ERRSV;                                \
6844             SvFLAGS(_errsv) = (SvFLAGS(_errsv) & ~SVf_UTF8) |  \
6845                               (SvFLAGS(sv) & SVf_UTF8);        \
6846         } STMT_END
6847 #  else
6848 #    define D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv) STMT_START {} STMT_END
6849 #  endif
6850 #  define croak_sv(sv)                         \
6851     STMT_START {                               \
6852         SV *_sv = (sv);                        \
6853         if (SvROK(_sv)) {                      \
6854             sv_setsv(ERRSV, _sv);              \
6855             croak(NULL);                       \
6856         } else {                               \
6857             D_PPP_FIX_UTF8_ERRSV_FOR_SV(_sv);  \
6858             croak("%" SVf, SVfARG(_sv));       \
6859         }                                      \
6860     } STMT_END
6861 #elif (PERL_BCDVERSION >= 0x5004000)
6862 #  define croak_sv(sv) croak("%" SVf, SVfARG(sv))
6863 #else
6864 #  define croak_sv(sv) croak("%s", SvPV_nolen(sv))
6865 #endif
6866 #endif
6867 
6868 #ifndef die_sv
6869 #if defined(NEED_die_sv)
6870 static OP * DPPP_(my_die_sv)(pTHX_ SV * baseex);
6871 static
6872 #else
6873 extern OP * DPPP_(my_die_sv)(pTHX_ SV * baseex);
6874 #endif
6875 
6876 #if defined(NEED_die_sv) || defined(NEED_die_sv_GLOBAL)
6877 
6878 #ifdef die_sv
6879 #  undef die_sv
6880 #endif
6881 #define die_sv(a) DPPP_(my_die_sv)(aTHX_ a)
6882 #define Perl_die_sv DPPP_(my_die_sv)
6883 
6884 OP *
DPPP_(my_die_sv)6885 DPPP_(my_die_sv)(pTHX_ SV *baseex)
6886 {
6887     croak_sv(baseex);
6888     return (OP *)NULL;
6889 }
6890 #endif
6891 #endif
6892 
6893 #ifndef warn_sv
6894 #if (PERL_BCDVERSION >= 0x5004000)
6895 #  define warn_sv(sv) warn("%" SVf, SVfARG(sv))
6896 #else
6897 #  define warn_sv(sv) warn("%s", SvPV_nolen(sv))
6898 #endif
6899 #endif
6900 
6901 #if ! defined vmess && (PERL_BCDVERSION >= 0x5004000)
6902 #  if defined(NEED_vmess)
6903 static SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args);
6904 static
6905 #else
6906 extern SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args);
6907 #endif
6908 
6909 #if defined(NEED_vmess) || defined(NEED_vmess_GLOBAL)
6910 
6911 #ifdef vmess
6912 #  undef vmess
6913 #endif
6914 #define vmess(a,b) DPPP_(my_vmess)(aTHX_ a,b)
6915 #define Perl_vmess DPPP_(my_vmess)
6916 
6917 
6918 SV*
DPPP_(my_vmess)6919 DPPP_(my_vmess)(pTHX_ const char* pat, va_list* args)
6920 {
6921     mess(pat, args);
6922     return PL_mess_sv;
6923 }
6924 #  endif
6925 #endif
6926 
6927 #if (PERL_BCDVERSION < 0x5006000) && (PERL_BCDVERSION >= 0x5004000)
6928 #undef mess
6929 #endif
6930 
6931 #if !defined(mess_nocontext) && !defined(Perl_mess_nocontext) && (PERL_BCDVERSION >= 0x5004000)
6932 #if defined(NEED_mess_nocontext)
6933 static SV * DPPP_(my_mess_nocontext)(const char * pat, ...);
6934 static
6935 #else
6936 extern SV * DPPP_(my_mess_nocontext)(const char * pat, ...);
6937 #endif
6938 
6939 #if defined(NEED_mess_nocontext) || defined(NEED_mess_nocontext_GLOBAL)
6940 
6941 #define mess_nocontext DPPP_(my_mess_nocontext)
6942 #define Perl_mess_nocontext DPPP_(my_mess_nocontext)
6943 
6944 SV*
DPPP_(my_mess_nocontext)6945 DPPP_(my_mess_nocontext)(const char* pat, ...)
6946 {
6947     dTHX;
6948     SV *sv;
6949     va_list args;
6950     va_start(args, pat);
6951     sv = vmess(pat, &args);
6952     va_end(args);
6953     return sv;
6954 }
6955 #endif
6956 #endif
6957 
6958 #ifndef mess
6959 #if defined(NEED_mess)
6960 static SV * DPPP_(my_mess)(pTHX_ const char * pat, ...);
6961 static
6962 #else
6963 extern SV * DPPP_(my_mess)(pTHX_ const char * pat, ...);
6964 #endif
6965 
6966 #if defined(NEED_mess) || defined(NEED_mess_GLOBAL)
6967 
6968 #define Perl_mess DPPP_(my_mess)
6969 
6970 SV*
DPPP_(my_mess)6971 DPPP_(my_mess)(pTHX_ const char* pat, ...)
6972 {
6973     SV *sv;
6974     va_list args;
6975     va_start(args, pat);
6976     sv = vmess(pat, &args);
6977     va_end(args);
6978     return sv;
6979 }
6980 #ifdef mess_nocontext
6981 #define mess mess_nocontext
6982 #else
6983 #define mess Perl_mess_nocontext
6984 #endif
6985 #endif
6986 #endif
6987 
6988 #if ! defined mess_sv && (PERL_BCDVERSION >= 0x5004000)
6989 #if defined(NEED_mess_sv)
6990 static SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume);
6991 static
6992 #else
6993 extern SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume);
6994 #endif
6995 
6996 #if defined(NEED_mess_sv) || defined(NEED_mess_sv_GLOBAL)
6997 
6998 #ifdef mess_sv
6999 #  undef mess_sv
7000 #endif
7001 #define mess_sv(a,b) DPPP_(my_mess_sv)(aTHX_ a,b)
7002 #define Perl_mess_sv DPPP_(my_mess_sv)
7003 
7004 SV *
DPPP_(my_mess_sv)7005 DPPP_(my_mess_sv)(pTHX_ SV *basemsg, bool consume)
7006 {
7007     SV *tmp;
7008     SV *ret;
7009 
7010     if (SvPOK(basemsg) && SvCUR(basemsg) && *(SvEND(basemsg)-1) == '\n') {
7011         if (consume)
7012             return basemsg;
7013         ret = mess("");
7014         SvSetSV_nosteal(ret, basemsg);
7015         return ret;
7016     }
7017 
7018     if (consume) {
7019         sv_catsv(basemsg, mess(""));
7020         return basemsg;
7021     }
7022 
7023     ret = mess("");
7024     tmp = newSVsv(ret);
7025     SvSetSV_nosteal(ret, basemsg);
7026     sv_catsv(ret, tmp);
7027     sv_dec(tmp);
7028     return ret;
7029 }
7030 #endif
7031 #endif
7032 
7033 #ifndef warn_nocontext
7034 #define warn_nocontext warn
7035 #endif
7036 
7037 #ifndef croak_nocontext
7038 #define croak_nocontext croak
7039 #endif
7040 
7041 #ifndef croak_no_modify
7042 #define croak_no_modify() croak_nocontext("%s", PL_no_modify)
7043 #define Perl_croak_no_modify() croak_no_modify()
7044 #endif
7045 
7046 #ifndef croak_memory_wrap
7047 #if (PERL_BCDVERSION >= 0x5009002) || ( (PERL_BCDVERSION >= 0x5008006) && (PERL_BCDVERSION < 0x5009000) )
7048 #  define croak_memory_wrap() croak_nocontext("%s", PL_memory_wrap)
7049 #else
7050 #  define croak_memory_wrap() croak_nocontext("panic: memory wrap")
7051 #endif
7052 #endif
7053 
7054 #ifndef croak_xs_usage
7055 #if defined(NEED_croak_xs_usage)
7056 static void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params);
7057 static
7058 #else
7059 extern void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params);
7060 #endif
7061 
7062 #if defined(NEED_croak_xs_usage) || defined(NEED_croak_xs_usage_GLOBAL)
7063 
7064 #define croak_xs_usage DPPP_(my_croak_xs_usage)
7065 #define Perl_croak_xs_usage DPPP_(my_croak_xs_usage)
7066 
7067 
7068 
7069 void
DPPP_(my_croak_xs_usage)7070 DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
7071 {
7072     dTHX;
7073     const GV *const gv = CvGV(cv);
7074 
7075 #ifdef PERL_ARGS_ASSERT_CROAK_XS_USAGE
7076     PERL_ARGS_ASSERT_CROAK_XS_USAGE;
7077 #else
7078      assert(cv); assert(params);
7079 #endif
7080 
7081     if (gv) {
7082         const char *const gvname = GvNAME(gv);
7083         const HV *const stash = GvSTASH(gv);
7084         const char *const hvname = stash ? HvNAME(stash) : NULL;
7085 
7086         if (hvname)
7087             croak("Usage: %s::%s(%s)", hvname, gvname, params);
7088         else
7089             croak("Usage: %s(%s)", gvname, params);
7090     } else {
7091         /* Pants. I don't think that it should be possible to get here. */
7092         croak("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);
7093     }
7094 }
7095 #endif
7096 #endif
7097 #ifndef mPUSHs
7098 #  define mPUSHs(s)                      PUSHs(sv_2mortal(s))
7099 #endif
7100 
7101 #ifndef PUSHmortal
7102 #  define PUSHmortal                     PUSHs(sv_newmortal())
7103 #endif
7104 
7105 #ifndef mPUSHp
7106 #  define mPUSHp(p,l)                    sv_setpvn(PUSHmortal, (p), (l))
7107 #endif
7108 
7109 #ifndef mPUSHn
7110 #  define mPUSHn(n)                      sv_setnv(PUSHmortal, (NV)(n))
7111 #endif
7112 
7113 #ifndef mPUSHi
7114 #  define mPUSHi(i)                      sv_setiv(PUSHmortal, (IV)(i))
7115 #endif
7116 
7117 #ifndef mPUSHu
7118 #  define mPUSHu(u)                      sv_setuv(PUSHmortal, (UV)(u))
7119 #endif
7120 #ifndef mXPUSHs
7121 #  define mXPUSHs(s)                     XPUSHs(sv_2mortal(s))
7122 #endif
7123 
7124 #ifndef XPUSHmortal
7125 #  define XPUSHmortal                    XPUSHs(sv_newmortal())
7126 #endif
7127 
7128 #ifndef mXPUSHp
7129 #  define mXPUSHp(p,l)                   STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END
7130 #endif
7131 
7132 #ifndef mXPUSHn
7133 #  define mXPUSHn(n)                     STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END
7134 #endif
7135 
7136 #ifndef mXPUSHi
7137 #  define mXPUSHi(i)                     STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END
7138 #endif
7139 
7140 #ifndef mXPUSHu
7141 #  define mXPUSHu(u)                     STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END
7142 #endif
7143 
7144 /* Replace: 1 */
7145 #ifndef call_sv
7146 #  define call_sv                        perl_call_sv
7147 #endif
7148 
7149 #ifndef call_pv
7150 #  define call_pv                        perl_call_pv
7151 #endif
7152 
7153 #ifndef call_argv
7154 #  define call_argv                      perl_call_argv
7155 #endif
7156 
7157 #ifndef call_method
7158 #  define call_method                    perl_call_method
7159 #endif
7160 #ifndef eval_sv
7161 #  define eval_sv                        perl_eval_sv
7162 #endif
7163 
7164 /* Replace: 0 */
7165 #ifndef PERL_LOADMOD_DENY
7166 #  define PERL_LOADMOD_DENY              0x1
7167 #endif
7168 
7169 #ifndef PERL_LOADMOD_NOIMPORT
7170 #  define PERL_LOADMOD_NOIMPORT          0x2
7171 #endif
7172 
7173 #ifndef PERL_LOADMOD_IMPORT_OPS
7174 #  define PERL_LOADMOD_IMPORT_OPS        0x4
7175 #endif
7176 
7177 #ifndef G_METHOD
7178 # define G_METHOD               64
7179 # ifdef call_sv
7180 #  undef call_sv
7181 # endif
7182 # if (PERL_BCDVERSION < 0x5006000)
7183 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
7184                                 (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
7185 # else
7186 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
7187                                 (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
7188 # endif
7189 #endif
7190 
7191 /* Older Perl versions have broken croak_on_error=1 */
7192 #if (PERL_BCDVERSION < 0x5031002)
7193 # ifdef eval_pv
7194 #  undef eval_pv
7195 #  if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
7196 #   define eval_pv(p, croak_on_error) ({ SV *_sv = Perl_eval_pv(aTHX_ p, 0); SV *_errsv = ERRSV; (croak_on_error && (SvROK(_errsv) || SvTRUE(_errsv)) && (croak_sv(_errsv), 1)); _sv; })
7197 #  else
7198 #   define eval_pv(p, croak_on_error) ((PL_Sv = Perl_eval_pv(aTHX_ p, 0)), (croak_on_error && (SvROK(ERRSV) || SvTRUE(ERRSV)) && (croak_sv(ERRSV), 1)), PL_Sv)
7199 #  endif
7200 # endif
7201 #endif
7202 
7203 /* Replace perl_eval_pv with eval_pv */
7204 
7205 #ifndef eval_pv
7206 #if defined(NEED_eval_pv)
7207 static SV * DPPP_(my_eval_pv)(const char * p, I32 croak_on_error);
7208 static
7209 #else
7210 extern SV * DPPP_(my_eval_pv)(const char * p, I32 croak_on_error);
7211 #endif
7212 
7213 #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
7214 
7215 #ifdef eval_pv
7216 #  undef eval_pv
7217 #endif
7218 #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
7219 #define Perl_eval_pv DPPP_(my_eval_pv)
7220 
7221 
7222 SV*
DPPP_(my_eval_pv)7223 DPPP_(my_eval_pv)(const char *p, I32 croak_on_error)
7224 {
7225     dSP;
7226     SV* errsv;
7227     SV* sv = newSVpv(p, 0);
7228 
7229     PUSHMARK(sp);
7230     eval_sv(sv, G_SCALAR);
7231     SvREFCNT_dec(sv);
7232 
7233     SPAGAIN;
7234     sv = POPs;
7235     PUTBACK;
7236 
7237     if (croak_on_error) {
7238         errsv = ERRSV;
7239         if (SvROK(errsv) || SvTRUE(errsv))
7240             croak_sv(errsv);
7241     }
7242 
7243     return sv;
7244 }
7245 
7246 #endif
7247 #endif
7248 
7249 #if ! defined(vload_module) && defined(start_subparse)
7250 #if defined(NEED_vload_module)
7251 static void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args);
7252 static
7253 #else
7254 extern void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args);
7255 #endif
7256 
7257 #if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL)
7258 
7259 #ifdef vload_module
7260 #  undef vload_module
7261 #endif
7262 #define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d)
7263 #define Perl_vload_module DPPP_(my_vload_module)
7264 
7265 
7266 void
DPPP_(my_vload_module)7267 DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
7268 {
7269     dTHR;
7270     dVAR;
7271     OP *veop, *imop;
7272 
7273     OP * const modname = newSVOP(OP_CONST, 0, name);
7274     /* 5.005 has a somewhat hacky force_normal that doesn't croak on
7275        SvREADONLY() if PL_compling is true. Current perls take care in
7276        ck_require() to correctly turn off SvREADONLY before calling
7277        force_normal_flags(). This seems a better fix than fudging PL_compling
7278      */
7279     SvREADONLY_off(((SVOP*)modname)->op_sv);
7280     modname->op_private |= OPpCONST_BARE;
7281     if (ver) {
7282         veop = newSVOP(OP_CONST, 0, ver);
7283     }
7284     else
7285         veop = NULL;
7286     if (flags & PERL_LOADMOD_NOIMPORT) {
7287         imop = sawparens(newNULLLIST());
7288     }
7289     else if (flags & PERL_LOADMOD_IMPORT_OPS) {
7290         imop = va_arg(*args, OP*);
7291     }
7292     else {
7293         SV *sv;
7294         imop = NULL;
7295         sv = va_arg(*args, SV*);
7296         while (sv) {
7297             imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
7298             sv = va_arg(*args, SV*);
7299         }
7300     }
7301     {
7302         const line_t ocopline = PL_copline;
7303         COP * const ocurcop = PL_curcop;
7304         const int oexpect = PL_expect;
7305 
7306         utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
7307 #if (PERL_BCDVERSION > 0x5003000)
7308                 veop,
7309 #endif
7310                 modname, imop);
7311         PL_expect = oexpect;
7312         PL_copline = ocopline;
7313         PL_curcop = ocurcop;
7314     }
7315 }
7316 
7317 #endif
7318 #endif
7319 
7320 #ifndef load_module
7321 #if defined(NEED_load_module)
7322 static void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...);
7323 static
7324 #else
7325 extern void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...);
7326 #endif
7327 
7328 #if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL)
7329 
7330 #ifdef load_module
7331 #  undef load_module
7332 #endif
7333 #define load_module DPPP_(my_load_module)
7334 #define Perl_load_module DPPP_(my_load_module)
7335 
7336 
7337 void
DPPP_(my_load_module)7338 DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
7339 {
7340     va_list args;
7341     va_start(args, ver);
7342     vload_module(flags, name, ver, &args);
7343     va_end(args);
7344 }
7345 
7346 #endif
7347 #endif
7348 #ifndef newRV_inc
7349 #  define newRV_inc(sv)                  newRV(sv)   /* Replace */
7350 #endif
7351 
7352 #ifndef newRV_noinc
7353 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
7354 #  define newRV_noinc(sv) ({ SV *_sv = (SV *)newRV((sv)); SvREFCNT_dec((sv)); _sv; })
7355 #else
7356 #  define newRV_noinc(sv) ((PL_Sv = (SV *)newRV((sv))), SvREFCNT_dec((sv)), PL_Sv)
7357 #endif
7358 #endif
7359 
7360 /*
7361  * Boilerplate macros for initializing and accessing interpreter-local
7362  * data from C.  All statics in extensions should be reworked to use
7363  * this, if you want to make the extension thread-safe.  See ext/re/re.xs
7364  * for an example of the use of these macros.
7365  *
7366  * Code that uses these macros is responsible for the following:
7367  * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
7368  * 2. Declare a typedef named my_cxt_t that is a structure that contains
7369  *    all the data that needs to be interpreter-local.
7370  * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
7371  * 4. Use the MY_CXT_INIT macro such that it is called exactly once
7372  *    (typically put in the BOOT: section).
7373  * 5. Use the members of the my_cxt_t structure everywhere as
7374  *    MY_CXT.member.
7375  * 6. Use the dMY_CXT macro (a declaration) in all the functions that
7376  *    access MY_CXT.
7377  */
7378 
7379 #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
7380     defined(PERL_CAPI)    || defined(PERL_IMPLICIT_CONTEXT)
7381 
7382 #ifndef START_MY_CXT
7383 
7384 /* This must appear in all extensions that define a my_cxt_t structure,
7385  * right after the definition (i.e. at file scope).  The non-threads
7386  * case below uses it to declare the data as static. */
7387 #define START_MY_CXT
7388 
7389 #if (PERL_BCDVERSION < 0x5004068)
7390 /* Fetches the SV that keeps the per-interpreter data. */
7391 #define dMY_CXT_SV \
7392         SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
7393 #else /* >= perl5.004_68 */
7394 #define dMY_CXT_SV \
7395         SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,             \
7396                                   sizeof(MY_CXT_KEY)-1, TRUE)
7397 #endif /* < perl5.004_68 */
7398 
7399 /* This declaration should be used within all functions that use the
7400  * interpreter-local data. */
7401 #define dMY_CXT \
7402         dMY_CXT_SV;                                                     \
7403         my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
7404 
7405 /* Creates and zeroes the per-interpreter data.
7406  * (We allocate my_cxtp in a Perl SV so that it will be released when
7407  * the interpreter goes away.) */
7408 #define MY_CXT_INIT \
7409         dMY_CXT_SV;                                                     \
7410         /* newSV() allocates one more than needed */                    \
7411         my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
7412         Zero(my_cxtp, 1, my_cxt_t);                                     \
7413         sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
7414 
7415 /* This macro must be used to access members of the my_cxt_t structure.
7416  * e.g. MYCXT.some_data */
7417 #define MY_CXT          (*my_cxtp)
7418 
7419 /* Judicious use of these macros can reduce the number of times dMY_CXT
7420  * is used.  Use is similar to pTHX, aTHX etc. */
7421 #define pMY_CXT         my_cxt_t *my_cxtp
7422 #define pMY_CXT_        pMY_CXT,
7423 #define _pMY_CXT        ,pMY_CXT
7424 #define aMY_CXT         my_cxtp
7425 #define aMY_CXT_        aMY_CXT,
7426 #define _aMY_CXT        ,aMY_CXT
7427 
7428 #endif /* START_MY_CXT */
7429 
7430 #ifndef MY_CXT_CLONE
7431 /* Clones the per-interpreter data. */
7432 #define MY_CXT_CLONE \
7433         dMY_CXT_SV;                                                     \
7434         my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
7435         Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
7436         sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
7437 #endif
7438 
7439 #else /* single interpreter */
7440 
7441 #ifndef START_MY_CXT
7442 
7443 #define START_MY_CXT    static my_cxt_t my_cxt;
7444 #define dMY_CXT_SV      dNOOP
7445 #define dMY_CXT         dNOOP
7446 #define MY_CXT_INIT     NOOP
7447 #define MY_CXT          my_cxt
7448 
7449 #define pMY_CXT         void
7450 #define pMY_CXT_
7451 #define _pMY_CXT
7452 #define aMY_CXT
7453 #define aMY_CXT_
7454 #define _aMY_CXT
7455 
7456 #endif /* START_MY_CXT */
7457 
7458 #ifndef MY_CXT_CLONE
7459 #define MY_CXT_CLONE    NOOP
7460 #endif
7461 
7462 #endif
7463 
7464 #ifndef SvREFCNT_inc
7465 #  ifdef PERL_USE_GCC_BRACE_GROUPS
7466 #    define SvREFCNT_inc(sv)            \
7467       ({                                \
7468           SV * const _sv = (SV*)(sv);   \
7469           if (_sv)                      \
7470                (SvREFCNT(_sv))++;       \
7471           _sv;                          \
7472       })
7473 #  else
7474 #    define SvREFCNT_inc(sv)    \
7475           ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
7476 #  endif
7477 #endif
7478 
7479 #ifndef SvREFCNT_inc_simple
7480 #  ifdef PERL_USE_GCC_BRACE_GROUPS
7481 #    define SvREFCNT_inc_simple(sv)     \
7482       ({                                        \
7483           if (sv)                               \
7484                (SvREFCNT(sv))++;                \
7485           (SV *)(sv);                           \
7486       })
7487 #  else
7488 #    define SvREFCNT_inc_simple(sv) \
7489           ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)
7490 #  endif
7491 #endif
7492 
7493 #ifndef SvREFCNT_inc_NN
7494 #  ifdef PERL_USE_GCC_BRACE_GROUPS
7495 #    define SvREFCNT_inc_NN(sv)         \
7496       ({                                        \
7497           SV * const _sv = (SV*)(sv);   \
7498           SvREFCNT(_sv)++;              \
7499           _sv;                          \
7500       })
7501 #  else
7502 #    define SvREFCNT_inc_NN(sv) \
7503           (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)
7504 #  endif
7505 #endif
7506 
7507 #ifndef SvREFCNT_inc_void
7508 #  ifdef PERL_USE_GCC_BRACE_GROUPS
7509 #    define SvREFCNT_inc_void(sv)               \
7510       ({                                        \
7511           SV * const _sv = (SV*)(sv);   \
7512           if (_sv)                      \
7513               (void)(SvREFCNT(_sv)++);  \
7514       })
7515 #  else
7516 #    define SvREFCNT_inc_void(sv) \
7517           (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)
7518 #  endif
7519 #endif
7520 #ifndef SvREFCNT_inc_simple_void
7521 #  define SvREFCNT_inc_simple_void(sv)   STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
7522 #endif
7523 
7524 #ifndef SvREFCNT_inc_simple_NN
7525 #  define SvREFCNT_inc_simple_NN(sv)     (++SvREFCNT(sv), (SV*)(sv))
7526 #endif
7527 
7528 #ifndef SvREFCNT_inc_void_NN
7529 #  define SvREFCNT_inc_void_NN(sv)       (void)(++SvREFCNT((SV*)(sv)))
7530 #endif
7531 
7532 #ifndef SvREFCNT_inc_simple_void_NN
7533 #  define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
7534 #endif
7535 
7536 #ifndef newSV_type
7537 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
7538 #  define newSV_type(t) ({ SV *_sv = newSV(0); sv_upgrade(_sv, (t)); _sv; })
7539 #else
7540 #  define newSV_type(t) ((PL_Sv = newSV(0)), sv_upgrade(PL_Sv, (t)), PL_Sv)
7541 #endif
7542 #endif
7543 
7544 #if (PERL_BCDVERSION < 0x5006000)
7545 # define D_PPP_CONSTPV_ARG(x)  ((char *) (x))
7546 #else
7547 # define D_PPP_CONSTPV_ARG(x)  (x)
7548 #endif
7549 #ifndef newSVpvn
7550 #  define newSVpvn(data,len)             ((data)                                              \
7551                                     ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
7552                                     : newSV(0))
7553 #endif
7554 #ifndef newSVpvn_utf8
7555 #  define newSVpvn_utf8(s, len, u)       newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
7556 #endif
7557 #ifndef SVf_UTF8
7558 #  define SVf_UTF8                       0
7559 #endif
7560 
7561 #ifndef newSVpvn_flags
7562 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
7563 # define newSVpvn_flags(s, len, flags) ({ SV *_sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len)); SvFLAGS(_sv) |= ((flags) & SVf_UTF8); ((flags) & SVs_TEMP) ? sv_2mortal(_sv) : _sv; })
7564 #else
7565 # define newSVpvn_flags(s, len, flags) ((PL_Sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len))), SvFLAGS(PL_Sv) |= ((flags) & SVf_UTF8), (((flags) & SVs_TEMP) ? sv_2mortal(PL_Sv) : PL_Sv))
7566 #endif
7567 #endif
7568 
7569 #if ( (PERL_BCDVERSION >= 0x5007003) && (PERL_BCDVERSION < 0x5008007) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009002) )
7570 #undef sv_setsv_flags
7571 #define SV_NOSTEAL 16
7572 #define sv_setsv_flags(dstr, sstr, flags)                                \
7573   STMT_START {                                                           \
7574     if (((flags) & SV_NOSTEAL) && (SvFLAGS((sstr)) & SVs_TEMP)) {        \
7575       SvTEMP_off((sstr));                                                \
7576       Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL);  \
7577       SvTEMP_on((sstr));                                                 \
7578     } else {                                                             \
7579       Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL);  \
7580     }                                                                    \
7581   } STMT_END
7582 #endif
7583 
7584 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
7585 #ifndef newSVsv_flags
7586 #  define newSVsv_flags(sv, flags)       ({ SV *_sv = newSV(0); sv_setsv_flags(_sv, (sv), (flags)); _sv; })
7587 #endif
7588 
7589 #else
7590 #ifndef newSVsv_flags
7591 #  define newSVsv_flags(sv, flags)       ((PL_Sv = newSV(0)), sv_setsv_flags(PL_Sv, (sv), (flags)), PL_Sv)
7592 #endif
7593 
7594 #endif
7595 
7596 #ifdef SV_NOSTEAL
7597 #ifndef newSVsv_nomg
7598 #  define newSVsv_nomg(sv)               newSVsv_flags((sv), SV_NOSTEAL)
7599 #endif
7600 
7601 #endif
7602 
7603 #if (PERL_BCDVERSION >= 0x5017005)
7604 #ifndef sv_mortalcopy_flags
7605 #  define sv_mortalcopy_flags(sv, flags) Perl_sv_mortalcopy_flags(aTHX_ (sv), (flags))
7606 #endif
7607 
7608 #else
7609 #ifndef sv_mortalcopy_flags
7610 #  define sv_mortalcopy_flags(sv, flags) sv_2mortal(newSVsv_flags((sv), (flags)))
7611 #endif
7612 
7613 #endif
7614 #ifndef SvMAGIC_set
7615 #  define SvMAGIC_set(sv, val)           \
7616                 STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
7617                 (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END
7618 #endif
7619 
7620 #if (PERL_BCDVERSION < 0x5009003)
7621 #ifndef SvPVX_const
7622 #  define SvPVX_const(sv)                ((const char*) (0 + SvPVX(sv)))
7623 #endif
7624 
7625 #ifndef SvPVX_mutable
7626 #  define SvPVX_mutable(sv)              (0 + SvPVX(sv))
7627 #endif
7628 #ifndef SvRV_set
7629 #  define SvRV_set(sv, val)              \
7630                 STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
7631                 (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END
7632 #endif
7633 
7634 #else
7635 #ifndef SvPVX_const
7636 #  define SvPVX_const(sv)                ((const char*)((sv)->sv_u.svu_pv))
7637 #endif
7638 
7639 #ifndef SvPVX_mutable
7640 #  define SvPVX_mutable(sv)              ((sv)->sv_u.svu_pv)
7641 #endif
7642 #ifndef SvRV_set
7643 #  define SvRV_set(sv, val)              \
7644                 STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
7645                 ((sv)->sv_u.svu_rv = (val)); } STMT_END
7646 #endif
7647 
7648 #endif
7649 #ifndef SvSTASH_set
7650 #  define SvSTASH_set(sv, val)           \
7651                 STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
7652                 (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
7653 #endif
7654 
7655 #if (PERL_BCDVERSION < 0x5004000)
7656 #ifndef SvUV_set
7657 #  define SvUV_set(sv, val)              \
7658                 STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
7659                 (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END
7660 #endif
7661 
7662 #else
7663 #ifndef SvUV_set
7664 #  define SvUV_set(sv, val)              \
7665                 STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
7666                 (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END
7667 #endif
7668 
7669 #endif
7670 
7671 /* Hint: newSVpvn_share
7672  * The SVs created by this function only mimic the behaviour of
7673  * shared PVs without really being shared. Only use if you know
7674  * what you're doing.
7675  */
7676 
7677 #ifndef newSVpvn_share
7678 
7679 #if defined(NEED_newSVpvn_share)
7680 static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char * s, I32 len, U32 hash);
7681 static
7682 #else
7683 extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char * s, I32 len, U32 hash);
7684 #endif
7685 
7686 #if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL)
7687 
7688 #ifdef newSVpvn_share
7689 #  undef newSVpvn_share
7690 #endif
7691 #define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c)
7692 #define Perl_newSVpvn_share DPPP_(my_newSVpvn_share)
7693 
7694 
7695 SV *
DPPP_(my_newSVpvn_share)7696 DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)
7697 {
7698   SV *sv;
7699   if (len < 0)
7700     len = -len;
7701   if (!hash)
7702     PERL_HASH(hash, (char*) s, len);
7703   sv = newSVpvn((char *) s, len);
7704   sv_upgrade(sv, SVt_PVIV);
7705   SvIVX(sv) = hash;
7706   SvREADONLY_on(sv);
7707   SvPOK_on(sv);
7708   return sv;
7709 }
7710 
7711 #endif
7712 
7713 #endif
7714 #ifndef SvSHARED_HASH
7715 #  define SvSHARED_HASH(sv)              (0 + SvUVX(sv))
7716 #endif
7717 #ifndef HvNAME_get
7718 #  define HvNAME_get(hv)                 HvNAME(hv)
7719 #endif
7720 #ifndef HvNAMELEN_get
7721 #  define HvNAMELEN_get(hv)              (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0)
7722 #endif
7723 
7724 #if (PERL_BCDVERSION >= 0x5009002) && (PERL_BCDVERSION <= 0x5009003) /* 5.9.2 and 5.9.3 ignore the length param */
7725 #undef gv_fetchpvn_flags
7726 #endif
7727 #ifndef GV_NOADD_MASK
7728 #  define GV_NOADD_MASK                  0xE0
7729 #endif
7730 
7731 #ifndef gv_fetchpvn_flags
7732 #  define gv_fetchpvn_flags(name, len, flags, sv_type) gv_fetchpv(SvPVX(sv_2mortal(newSVpvn((name), (len)))), ((flags) & GV_NOADD_MASK) ? FALSE : TRUE, (I32)(sv_type))
7733 #endif
7734 #ifndef GvSVn
7735 #  define GvSVn(gv)                      GvSV(gv)
7736 #endif
7737 
7738 #ifndef isGV_with_GP
7739 #  define isGV_with_GP(gv)               isGV(gv)
7740 #endif
7741 
7742 #ifndef gv_fetchsv
7743 #  define gv_fetchsv(name, flags, svt)   gv_fetchpv(SvPV_nolen_const(name), flags, svt)
7744 #endif
7745 #ifndef get_cvn_flags
7746 #  define get_cvn_flags(name, namelen, flags) get_cv(name, flags)
7747 #endif
7748 
7749 #ifndef gv_init_pvn
7750 #  define gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE)
7751 #endif
7752 
7753 /* concatenating with "" ensures that only literal strings are accepted as argument
7754  * note that STR_WITH_LEN() can't be used as argument to macros or functions that
7755  * under some configurations might be macros
7756  */
7757 #ifndef STR_WITH_LEN
7758 #  define STR_WITH_LEN(s)                (s ""), (sizeof(s)-1)
7759 #endif
7760 #ifndef newSVpvs
7761 #  define newSVpvs(str)                  newSVpvn(str "", sizeof(str) - 1)
7762 #endif
7763 
7764 #ifndef newSVpvs_flags
7765 #  define newSVpvs_flags(str, flags)     newSVpvn_flags(str "", sizeof(str) - 1, flags)
7766 #endif
7767 
7768 #ifndef newSVpvs_share
7769 #  define newSVpvs_share(str)            newSVpvn_share(str "", sizeof(str) - 1, 0)
7770 #endif
7771 
7772 #ifndef sv_catpvs
7773 #  define sv_catpvs(sv, str)             sv_catpvn(sv, str "", sizeof(str) - 1)
7774 #endif
7775 
7776 #ifndef sv_setpvs
7777 #  define sv_setpvs(sv, str)             sv_setpvn(sv, str "", sizeof(str) - 1)
7778 #endif
7779 
7780 #ifndef hv_fetchs
7781 #  define hv_fetchs(hv, key, lval)       hv_fetch(hv, key "", sizeof(key) - 1, lval)
7782 #endif
7783 
7784 #ifndef hv_stores
7785 #  define hv_stores(hv, key, val)        hv_store(hv, key "", sizeof(key) - 1, val, 0)
7786 #endif
7787 #ifndef gv_fetchpvs
7788 #  define gv_fetchpvs(name, flags, svt)  gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt)
7789 #endif
7790 
7791 #ifndef gv_stashpvs
7792 #  define gv_stashpvs(name, flags)       gv_stashpvn(name "", sizeof(name) - 1, flags)
7793 #endif
7794 #ifndef get_cvs
7795 #  define get_cvs(name, flags)           get_cvn_flags(name "", sizeof(name)-1, flags)
7796 #endif
7797 #ifndef SvGETMAGIC
7798 #  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
7799 #endif
7800 
7801 /* That's the best we can do... */
7802 #ifndef sv_catpvn_nomg
7803 #  define sv_catpvn_nomg                 sv_catpvn
7804 #endif
7805 
7806 #ifndef sv_catsv_nomg
7807 #  define sv_catsv_nomg                  sv_catsv
7808 #endif
7809 
7810 #ifndef sv_setsv_nomg
7811 #  define sv_setsv_nomg                  sv_setsv
7812 #endif
7813 
7814 #ifndef sv_pvn_nomg
7815 #  define sv_pvn_nomg                    sv_pvn
7816 #endif
7817 
7818 #ifdef SV_NOSTEAL
7819 #ifndef SvIV_nomg
7820 #  define SvIV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvIV((sv)) : SvIVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
7821 #endif
7822 
7823 #ifndef SvUV_nomg
7824 #  define SvUV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvUV((sv)) : SvUVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
7825 #endif
7826 
7827 #ifndef SvNV_nomg
7828 #  define SvNV_nomg(sv)                  (!SvGMAGICAL((sv)) ? SvNV((sv)) : SvNVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
7829 #endif
7830 
7831 #ifndef SvTRUE_nomg
7832 #  define SvTRUE_nomg(sv)                (!SvGMAGICAL((sv)) ? SvTRUE((sv)) : SvTRUEx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
7833 #endif
7834 
7835 #endif
7836 
7837 #ifndef sv_catpv_mg
7838 #  define sv_catpv_mg(sv, ptr)          \
7839    STMT_START {                         \
7840      SV *TeMpSv = sv;                   \
7841      sv_catpv(TeMpSv,ptr);              \
7842      SvSETMAGIC(TeMpSv);                \
7843    } STMT_END
7844 #endif
7845 
7846 #ifndef sv_catpvn_mg
7847 #  define sv_catpvn_mg(sv, ptr, len)    \
7848    STMT_START {                         \
7849      SV *TeMpSv = sv;                   \
7850      sv_catpvn(TeMpSv,ptr,len);         \
7851      SvSETMAGIC(TeMpSv);                \
7852    } STMT_END
7853 #endif
7854 
7855 #ifndef sv_catsv_mg
7856 #  define sv_catsv_mg(dsv, ssv)         \
7857    STMT_START {                         \
7858      SV *TeMpSv = dsv;                  \
7859      sv_catsv(TeMpSv,ssv);              \
7860      SvSETMAGIC(TeMpSv);                \
7861    } STMT_END
7862 #endif
7863 
7864 #ifndef sv_setiv_mg
7865 #  define sv_setiv_mg(sv, i)            \
7866    STMT_START {                         \
7867      SV *TeMpSv = sv;                   \
7868      sv_setiv(TeMpSv,i);                \
7869      SvSETMAGIC(TeMpSv);                \
7870    } STMT_END
7871 #endif
7872 
7873 #ifndef sv_setnv_mg
7874 #  define sv_setnv_mg(sv, num)          \
7875    STMT_START {                         \
7876      SV *TeMpSv = sv;                   \
7877      sv_setnv(TeMpSv,num);              \
7878      SvSETMAGIC(TeMpSv);                \
7879    } STMT_END
7880 #endif
7881 
7882 #ifndef sv_setpv_mg
7883 #  define sv_setpv_mg(sv, ptr)          \
7884    STMT_START {                         \
7885      SV *TeMpSv = sv;                   \
7886      sv_setpv(TeMpSv,ptr);              \
7887      SvSETMAGIC(TeMpSv);                \
7888    } STMT_END
7889 #endif
7890 
7891 #ifndef sv_setpvn_mg
7892 #  define sv_setpvn_mg(sv, ptr, len)    \
7893    STMT_START {                         \
7894      SV *TeMpSv = sv;                   \
7895      sv_setpvn(TeMpSv,ptr,len);         \
7896      SvSETMAGIC(TeMpSv);                \
7897    } STMT_END
7898 #endif
7899 
7900 #ifndef sv_setsv_mg
7901 #  define sv_setsv_mg(dsv, ssv)         \
7902    STMT_START {                         \
7903      SV *TeMpSv = dsv;                  \
7904      sv_setsv(TeMpSv,ssv);              \
7905      SvSETMAGIC(TeMpSv);                \
7906    } STMT_END
7907 #endif
7908 
7909 #ifndef sv_setuv_mg
7910 #  define sv_setuv_mg(sv, i)            \
7911    STMT_START {                         \
7912      SV *TeMpSv = sv;                   \
7913      sv_setuv(TeMpSv,i);                \
7914      SvSETMAGIC(TeMpSv);                \
7915    } STMT_END
7916 #endif
7917 
7918 #ifndef sv_usepvn_mg
7919 #  define sv_usepvn_mg(sv, ptr, len)    \
7920    STMT_START {                         \
7921      SV *TeMpSv = sv;                   \
7922      sv_usepvn(TeMpSv,ptr,len);         \
7923      SvSETMAGIC(TeMpSv);                \
7924    } STMT_END
7925 #endif
7926 #ifndef SvVSTRING_mg
7927 #  define SvVSTRING_mg(sv)               (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
7928 #endif
7929 
7930 /* Hint: sv_magic_portable
7931  * This is a compatibility function that is only available with
7932  * Devel::PPPort. It is NOT in the perl core.
7933  * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when
7934  * it is being passed a name pointer with namlen == 0. In that
7935  * case, perl 5.8.0 and later store the pointer, not a copy of it.
7936  * The compatibility can be provided back to perl 5.004. With
7937  * earlier versions, the code will not compile.
7938  */
7939 
7940 #if (PERL_BCDVERSION < 0x5004000)
7941 
7942   /* code that uses sv_magic_portable will not compile */
7943 
7944 #elif (PERL_BCDVERSION < 0x5008000)
7945 
7946 #  define sv_magic_portable(sv, obj, how, name, namlen)     \
7947    STMT_START {                                             \
7948      SV *SvMp_sv = (sv);                                    \
7949      char *SvMp_name = (char *) (name);                     \
7950      I32 SvMp_namlen = (namlen);                            \
7951      if (SvMp_name && SvMp_namlen == 0)                     \
7952      {                                                      \
7953        MAGIC *mg;                                           \
7954        sv_magic(SvMp_sv, obj, how, 0, 0);                   \
7955        mg = SvMAGIC(SvMp_sv);                               \
7956        mg->mg_len = -42; /* XXX: this is the tricky part */ \
7957        mg->mg_ptr = SvMp_name;                              \
7958      }                                                      \
7959      else                                                   \
7960      {                                                      \
7961        sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \
7962      }                                                      \
7963    } STMT_END
7964 
7965 #else
7966 
7967 #  define sv_magic_portable(a, b, c, d, e)  sv_magic(a, b, c, d, e)
7968 
7969 #endif
7970 
7971 #if !defined(mg_findext)
7972 #if defined(NEED_mg_findext)
7973 static MAGIC * DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL * vtbl);
7974 static
7975 #else
7976 extern MAGIC * DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL * vtbl);
7977 #endif
7978 
7979 #if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL)
7980 
7981 #define mg_findext DPPP_(my_mg_findext)
7982 #define Perl_mg_findext DPPP_(my_mg_findext)
7983 
7984 
7985 MAGIC *
DPPP_(my_mg_findext)7986 DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL *vtbl) {
7987     if (sv) {
7988         MAGIC *mg;
7989 
7990 #ifdef AvPAD_NAMELIST
7991         assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv)));
7992 #endif
7993 
7994         for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) {
7995             if (mg->mg_type == type && mg->mg_virtual == vtbl)
7996                 return mg;
7997         }
7998     }
7999 
8000     return NULL;
8001 }
8002 
8003 #endif
8004 #endif
8005 
8006 #if !defined(sv_unmagicext)
8007 #if defined(NEED_sv_unmagicext)
8008 static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
8009 static
8010 #else
8011 extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
8012 #endif
8013 
8014 #if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL)
8015 
8016 #ifdef sv_unmagicext
8017 #  undef sv_unmagicext
8018 #endif
8019 #define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c)
8020 #define Perl_sv_unmagicext DPPP_(my_sv_unmagicext)
8021 
8022 
8023 int
DPPP_(my_sv_unmagicext)8024 DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl)
8025 {
8026     MAGIC* mg;
8027     MAGIC** mgp;
8028 
8029     if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv))
8030 	return 0;
8031     mgp = &(SvMAGIC(sv));
8032     for (mg = *mgp; mg; mg = *mgp) {
8033 	const MGVTBL* const virt = mg->mg_virtual;
8034 	if (mg->mg_type == type && virt == vtbl) {
8035 	    *mgp = mg->mg_moremagic;
8036 	    if (virt && virt->svt_free)
8037 		virt->svt_free(aTHX_ sv, mg);
8038 	    if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) {
8039 		if (mg->mg_len > 0)
8040 		    Safefree(mg->mg_ptr);
8041 		else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */
8042 		    SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr));
8043 		else if (mg->mg_type == PERL_MAGIC_utf8)
8044 		    Safefree(mg->mg_ptr);
8045             }
8046 	    if (mg->mg_flags & MGf_REFCOUNTED)
8047 		SvREFCNT_dec(mg->mg_obj);
8048 	    Safefree(mg);
8049 	}
8050 	else
8051 	    mgp = &mg->mg_moremagic;
8052     }
8053     if (SvMAGIC(sv)) {
8054 	if (SvMAGICAL(sv))	/* if we're under save_magic, wait for restore_magic; */
8055 	    mg_magical(sv);	/*    else fix the flags now */
8056     }
8057     else {
8058 	SvMAGICAL_off(sv);
8059 	SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
8060     }
8061     return 0;
8062 }
8063 
8064 #endif
8065 #endif
8066 
8067 #ifdef USE_ITHREADS
8068 #ifndef CopFILE
8069 #  define CopFILE(c)                     ((c)->cop_file)
8070 #endif
8071 
8072 #ifndef CopFILEGV
8073 #  define CopFILEGV(c)                   (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv)
8074 #endif
8075 
8076 #ifndef CopFILE_set
8077 #  define CopFILE_set(c,pv)              ((c)->cop_file = savepv(pv))
8078 #endif
8079 
8080 #ifndef CopFILESV
8081 #  define CopFILESV(c)                   (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv)
8082 #endif
8083 
8084 #ifndef CopFILEAV
8085 #  define CopFILEAV(c)                   (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav)
8086 #endif
8087 
8088 #ifndef CopSTASHPV
8089 #  define CopSTASHPV(c)                  ((c)->cop_stashpv)
8090 #endif
8091 
8092 #ifndef CopSTASHPV_set
8093 #  define CopSTASHPV_set(c,pv)           ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch))
8094 #endif
8095 
8096 #ifndef CopSTASH
8097 #  define CopSTASH(c)                    (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
8098 #endif
8099 
8100 #ifndef CopSTASH_set
8101 #  define CopSTASH_set(c,hv)             CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch)
8102 #endif
8103 
8104 #ifndef CopSTASH_eq
8105 #  define CopSTASH_eq(c,hv)              ((hv) && (CopSTASHPV(c) == HvNAME(hv) \
8106                                         || (CopSTASHPV(c) && HvNAME(hv) \
8107                                         && strEQ(CopSTASHPV(c), HvNAME(hv)))))
8108 #endif
8109 
8110 #else
8111 #ifndef CopFILEGV
8112 #  define CopFILEGV(c)                   ((c)->cop_filegv)
8113 #endif
8114 
8115 #ifndef CopFILEGV_set
8116 #  define CopFILEGV_set(c,gv)            ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv))
8117 #endif
8118 
8119 #ifndef CopFILE_set
8120 #  define CopFILE_set(c,pv)              CopFILEGV_set((c), gv_fetchfile(pv))
8121 #endif
8122 
8123 #ifndef CopFILESV
8124 #  define CopFILESV(c)                   (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv)
8125 #endif
8126 
8127 #ifndef CopFILEAV
8128 #  define CopFILEAV(c)                   (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav)
8129 #endif
8130 
8131 #ifndef CopFILE
8132 #  define CopFILE(c)                     (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
8133 #endif
8134 
8135 #ifndef CopSTASH
8136 #  define CopSTASH(c)                    ((c)->cop_stash)
8137 #endif
8138 
8139 #ifndef CopSTASH_set
8140 #  define CopSTASH_set(c,hv)             ((c)->cop_stash = (hv))
8141 #endif
8142 
8143 #ifndef CopSTASHPV
8144 #  define CopSTASHPV(c)                  (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
8145 #endif
8146 
8147 #ifndef CopSTASHPV_set
8148 #  define CopSTASHPV_set(c,pv)           CopSTASH_set((c), gv_stashpv(pv,GV_ADD))
8149 #endif
8150 
8151 #ifndef CopSTASH_eq
8152 #  define CopSTASH_eq(c,hv)              (CopSTASH(c) == (hv))
8153 #endif
8154 
8155 #endif /* USE_ITHREADS */
8156 
8157 #if (PERL_BCDVERSION >= 0x5006000)
8158 #ifndef caller_cx
8159 
8160 # if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL)
8161 static I32
DPPP_dopoptosub_at(const PERL_CONTEXT * cxstk,I32 startingblock)8162 DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock)
8163 {
8164     I32 i;
8165 
8166     for (i = startingblock; i >= 0; i--) {
8167 	register const PERL_CONTEXT * const cx = &cxstk[i];
8168 	switch (CxTYPE(cx)) {
8169 	default:
8170 	    continue;
8171 	case CXt_EVAL:
8172 	case CXt_SUB:
8173 	case CXt_FORMAT:
8174 	    return i;
8175 	}
8176     }
8177     return i;
8178 }
8179 # endif
8180 
8181 # if defined(NEED_caller_cx)
8182 static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT *  * dbcxp);
8183 static
8184 #else
8185 extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT *  * dbcxp);
8186 #endif
8187 
8188 #if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL)
8189 
8190 #ifdef caller_cx
8191 #  undef caller_cx
8192 #endif
8193 #define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b)
8194 #define Perl_caller_cx DPPP_(my_caller_cx)
8195 
8196 
8197 const PERL_CONTEXT *
DPPP_(my_caller_cx)8198 DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT **dbcxp)
8199 {
8200     register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix);
8201     register const PERL_CONTEXT *cx;
8202     register const PERL_CONTEXT *ccstack = cxstack;
8203     const PERL_SI *top_si = PL_curstackinfo;
8204 
8205     for (;;) {
8206 	/* we may be in a higher stacklevel, so dig down deeper */
8207 	while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
8208 	    top_si = top_si->si_prev;
8209 	    ccstack = top_si->si_cxstack;
8210 	    cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix);
8211 	}
8212 	if (cxix < 0)
8213 	    return NULL;
8214 	/* caller() should not report the automatic calls to &DB::sub */
8215 	if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 &&
8216 		ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub))
8217 	    level++;
8218 	if (!level--)
8219 	    break;
8220 	cxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
8221     }
8222 
8223     cx = &ccstack[cxix];
8224     if (dbcxp) *dbcxp = cx;
8225 
8226     if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
8227         const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1);
8228 	/* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the
8229 	   field below is defined for any cx. */
8230 	/* caller() should not report the automatic calls to &DB::sub */
8231 	if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub))
8232 	    cx = &ccstack[dbcxix];
8233     }
8234 
8235     return cx;
8236 }
8237 
8238 # endif
8239 #endif /* caller_cx */
8240 #endif /* 5.6.0 */
8241 #ifndef IN_PERL_COMPILETIME
8242 #  define IN_PERL_COMPILETIME            (PL_curcop == &PL_compiling)
8243 #endif
8244 
8245 #ifndef IN_LOCALE_RUNTIME
8246 #  define IN_LOCALE_RUNTIME              (PL_curcop->op_private & HINT_LOCALE)
8247 #endif
8248 
8249 #ifndef IN_LOCALE_COMPILETIME
8250 #  define IN_LOCALE_COMPILETIME          (PL_hints & HINT_LOCALE)
8251 #endif
8252 
8253 #ifndef IN_LOCALE
8254 #  define IN_LOCALE                      (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
8255 #endif
8256 #ifndef IS_NUMBER_IN_UV
8257 #  define IS_NUMBER_IN_UV                0x01
8258 #endif
8259 
8260 #ifndef IS_NUMBER_GREATER_THAN_UV_MAX
8261 #  define IS_NUMBER_GREATER_THAN_UV_MAX  0x02
8262 #endif
8263 
8264 #ifndef IS_NUMBER_NOT_INT
8265 #  define IS_NUMBER_NOT_INT              0x04
8266 #endif
8267 
8268 #ifndef IS_NUMBER_NEG
8269 #  define IS_NUMBER_NEG                  0x08
8270 #endif
8271 
8272 #ifndef IS_NUMBER_INFINITY
8273 #  define IS_NUMBER_INFINITY             0x10
8274 #endif
8275 
8276 #ifndef IS_NUMBER_NAN
8277 #  define IS_NUMBER_NAN                  0x20
8278 #endif
8279 #ifndef GROK_NUMERIC_RADIX
8280 #  define GROK_NUMERIC_RADIX(sp, send)   grok_numeric_radix(sp, send)
8281 #endif
8282 #ifndef PERL_SCAN_GREATER_THAN_UV_MAX
8283 #  define PERL_SCAN_GREATER_THAN_UV_MAX  0x02
8284 #endif
8285 
8286 #ifndef PERL_SCAN_SILENT_ILLDIGIT
8287 #  define PERL_SCAN_SILENT_ILLDIGIT      0x04
8288 #endif
8289 
8290 #ifndef PERL_SCAN_ALLOW_UNDERSCORES
8291 #  define PERL_SCAN_ALLOW_UNDERSCORES    0x01
8292 #endif
8293 
8294 #ifndef PERL_SCAN_DISALLOW_PREFIX
8295 #  define PERL_SCAN_DISALLOW_PREFIX      0x02
8296 #endif
8297 
8298 #ifndef grok_numeric_radix
8299 #if defined(NEED_grok_numeric_radix)
8300 static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char *  * sp, const char * send);
8301 static
8302 #else
8303 extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char *  * sp, const char * send);
8304 #endif
8305 
8306 #if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL)
8307 
8308 #ifdef grok_numeric_radix
8309 #  undef grok_numeric_radix
8310 #endif
8311 #define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b)
8312 #define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix)
8313 
8314 bool
DPPP_(my_grok_numeric_radix)8315 DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send)
8316 {
8317 #ifdef USE_LOCALE_NUMERIC
8318 #ifdef PL_numeric_radix_sv
8319     if (PL_numeric_radix_sv && IN_LOCALE) {
8320         STRLEN len;
8321         char* radix = SvPV(PL_numeric_radix_sv, len);
8322         if (*sp + len <= send && memEQ(*sp, radix, len)) {
8323             *sp += len;
8324             return TRUE;
8325         }
8326     }
8327 #else
8328     /* older perls don't have PL_numeric_radix_sv so the radix
8329      * must manually be requested from locale.h
8330      */
8331 #include <locale.h>
8332     dTHR;  /* needed for older threaded perls */
8333     struct lconv *lc = localeconv();
8334     char *radix = lc->decimal_point;
8335     if (radix && IN_LOCALE) {
8336         STRLEN len = strlen(radix);
8337         if (*sp + len <= send && memEQ(*sp, radix, len)) {
8338             *sp += len;
8339             return TRUE;
8340         }
8341     }
8342 #endif
8343 #endif /* USE_LOCALE_NUMERIC */
8344     /* always try "." if numeric radix didn't match because
8345      * we may have data from different locales mixed */
8346     if (*sp < send && **sp == '.') {
8347         ++*sp;
8348         return TRUE;
8349     }
8350     return FALSE;
8351 }
8352 #endif
8353 #endif
8354 
8355 #ifndef grok_number
8356 #if defined(NEED_grok_number)
8357 static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
8358 static
8359 #else
8360 extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
8361 #endif
8362 
8363 #if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL)
8364 
8365 #ifdef grok_number
8366 #  undef grok_number
8367 #endif
8368 #define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c)
8369 #define Perl_grok_number DPPP_(my_grok_number)
8370 
8371 int
DPPP_(my_grok_number)8372 DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
8373 {
8374   const char *s = pv;
8375   const char *send = pv + len;
8376   const UV max_div_10 = UV_MAX / 10;
8377   const char max_mod_10 = UV_MAX % 10;
8378   int numtype = 0;
8379   int sawinf = 0;
8380   int sawnan = 0;
8381 
8382   while (s < send && isSPACE(*s))
8383     s++;
8384   if (s == send) {
8385     return 0;
8386   } else if (*s == '-') {
8387     s++;
8388     numtype = IS_NUMBER_NEG;
8389   }
8390   else if (*s == '+')
8391   s++;
8392 
8393   if (s == send)
8394     return 0;
8395 
8396   /* next must be digit or the radix separator or beginning of infinity */
8397   if (isDIGIT(*s)) {
8398     /* UVs are at least 32 bits, so the first 9 decimal digits cannot
8399        overflow.  */
8400     UV value = *s - '0';
8401     /* This construction seems to be more optimiser friendly.
8402        (without it gcc does the isDIGIT test and the *s - '0' separately)
8403        With it gcc on arm is managing 6 instructions (6 cycles) per digit.
8404        In theory the optimiser could deduce how far to unroll the loop
8405        before checking for overflow.  */
8406     if (++s < send) {
8407       int digit = *s - '0';
8408       if (digit >= 0 && digit <= 9) {
8409         value = value * 10 + digit;
8410         if (++s < send) {
8411           digit = *s - '0';
8412           if (digit >= 0 && digit <= 9) {
8413             value = value * 10 + digit;
8414             if (++s < send) {
8415               digit = *s - '0';
8416               if (digit >= 0 && digit <= 9) {
8417                 value = value * 10 + digit;
8418                 if (++s < send) {
8419                   digit = *s - '0';
8420                   if (digit >= 0 && digit <= 9) {
8421                     value = value * 10 + digit;
8422                     if (++s < send) {
8423                       digit = *s - '0';
8424                       if (digit >= 0 && digit <= 9) {
8425                         value = value * 10 + digit;
8426                         if (++s < send) {
8427                           digit = *s - '0';
8428                           if (digit >= 0 && digit <= 9) {
8429                             value = value * 10 + digit;
8430                             if (++s < send) {
8431                               digit = *s - '0';
8432                               if (digit >= 0 && digit <= 9) {
8433                                 value = value * 10 + digit;
8434                                 if (++s < send) {
8435                                   digit = *s - '0';
8436                                   if (digit >= 0 && digit <= 9) {
8437                                     value = value * 10 + digit;
8438                                     if (++s < send) {
8439                                       /* Now got 9 digits, so need to check
8440                                          each time for overflow.  */
8441                                       digit = *s - '0';
8442                                       while (digit >= 0 && digit <= 9
8443                                              && (value < max_div_10
8444                                                  || (value == max_div_10
8445                                                      && digit <= max_mod_10))) {
8446                                         value = value * 10 + digit;
8447                                         if (++s < send)
8448                                           digit = *s - '0';
8449                                         else
8450                                           break;
8451                                       }
8452                                       if (digit >= 0 && digit <= 9
8453                                           && (s < send)) {
8454                                         /* value overflowed.
8455                                            skip the remaining digits, don't
8456                                            worry about setting *valuep.  */
8457                                         do {
8458                                           s++;
8459                                         } while (s < send && isDIGIT(*s));
8460                                         numtype |=
8461                                           IS_NUMBER_GREATER_THAN_UV_MAX;
8462                                         goto skip_value;
8463                                       }
8464                                     }
8465                                   }
8466                                 }
8467                               }
8468                             }
8469                           }
8470                         }
8471                       }
8472                     }
8473                   }
8474                 }
8475               }
8476             }
8477           }
8478         }
8479       }
8480     }
8481     numtype |= IS_NUMBER_IN_UV;
8482     if (valuep)
8483       *valuep = value;
8484 
8485   skip_value:
8486     if (GROK_NUMERIC_RADIX(&s, send)) {
8487       numtype |= IS_NUMBER_NOT_INT;
8488       while (s < send && isDIGIT(*s))  /* optional digits after the radix */
8489         s++;
8490     }
8491   }
8492   else if (GROK_NUMERIC_RADIX(&s, send)) {
8493     numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */
8494     /* no digits before the radix means we need digits after it */
8495     if (s < send && isDIGIT(*s)) {
8496       do {
8497         s++;
8498       } while (s < send && isDIGIT(*s));
8499       if (valuep) {
8500         /* integer approximation is valid - it's 0.  */
8501         *valuep = 0;
8502       }
8503     }
8504     else
8505       return 0;
8506   } else if (*s == 'I' || *s == 'i') {
8507     s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
8508     s++; if (s == send || (*s != 'F' && *s != 'f')) return 0;
8509     s++; if (s < send && (*s == 'I' || *s == 'i')) {
8510       s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
8511       s++; if (s == send || (*s != 'I' && *s != 'i')) return 0;
8512       s++; if (s == send || (*s != 'T' && *s != 't')) return 0;
8513       s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0;
8514       s++;
8515     }
8516     sawinf = 1;
8517   } else if (*s == 'N' || *s == 'n') {
8518     /* XXX TODO: There are signaling NaNs and quiet NaNs. */
8519     s++; if (s == send || (*s != 'A' && *s != 'a')) return 0;
8520     s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
8521     s++;
8522     sawnan = 1;
8523   } else
8524     return 0;
8525 
8526   if (sawinf) {
8527     numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
8528     numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT;
8529   } else if (sawnan) {
8530     numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
8531     numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT;
8532   } else if (s < send) {
8533     /* we can have an optional exponent part */
8534     if (*s == 'e' || *s == 'E') {
8535       /* The only flag we keep is sign.  Blow away any "it's UV"  */
8536       numtype &= IS_NUMBER_NEG;
8537       numtype |= IS_NUMBER_NOT_INT;
8538       s++;
8539       if (s < send && (*s == '-' || *s == '+'))
8540         s++;
8541       if (s < send && isDIGIT(*s)) {
8542         do {
8543           s++;
8544         } while (s < send && isDIGIT(*s));
8545       }
8546       else
8547       return 0;
8548     }
8549   }
8550   while (s < send && isSPACE(*s))
8551     s++;
8552   if (s >= send)
8553     return numtype;
8554   if (len == 10 && memEQ(pv, "0 but true", 10)) {
8555     if (valuep)
8556       *valuep = 0;
8557     return IS_NUMBER_IN_UV;
8558   }
8559   return 0;
8560 }
8561 #endif
8562 #endif
8563 
8564 /*
8565  * The grok_* routines have been modified to use warn() instead of
8566  * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit,
8567  * which is why the stack variable has been renamed to 'xdigit'.
8568  */
8569 
8570 #ifndef grok_bin
8571 #if defined(NEED_grok_bin)
8572 static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8573 static
8574 #else
8575 extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8576 #endif
8577 
8578 #if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL)
8579 
8580 #ifdef grok_bin
8581 #  undef grok_bin
8582 #endif
8583 #define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d)
8584 #define Perl_grok_bin DPPP_(my_grok_bin)
8585 
8586 UV
DPPP_(my_grok_bin)8587 DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
8588 {
8589     const char *s = start;
8590     STRLEN len = *len_p;
8591     UV value = 0;
8592     NV value_nv = 0;
8593 
8594     const UV max_div_2 = UV_MAX / 2;
8595     bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
8596     bool overflowed = FALSE;
8597 
8598     if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
8599         /* strip off leading b or 0b.
8600            for compatibility silently suffer "b" and "0b" as valid binary
8601            numbers. */
8602         if (len >= 1) {
8603             if (s[0] == 'b') {
8604                 s++;
8605                 len--;
8606             }
8607             else if (len >= 2 && s[0] == '0' && s[1] == 'b') {
8608                 s+=2;
8609                 len-=2;
8610             }
8611         }
8612     }
8613 
8614     for (; len-- && *s; s++) {
8615         char bit = *s;
8616         if (bit == '0' || bit == '1') {
8617             /* Write it in this wonky order with a goto to attempt to get the
8618                compiler to make the common case integer-only loop pretty tight.
8619                With gcc seems to be much straighter code than old scan_bin.  */
8620           redo:
8621             if (!overflowed) {
8622                 if (value <= max_div_2) {
8623                     value = (value << 1) | (bit - '0');
8624                     continue;
8625                 }
8626                 /* Bah. We're just overflowed.  */
8627                 warn("Integer overflow in binary number");
8628                 overflowed = TRUE;
8629                 value_nv = (NV) value;
8630             }
8631             value_nv *= 2.0;
8632             /* If an NV has not enough bits in its mantissa to
8633              * represent a UV this summing of small low-order numbers
8634              * is a waste of time (because the NV cannot preserve
8635              * the low-order bits anyway): we could just remember when
8636              * did we overflow and in the end just multiply value_nv by the
8637              * right amount. */
8638             value_nv += (NV)(bit - '0');
8639             continue;
8640         }
8641         if (bit == '_' && len && allow_underscores && (bit = s[1])
8642             && (bit == '0' || bit == '1'))
8643             {
8644                 --len;
8645                 ++s;
8646                 goto redo;
8647             }
8648         if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
8649             warn("Illegal binary digit '%c' ignored", *s);
8650         break;
8651     }
8652 
8653     if (   ( overflowed && value_nv > 4294967295.0)
8654 #if UVSIZE > 4
8655         || (!overflowed && value > 0xffffffff  )
8656 #endif
8657         ) {
8658         warn("Binary number > 0b11111111111111111111111111111111 non-portable");
8659     }
8660     *len_p = s - start;
8661     if (!overflowed) {
8662         *flags = 0;
8663         return value;
8664     }
8665     *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
8666     if (result)
8667         *result = value_nv;
8668     return UV_MAX;
8669 }
8670 #endif
8671 #endif
8672 
8673 #ifndef grok_hex
8674 #if defined(NEED_grok_hex)
8675 static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8676 static
8677 #else
8678 extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8679 #endif
8680 
8681 #if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL)
8682 
8683 #ifdef grok_hex
8684 #  undef grok_hex
8685 #endif
8686 #define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d)
8687 #define Perl_grok_hex DPPP_(my_grok_hex)
8688 
8689 UV
DPPP_(my_grok_hex)8690 DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
8691 {
8692     const char *s = start;
8693     STRLEN len = *len_p;
8694     UV value = 0;
8695     NV value_nv = 0;
8696 
8697     const UV max_div_16 = UV_MAX / 16;
8698     bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
8699     bool overflowed = FALSE;
8700     const char *xdigit;
8701 
8702     if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
8703         /* strip off leading x or 0x.
8704            for compatibility silently suffer "x" and "0x" as valid hex numbers.
8705         */
8706         if (len >= 1) {
8707             if (s[0] == 'x') {
8708                 s++;
8709                 len--;
8710             }
8711             else if (len >= 2 && s[0] == '0' && s[1] == 'x') {
8712                 s+=2;
8713                 len-=2;
8714             }
8715         }
8716     }
8717 
8718     for (; len-- && *s; s++) {
8719         xdigit = strchr((char *) PL_hexdigit, *s);
8720         if (xdigit) {
8721             /* Write it in this wonky order with a goto to attempt to get the
8722                compiler to make the common case integer-only loop pretty tight.
8723                With gcc seems to be much straighter code than old scan_hex.  */
8724           redo:
8725             if (!overflowed) {
8726                 if (value <= max_div_16) {
8727                     value = (value << 4) | ((xdigit - PL_hexdigit) & 15);
8728                     continue;
8729                 }
8730                 warn("Integer overflow in hexadecimal number");
8731                 overflowed = TRUE;
8732                 value_nv = (NV) value;
8733             }
8734             value_nv *= 16.0;
8735             /* If an NV has not enough bits in its mantissa to
8736              * represent a UV this summing of small low-order numbers
8737              * is a waste of time (because the NV cannot preserve
8738              * the low-order bits anyway): we could just remember when
8739              * did we overflow and in the end just multiply value_nv by the
8740              * right amount of 16-tuples. */
8741             value_nv += (NV)((xdigit - PL_hexdigit) & 15);
8742             continue;
8743         }
8744         if (*s == '_' && len && allow_underscores && s[1]
8745                 && (xdigit = strchr((char *) PL_hexdigit, s[1])))
8746             {
8747                 --len;
8748                 ++s;
8749                 goto redo;
8750             }
8751         if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
8752             warn("Illegal hexadecimal digit '%c' ignored", *s);
8753         break;
8754     }
8755 
8756     if (   ( overflowed && value_nv > 4294967295.0)
8757 #if UVSIZE > 4
8758         || (!overflowed && value > 0xffffffff  )
8759 #endif
8760         ) {
8761         warn("Hexadecimal number > 0xffffffff non-portable");
8762     }
8763     *len_p = s - start;
8764     if (!overflowed) {
8765         *flags = 0;
8766         return value;
8767     }
8768     *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
8769     if (result)
8770         *result = value_nv;
8771     return UV_MAX;
8772 }
8773 #endif
8774 #endif
8775 
8776 #ifndef grok_oct
8777 #if defined(NEED_grok_oct)
8778 static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8779 static
8780 #else
8781 extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
8782 #endif
8783 
8784 #if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL)
8785 
8786 #ifdef grok_oct
8787 #  undef grok_oct
8788 #endif
8789 #define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d)
8790 #define Perl_grok_oct DPPP_(my_grok_oct)
8791 
8792 UV
DPPP_(my_grok_oct)8793 DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
8794 {
8795     const char *s = start;
8796     STRLEN len = *len_p;
8797     UV value = 0;
8798     NV value_nv = 0;
8799 
8800     const UV max_div_8 = UV_MAX / 8;
8801     bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
8802     bool overflowed = FALSE;
8803 
8804     for (; len-- && *s; s++) {
8805          /* gcc 2.95 optimiser not smart enough to figure that this subtraction
8806             out front allows slicker code.  */
8807         int digit = *s - '0';
8808         if (digit >= 0 && digit <= 7) {
8809             /* Write it in this wonky order with a goto to attempt to get the
8810                compiler to make the common case integer-only loop pretty tight.
8811             */
8812           redo:
8813             if (!overflowed) {
8814                 if (value <= max_div_8) {
8815                     value = (value << 3) | digit;
8816                     continue;
8817                 }
8818                 /* Bah. We're just overflowed.  */
8819                 warn("Integer overflow in octal number");
8820                 overflowed = TRUE;
8821                 value_nv = (NV) value;
8822             }
8823             value_nv *= 8.0;
8824             /* If an NV has not enough bits in its mantissa to
8825              * represent a UV this summing of small low-order numbers
8826              * is a waste of time (because the NV cannot preserve
8827              * the low-order bits anyway): we could just remember when
8828              * did we overflow and in the end just multiply value_nv by the
8829              * right amount of 8-tuples. */
8830             value_nv += (NV)digit;
8831             continue;
8832         }
8833         if (digit == ('_' - '0') && len && allow_underscores
8834             && (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
8835             {
8836                 --len;
8837                 ++s;
8838                 goto redo;
8839             }
8840         /* Allow \octal to work the DWIM way (that is, stop scanning
8841          * as soon as non-octal characters are seen, complain only iff
8842          * someone seems to want to use the digits eight and nine). */
8843         if (digit == 8 || digit == 9) {
8844             if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
8845                 warn("Illegal octal digit '%c' ignored", *s);
8846         }
8847         break;
8848     }
8849 
8850     if (   ( overflowed && value_nv > 4294967295.0)
8851 #if UVSIZE > 4
8852         || (!overflowed && value > 0xffffffff  )
8853 #endif
8854         ) {
8855         warn("Octal number > 037777777777 non-portable");
8856     }
8857     *len_p = s - start;
8858     if (!overflowed) {
8859         *flags = 0;
8860         return value;
8861     }
8862     *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
8863     if (result)
8864         *result = value_nv;
8865     return UV_MAX;
8866 }
8867 #endif
8868 #endif
8869 
8870 #if !defined(my_snprintf)
8871 #if defined(NEED_my_snprintf)
8872 static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
8873 static
8874 #else
8875 extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
8876 #endif
8877 
8878 #if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL)
8879 
8880 #define my_snprintf DPPP_(my_my_snprintf)
8881 #define Perl_my_snprintf DPPP_(my_my_snprintf)
8882 
8883 
8884 int
DPPP_(my_my_snprintf)8885 DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
8886 {
8887     dTHX;
8888     int retval;
8889     va_list ap;
8890     va_start(ap, format);
8891 #ifdef HAS_VSNPRINTF
8892     retval = vsnprintf(buffer, len, format, ap);
8893 #else
8894     retval = vsprintf(buffer, format, ap);
8895 #endif
8896     va_end(ap);
8897     if (retval < 0 || (len > 0 && (Size_t)retval >= len))
8898         Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
8899     return retval;
8900 }
8901 
8902 #endif
8903 #endif
8904 
8905 #if !defined(my_sprintf)
8906 #if defined(NEED_my_sprintf)
8907 static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
8908 static
8909 #else
8910 extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
8911 #endif
8912 
8913 #if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL)
8914 
8915 #define my_sprintf DPPP_(my_my_sprintf)
8916 
8917 
8918 /* Warning: my_sprintf
8919    It's safer to use my_snprintf instead
8920 */
8921 
8922 /* Replace my_sprintf with my_snprintf */
8923 
8924 int
DPPP_(my_my_sprintf)8925 DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...)
8926 {
8927     va_list args;
8928     va_start(args, pat);
8929     vsprintf(buffer, pat, args);
8930     va_end(args);
8931     return strlen(buffer);
8932 }
8933 
8934 #endif
8935 #endif
8936 
8937 #ifdef NO_XSLOCKS
8938 #  ifdef dJMPENV
8939 #    define dXCPT             dJMPENV; int rEtV = 0
8940 #    define XCPT_TRY_START    JMPENV_PUSH(rEtV); if (rEtV == 0)
8941 #    define XCPT_TRY_END      JMPENV_POP;
8942 #    define XCPT_CATCH        if (rEtV != 0)
8943 #    define XCPT_RETHROW      JMPENV_JUMP(rEtV)
8944 #  else
8945 #    define dXCPT             Sigjmp_buf oldTOP; int rEtV = 0
8946 #    define XCPT_TRY_START    Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
8947 #    define XCPT_TRY_END      Copy(oldTOP, top_env, 1, Sigjmp_buf);
8948 #    define XCPT_CATCH        if (rEtV != 0)
8949 #    define XCPT_RETHROW      Siglongjmp(top_env, rEtV)
8950 #  endif
8951 #endif
8952 
8953 #if !defined(my_strlcat)
8954 #if defined(NEED_my_strlcat)
8955 static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
8956 static
8957 #else
8958 extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
8959 #endif
8960 
8961 #if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL)
8962 
8963 #define my_strlcat DPPP_(my_my_strlcat)
8964 #define Perl_my_strlcat DPPP_(my_my_strlcat)
8965 
8966 
8967 Size_t
DPPP_(my_my_strlcat)8968 DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size)
8969 {
8970     Size_t used, length, copy;
8971 
8972     used = strlen(dst);
8973     length = strlen(src);
8974     if (size > 0 && used < size - 1) {
8975         copy = (length >= size - used) ? size - used - 1 : length;
8976         memcpy(dst + used, src, copy);
8977         dst[used + copy] = '\0';
8978     }
8979     return used + length;
8980 }
8981 #endif
8982 #endif
8983 
8984 #if !defined(my_strlcpy)
8985 #if defined(NEED_my_strlcpy)
8986 static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
8987 static
8988 #else
8989 extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
8990 #endif
8991 
8992 #if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL)
8993 
8994 #define my_strlcpy DPPP_(my_my_strlcpy)
8995 #define Perl_my_strlcpy DPPP_(my_my_strlcpy)
8996 
8997 
8998 Size_t
DPPP_(my_my_strlcpy)8999 DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
9000 {
9001     Size_t length, copy;
9002 
9003     length = strlen(src);
9004     if (size > 0) {
9005         copy = (length >= size) ? size - 1 : length;
9006         memcpy(dst, src, copy);
9007         dst[copy] = '\0';
9008     }
9009     return length;
9010 }
9011 
9012 #endif
9013 #endif
9014 
9015 #define D_PPP_MIN(a,b) (((a) <= (b)) ? (a) : (b))
9016 #ifndef UNICODE_REPLACEMENT
9017 #  define UNICODE_REPLACEMENT            0xFFFD
9018 #endif
9019 
9020 #ifdef UTF8_MAXLEN
9021 #ifndef UTF8_MAXBYTES
9022 #  define UTF8_MAXBYTES                  UTF8_MAXLEN
9023 #endif
9024 
9025 #endif
9026 #ifndef UTF8_ALLOW_ANYUV
9027 #  define UTF8_ALLOW_ANYUV               0
9028 #endif
9029 
9030 #ifndef UTF8_ALLOW_EMPTY
9031 #  define UTF8_ALLOW_EMPTY               0x0001
9032 #endif
9033 
9034 #ifndef UTF8_ALLOW_CONTINUATION
9035 #  define UTF8_ALLOW_CONTINUATION        0x0002
9036 #endif
9037 
9038 #ifndef UTF8_ALLOW_NON_CONTINUATION
9039 #  define UTF8_ALLOW_NON_CONTINUATION    0x0004
9040 #endif
9041 
9042 #ifndef UTF8_ALLOW_SHORT
9043 #  define UTF8_ALLOW_SHORT               0x0008
9044 #endif
9045 
9046 #ifndef UTF8_ALLOW_LONG
9047 #  define UTF8_ALLOW_LONG                0x0010
9048 #endif
9049 
9050 #ifndef UTF8_ALLOW_OVERFLOW
9051 #  define UTF8_ALLOW_OVERFLOW            0x0080
9052 #endif
9053 
9054 #ifndef UTF8_ALLOW_ANY
9055 #  define UTF8_ALLOW_ANY                 ( UTF8_ALLOW_CONTINUATION      \
9056                                         |UTF8_ALLOW_NON_CONTINUATION  \
9057                                         |UTF8_ALLOW_SHORT             \
9058                                         |UTF8_ALLOW_LONG              \
9059                                         |UTF8_ALLOW_OVERFLOW)
9060 #endif
9061 
9062 #if defined UTF8SKIP
9063 
9064 /* Don't use official version because it uses MIN, which may not be available */
9065 #undef UTF8_SAFE_SKIP
9066 #ifndef UTF8_SAFE_SKIP
9067 #  define UTF8_SAFE_SKIP(s, e)           (                                          \
9068                                       ((((e) - (s)) <= 0)                       \
9069                                       ? 0                                       \
9070                                       : D_PPP_MIN(((e) - (s)), UTF8SKIP(s))))
9071 #endif
9072 
9073 #endif
9074 
9075 #if 'A' == 65
9076 #ifndef UTF8_IS_INVARIANT
9077 #  define UTF8_IS_INVARIANT(c)           isASCII(c)
9078 #endif
9079 
9080 #else
9081 #ifndef UTF8_IS_INVARIANT
9082 #  define UTF8_IS_INVARIANT(c)           (isASCII(c) || isCNTRL_L1(c))
9083 #endif
9084 
9085 #endif
9086 #ifndef UVCHR_IS_INVARIANT
9087 #  define UVCHR_IS_INVARIANT(c)          UTF8_IS_INVARIANT(c)
9088 #endif
9089 
9090 #ifdef UVCHR_IS_INVARIANT
9091 #  if 'A' == 65
9092 #    define D_PPP_BYTE_INFO_BITS 6  /* 6 bits meaningful in continuation bytes */
9093 #    ifdef QUADKIND
9094 #      define D_PPP_UVCHR_SKIP_UPPER(c)                                         \
9095           (WIDEST_UTYPE) (c) <                                                  \
9096         (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13
9097 #    else
9098 #      define D_PPP_UVCHR_SKIP_UPPER(c) 7  /* 32 bit platform */
9099 #    endif
9100 #  else
9101 #    define D_PPP_BYTE_INFO_BITS 5      /* EBCDIC has only 5 meaningful bits */
9102 
9103      /* In the releases this is backported to, UTF-EBCDIC had a max of 2**31-1 */
9104 #    define D_PPP_UVCHR_SKIP_UPPER(c) 7
9105 #  endif
9106 #ifndef UVCHR_SKIP
9107 #  define UVCHR_SKIP(c)                  \
9108           UVCHR_IS_INVARIANT(c)                                          ? 1 :  \
9109           (WIDEST_UTYPE) (c) < (32 * (1U << (    D_PPP_BYTE_INFO_BITS))) ? 2 :  \
9110           (WIDEST_UTYPE) (c) < (16 * (1U << (2 * D_PPP_BYTE_INFO_BITS))) ? 3 :  \
9111           (WIDEST_UTYPE) (c) < ( 8 * (1U << (3 * D_PPP_BYTE_INFO_BITS))) ? 4 :  \
9112           (WIDEST_UTYPE) (c) < ( 4 * (1U << (4 * D_PPP_BYTE_INFO_BITS))) ? 5 :  \
9113           (WIDEST_UTYPE) (c) < ( 2 * (1U << (5 * D_PPP_BYTE_INFO_BITS))) ? 6 :  \
9114           D_PPP_UVCHR_SKIP_UPPER(c)
9115 #endif
9116 
9117 #endif
9118 
9119 #ifdef is_ascii_string
9120 #ifndef is_invariant_string
9121 #  define is_invariant_string(s,l)       is_ascii_string(s,l)
9122 #endif
9123 
9124 #ifndef is_utf8_invariant_string
9125 #  define is_utf8_invariant_string(s,l)  is_ascii_string(s,l)
9126 #endif
9127 
9128 /* Hint: is_ascii_string, is_invariant_string
9129    is_utf8_invariant_string() does the same thing and is preferred because its
9130    name is more accurate as to what it does */
9131 #endif
9132 
9133 #ifdef ibcmp_utf8
9134 #ifndef foldEQ_utf8
9135 #  define foldEQ_utf8(s1,pe1,l1,u1,s2,pe2,l2,u2) \
9136                                 cBOOL(! ibcmp_utf8(s1,pe1,l1,u1,s2,pe2,l2,u2))
9137 #endif
9138 
9139 #endif
9140 
9141 #if defined(is_utf8_string) && defined(UTF8SKIP)
9142 #ifndef isUTF8_CHAR
9143 #  define isUTF8_CHAR(s0, e)             (                                           \
9144     (e) <= (s0) || ! is_utf8_string(s0, D_PPP_MIN(UTF8SKIP(s0), (e) - (s0)))    \
9145     ? 0                                                                         \
9146     : UTF8SKIP(s0))
9147 #endif
9148 
9149 #endif
9150 
9151 #if 'A' == 65
9152 #ifndef BOM_UTF8
9153 #  define BOM_UTF8                       "\xEF\xBB\xBF"
9154 #endif
9155 
9156 #ifndef REPLACEMENT_CHARACTER_UTF8
9157 #  define REPLACEMENT_CHARACTER_UTF8     "\xEF\xBF\xBD"
9158 #endif
9159 
9160 #elif '^' == 95
9161 #ifndef BOM_UTF8
9162 #  define BOM_UTF8                       "\xDD\x73\x66\x73"
9163 #endif
9164 
9165 #ifndef REPLACEMENT_CHARACTER_UTF8
9166 #  define REPLACEMENT_CHARACTER_UTF8     "\xDD\x73\x73\x71"
9167 #endif
9168 
9169 #elif '^' == 176
9170 #ifndef BOM_UTF8
9171 #  define BOM_UTF8                       "\xDD\x72\x65\x72"
9172 #endif
9173 
9174 #ifndef REPLACEMENT_CHARACTER_UTF8
9175 #  define REPLACEMENT_CHARACTER_UTF8     "\xDD\x72\x72\x70"
9176 #endif
9177 
9178 #else
9179 #  error Unknown character set
9180 #endif
9181 
9182 #if (PERL_BCDVERSION < 0x5031004)
9183         /* Versions prior to this accepted things that are now considered
9184          * malformations, and didn't return -1 on error with warnings enabled
9185          * */
9186 #  undef utf8_to_uvchr_buf
9187 #endif
9188 
9189 /* This implementation brings modern, generally more restricted standards to
9190  * utf8_to_uvchr_buf.  Some of these are security related, and clearly must
9191  * be done.  But its arguable that the others need not, and hence should not.
9192  * The reason they're here is that a module that intends to play with the
9193  * latest perls should be able to work the same in all releases.  An example is
9194  * that perl no longer accepts any UV for a code point, but limits them to
9195  * IV_MAX or below.  This is for future internal use of the larger code points.
9196  * If it turns out that some of these changes are breaking code that isn't
9197  * intended to work with modern perls, the tighter restrictions could be
9198  * relaxed.  khw thinks this is unlikely, but has been wrong in the past. */
9199 
9200 /* 5.6.0 is the first release with UTF-8, and we don't implement this function
9201  * there due to its likely lack of still being in use, and the underlying
9202  * implementation is very different from later ones, without the later
9203  * safeguards, so would require extra work to deal with */
9204 #if (PERL_BCDVERSION >= 0x5006001) && ! defined(utf8_to_uvchr_buf)
9205    /* Choose which underlying implementation to use.  At least one must be
9206     * present or the perl is too early to handle this function */
9207 #  if defined(utf8n_to_uvchr) || defined(utf8_to_uvchr) || defined(utf8_to_uv)
9208 #    if defined(utf8n_to_uvchr)   /* This is the preferred implementation */
9209 #      define D_PPP_utf8_to_uvchr_buf_callee utf8n_to_uvchr
9210 #    elif /* Must be at least 5.6.1 from #if above;                             \
9211              If have both regular and _simple, regular has all args */          \
9212           defined(utf8_to_uv) && defined(utf8_to_uv_simple)
9213 #      define D_PPP_utf8_to_uvchr_buf_callee utf8_to_uv
9214 #    elif defined(utf8_to_uvchr)  /* The below won't work well on error input */
9215 #      define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags)          \
9216                                             utf8_to_uvchr((U8 *)(s), (retlen))
9217 #    else
9218 #      define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags)          \
9219                                             utf8_to_uv((U8 *)(s), (retlen))
9220 #    endif
9221 #  endif
9222 
9223 #  if defined(NEED_utf8_to_uvchr_buf)
9224 static UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen);
9225 static
9226 #else
9227 extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen);
9228 #endif
9229 
9230 #if defined(NEED_utf8_to_uvchr_buf) || defined(NEED_utf8_to_uvchr_buf_GLOBAL)
9231 
9232 #ifdef utf8_to_uvchr_buf
9233 #  undef utf8_to_uvchr_buf
9234 #endif
9235 #define utf8_to_uvchr_buf(a,b,c) DPPP_(my_utf8_to_uvchr_buf)(aTHX_ a,b,c)
9236 #define Perl_utf8_to_uvchr_buf DPPP_(my_utf8_to_uvchr_buf)
9237 
9238 
9239 UV
DPPP_(my_utf8_to_uvchr_buf)9240 DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
9241 {
9242     UV ret;
9243     STRLEN curlen;
9244     bool overflows = 0;
9245     const U8 *cur_s = s;
9246     const bool do_warnings = ckWARN_d(WARN_UTF8);
9247 #    if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC)
9248     STRLEN overflow_length = 0;
9249 #    endif
9250 
9251     if (send > s) {
9252         curlen = send - s;
9253     }
9254     else {
9255         assert(0);  /* Modern perls die under this circumstance */
9256         curlen = 0;
9257         if (! do_warnings) {    /* Handle empty here if no warnings needed */
9258             if (retlen) *retlen = 0;
9259             return UNICODE_REPLACEMENT;
9260         }
9261     }
9262 
9263 #    if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC)
9264 
9265     /* Perl did not properly detect overflow for much of its history on
9266      * non-EBCDIC platforms, often returning an overlong value which may or may
9267      * not have been tolerated in the call.  Also, earlier versions, when they
9268      * did detect overflow, may have disallowed it completely.  Modern ones can
9269      * replace it with the REPLACEMENT CHARACTER, depending on calling
9270      * parameters.  Therefore detect it ourselves in  releases it was
9271      * problematic in. */
9272 
9273     if (curlen > 0 && UNLIKELY(*s >= 0xFE)) {
9274 
9275         /* First, on a 32-bit machine the first byte being at least \xFE
9276          * automatically is overflow, as it indicates something requiring more
9277          * than 31 bits */
9278         if (sizeof(ret) < 8) {
9279             overflows = 1;
9280             overflow_length = 7;
9281         }
9282         else {
9283             const U8 highest[] =    /* 2*63-1 */
9284                         "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF";
9285             const U8 *cur_h = highest;
9286 
9287             for (cur_s = s; cur_s < send; cur_s++, cur_h++) {
9288                 if (UNLIKELY(*cur_s == *cur_h)) {
9289                     continue;
9290                 }
9291 
9292                 /* If this byte is larger than the corresponding highest UTF-8
9293                  * byte, the sequence overflows; otherwise the byte is less
9294                  * than (as we handled the equality case above), and so the
9295                  * sequence doesn't overflow */
9296                 overflows = *cur_s > *cur_h;
9297                 break;
9298 
9299             }
9300 
9301             /* Here, either we set the bool and broke out of the loop, or got
9302              * to the end and all bytes are the same which indicates it doesn't
9303              * overflow.  If it did overflow, it would be this number of bytes
9304              * */
9305             overflow_length = 13;
9306         }
9307     }
9308 
9309     if (UNLIKELY(overflows)) {
9310         ret = 0;
9311 
9312         if (! do_warnings && retlen) {
9313             *retlen = overflow_length;
9314         }
9315     }
9316     else
9317 
9318 #    endif  /* < 5.26 */
9319 
9320         /* Here, we are either in a release that properly detects overflow, or
9321          * we have checked for overflow and the next statement is executing as
9322          * part of the above conditional where we know we don't have overflow.
9323          *
9324          * The modern versions allow anything that evaluates to a legal UV, but
9325          * not overlongs nor an empty input */
9326         ret = D_PPP_utf8_to_uvchr_buf_callee(
9327                 s, curlen, retlen,   (UTF8_ALLOW_ANYUV
9328                                   & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY)));
9329 
9330 #    if (PERL_BCDVERSION >= 0x5026000) && (PERL_BCDVERSION < 0x5028000)
9331 
9332     /* But actually, more modern versions restrict the UV to being no more than
9333      * what an IV can hold, so it could still have gotten it wrong about
9334      * overflowing. */
9335     if (UNLIKELY(ret > IV_MAX)) {
9336         overflows = 1;
9337     }
9338 
9339 #    endif
9340 
9341     if (UNLIKELY(overflows)) {
9342         if (! do_warnings) {
9343             if (retlen) {
9344                 *retlen = D_PPP_MIN(*retlen, UTF8SKIP(s));
9345                 *retlen = D_PPP_MIN(*retlen, curlen);
9346             }
9347             return UNICODE_REPLACEMENT;
9348         }
9349         else {
9350 
9351             /* We use the error message in use from 5.8-5.26 */
9352             Perl_warner(aTHX_ packWARN(WARN_UTF8),
9353                 "Malformed UTF-8 character (overflow at 0x%" UVxf
9354                 ", byte 0x%02x, after start byte 0x%02x)",
9355                 ret, *cur_s, *s);
9356             if (retlen) {
9357                 *retlen = (STRLEN) -1;
9358             }
9359             return 0;
9360         }
9361     }
9362 
9363     /* Here, did not overflow, but if it failed for some other reason, and
9364      * warnings are off, to emulate the behavior of the real utf8_to_uvchr(),
9365      * try again, allowing anything.  (Note a return of 0 is ok if the input
9366      * was '\0') */
9367     if (UNLIKELY(ret == 0 && (curlen == 0 || *s != '\0'))) {
9368 
9369         /* If curlen is 0, we already handled the case where warnings are
9370          * disabled, so this 'if' will be true, and so later on, we know that
9371          * 's' is dereferencible */
9372         if (do_warnings) {
9373             *retlen = (STRLEN) -1;
9374         }
9375         else {
9376             ret = D_PPP_utf8_to_uvchr_buf_callee(
9377                                             s, curlen, retlen, UTF8_ALLOW_ANY);
9378             /* Override with the REPLACEMENT character, as that is what the
9379              * modern version of this function returns */
9380             ret = UNICODE_REPLACEMENT;
9381 
9382 #    if (PERL_BCDVERSION < 0x5016000)
9383 
9384             /* Versions earlier than this don't necessarily return the proper
9385              * length.  It should not extend past the end of string, nor past
9386              * what the first byte indicates the length is, nor past the
9387              * continuation characters */
9388             if (retlen && *retlen >= 0) {
9389                 unsigned int i = 1;
9390 
9391                 *retlen = D_PPP_MIN(*retlen, curlen);
9392                 *retlen = D_PPP_MIN(*retlen, UTF8SKIP(s));
9393                 do {
9394                     if (s[i] < 0x80 || s[i] > 0xBF) {
9395                         *retlen = i;
9396                         break;
9397                     }
9398                 } while (++i < *retlen);
9399             }
9400 
9401 #    endif
9402 
9403         }
9404     }
9405 
9406     return ret;
9407 }
9408 
9409 #  endif
9410 #endif
9411 
9412 #if defined(UTF8SKIP) && defined(utf8_to_uvchr_buf)
9413 #undef utf8_to_uvchr /* Always redefine this unsafe function so that it refuses
9414                         to read past a NUL, making it much less likely to read
9415                         off the end of the buffer.  A NUL indicates the start
9416                         of the next character anyway.  If the input isn't
9417                         NUL-terminated, the function remains unsafe, as it
9418                         always has been. */
9419 #ifndef utf8_to_uvchr
9420 #  define utf8_to_uvchr(s, lp)           \
9421     ((*(s) == '\0')                                                             \
9422     ? utf8_to_uvchr_buf(s,((s)+1), lp) /* Handle single NUL specially */        \
9423     : utf8_to_uvchr_buf(s, (s) + my_strnlen((char *) (s), UTF8SKIP(s)), (lp)))
9424 #endif
9425 
9426 #endif
9427 
9428 /* Hint: utf8_to_uvchr
9429     Use utf8_to_uvchr_buf() instead.  But ONLY if you KNOW the upper bound
9430     of the input string (not resorting to using UTF8SKIP, etc., to infer it).
9431     The backported utf8_to_uvchr() will do a better job to prevent most cases
9432     of trying to read beyond the end of the buffer */
9433 
9434 /* Replace utf8_to_uvchr with utf8_to_uvchr_buf */
9435 
9436 #ifdef SV_NOSTEAL
9437    /* Older Perl versions have broken sv_len_utf8() when passed sv does not have SVf_UTF8 flag set */
9438    /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */
9439 #  if (PERL_BCDVERSION < 0x5017005)
9440 #    undef sv_len_utf8
9441 #    if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
9442 #      define sv_len_utf8_nomg(sv) ({ SV *_sv2 = (sv); (SvUTF8(_sv2) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(_sv2) ? _sv2 : sv_mortalcopy_flags(_sv2, SV_NOSTEAL))) : ({ STRLEN _len; SvPV_nomg(_sv2, _len); _len; })); })
9443 #      define sv_len_utf8(sv) ({ SV *_sv1 = (sv); SvGETMAGIC(_sv1); sv_len_utf8_nomg(_sv1); })
9444 #    else
9445 #      define sv_len_utf8_nomg(sv) (PL_Sv = (sv), (SvUTF8(PL_Sv) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL))) : (SvPV_nomg(PL_Sv, PL_na), PL_na)))
9446 #      define sv_len_utf8(sv) (PL_Sv = (sv), SvGETMAGIC(PL_Sv), sv_len_utf8_nomg(PL_Sv))
9447 #    endif
9448 #  endif
9449 #  if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
9450 #ifndef sv_len_utf8_nomg
9451 #  define sv_len_utf8_nomg(sv)           ({ SV *_sv = (sv); sv_len_utf8(!SvGMAGICAL(_sv) ? _sv : sv_mortalcopy_flags(_sv, SV_NOSTEAL)); })
9452 #endif
9453 
9454 #  else
9455 #ifndef sv_len_utf8_nomg
9456 #  define sv_len_utf8_nomg(sv)           ((PL_Sv = (sv)), sv_len_utf8(!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL)))
9457 #endif
9458 
9459 #  endif
9460 #endif
9461 #ifndef PERL_PV_ESCAPE_QUOTE
9462 #  define PERL_PV_ESCAPE_QUOTE           0x0001
9463 #endif
9464 
9465 #ifndef PERL_PV_PRETTY_QUOTE
9466 #  define PERL_PV_PRETTY_QUOTE           PERL_PV_ESCAPE_QUOTE
9467 #endif
9468 
9469 #ifndef PERL_PV_PRETTY_ELLIPSES
9470 #  define PERL_PV_PRETTY_ELLIPSES        0x0002
9471 #endif
9472 
9473 #ifndef PERL_PV_PRETTY_LTGT
9474 #  define PERL_PV_PRETTY_LTGT            0x0004
9475 #endif
9476 
9477 #ifndef PERL_PV_ESCAPE_FIRSTCHAR
9478 #  define PERL_PV_ESCAPE_FIRSTCHAR       0x0008
9479 #endif
9480 
9481 #ifndef PERL_PV_ESCAPE_UNI
9482 #  define PERL_PV_ESCAPE_UNI             0x0100
9483 #endif
9484 
9485 #ifndef PERL_PV_ESCAPE_UNI_DETECT
9486 #  define PERL_PV_ESCAPE_UNI_DETECT      0x0200
9487 #endif
9488 
9489 #ifndef PERL_PV_ESCAPE_ALL
9490 #  define PERL_PV_ESCAPE_ALL             0x1000
9491 #endif
9492 
9493 #ifndef PERL_PV_ESCAPE_NOBACKSLASH
9494 #  define PERL_PV_ESCAPE_NOBACKSLASH     0x2000
9495 #endif
9496 
9497 #ifndef PERL_PV_ESCAPE_NOCLEAR
9498 #  define PERL_PV_ESCAPE_NOCLEAR         0x4000
9499 #endif
9500 
9501 #ifndef PERL_PV_ESCAPE_RE
9502 #  define PERL_PV_ESCAPE_RE              0x8000
9503 #endif
9504 
9505 #ifndef PERL_PV_PRETTY_NOCLEAR
9506 #  define PERL_PV_PRETTY_NOCLEAR         PERL_PV_ESCAPE_NOCLEAR
9507 #endif
9508 #ifndef PERL_PV_PRETTY_DUMP
9509 #  define PERL_PV_PRETTY_DUMP            PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
9510 #endif
9511 
9512 #ifndef PERL_PV_PRETTY_REGPROP
9513 #  define PERL_PV_PRETTY_REGPROP         PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE
9514 #endif
9515 
9516 /* Hint: pv_escape
9517  * Note that unicode functionality is only backported to
9518  * those perl versions that support it. For older perl
9519  * versions, the implementation will fall back to bytes.
9520  */
9521 
9522 #ifndef pv_escape
9523 #if defined(NEED_pv_escape)
9524 static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
9525 static
9526 #else
9527 extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
9528 #endif
9529 
9530 #if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL)
9531 
9532 #ifdef pv_escape
9533 #  undef pv_escape
9534 #endif
9535 #define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f)
9536 #define Perl_pv_escape DPPP_(my_pv_escape)
9537 
9538 
9539 char *
DPPP_(my_pv_escape)9540 DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
9541   const STRLEN count, const STRLEN max,
9542   STRLEN * const escaped, const U32 flags)
9543 {
9544     const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\';
9545     const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc;
9546     char octbuf[32] = "%123456789ABCDF";
9547     STRLEN wrote = 0;
9548     STRLEN chsize = 0;
9549     STRLEN readsize = 1;
9550 #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
9551     bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0;
9552 #endif
9553     const char *pv  = str;
9554     const char * const end = pv + count;
9555     octbuf[0] = esc;
9556 
9557     if (!(flags & PERL_PV_ESCAPE_NOCLEAR))
9558         sv_setpvs(dsv, "");
9559 
9560 #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
9561     if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count))
9562         isuni = 1;
9563 #endif
9564 
9565     for (; pv < end && (!max || wrote < max) ; pv += readsize) {
9566         const UV u =
9567 #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
9568                      isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) :
9569 #endif
9570                              (U8)*pv;
9571         const U8 c = (U8)u & 0xFF;
9572 
9573         if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) {
9574             if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
9575                 chsize = my_snprintf(octbuf, sizeof octbuf,
9576                                       "%" UVxf, u);
9577             else
9578                 chsize = my_snprintf(octbuf, sizeof octbuf,
9579                                       "%cx{%" UVxf "}", esc, u);
9580         } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) {
9581             chsize = 1;
9582         } else {
9583             if (c == dq || c == esc || !isPRINT(c)) {
9584                 chsize = 2;
9585                 switch (c) {
9586                 case '\\' : /* fallthrough */
9587                 case '%'  : if (c == esc)
9588                                 octbuf[1] = esc;
9589                             else
9590                                 chsize = 1;
9591                             break;
9592                 case '\v' : octbuf[1] = 'v'; break;
9593                 case '\t' : octbuf[1] = 't'; break;
9594                 case '\r' : octbuf[1] = 'r'; break;
9595                 case '\n' : octbuf[1] = 'n'; break;
9596                 case '\f' : octbuf[1] = 'f'; break;
9597                 case '"'  : if (dq == '"')
9598                                 octbuf[1] = '"';
9599                             else
9600                                 chsize = 1;
9601                             break;
9602                 default:    chsize = my_snprintf(octbuf, sizeof octbuf,
9603                                 pv < end && isDIGIT((U8)*(pv+readsize))
9604                                 ? "%c%03o" : "%c%o", esc, c);
9605                 }
9606             } else {
9607                 chsize = 1;
9608             }
9609         }
9610         if (max && wrote + chsize > max) {
9611             break;
9612         } else if (chsize > 1) {
9613             sv_catpvn(dsv, octbuf, chsize);
9614             wrote += chsize;
9615         } else {
9616             char tmp[2];
9617             my_snprintf(tmp, sizeof tmp, "%c", c);
9618             sv_catpvn(dsv, tmp, 1);
9619             wrote++;
9620         }
9621         if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
9622             break;
9623     }
9624     if (escaped != NULL)
9625         *escaped= pv - str;
9626     return SvPVX(dsv);
9627 }
9628 
9629 #endif
9630 #endif
9631 
9632 #ifndef pv_pretty
9633 #if defined(NEED_pv_pretty)
9634 static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
9635 static
9636 #else
9637 extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
9638 #endif
9639 
9640 #if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL)
9641 
9642 #ifdef pv_pretty
9643 #  undef pv_pretty
9644 #endif
9645 #define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g)
9646 #define Perl_pv_pretty DPPP_(my_pv_pretty)
9647 
9648 
9649 char *
DPPP_(my_pv_pretty)9650 DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
9651   const STRLEN max, char const * const start_color, char const * const end_color,
9652   const U32 flags)
9653 {
9654     const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%';
9655     STRLEN escaped;
9656 
9657     if (!(flags & PERL_PV_PRETTY_NOCLEAR))
9658         sv_setpvs(dsv, "");
9659 
9660     if (dq == '"')
9661         sv_catpvs(dsv, "\"");
9662     else if (flags & PERL_PV_PRETTY_LTGT)
9663         sv_catpvs(dsv, "<");
9664 
9665     if (start_color != NULL)
9666         sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color));
9667 
9668     pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR);
9669 
9670     if (end_color != NULL)
9671         sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color));
9672 
9673     if (dq == '"')
9674         sv_catpvs(dsv, "\"");
9675     else if (flags & PERL_PV_PRETTY_LTGT)
9676         sv_catpvs(dsv, ">");
9677 
9678     if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count)
9679         sv_catpvs(dsv, "...");
9680 
9681     return SvPVX(dsv);
9682 }
9683 
9684 #endif
9685 #endif
9686 
9687 #ifndef pv_display
9688 #if defined(NEED_pv_display)
9689 static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
9690 static
9691 #else
9692 extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
9693 #endif
9694 
9695 #if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL)
9696 
9697 #ifdef pv_display
9698 #  undef pv_display
9699 #endif
9700 #define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e)
9701 #define Perl_pv_display DPPP_(my_pv_display)
9702 
9703 
9704 char *
DPPP_(my_pv_display)9705 DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
9706 {
9707     pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP);
9708     if (len > cur && pv[cur] == '\0')
9709         sv_catpvs(dsv, "\\0");
9710     return SvPVX(dsv);
9711 }
9712 
9713 #endif
9714 #endif
9715 
9716 /* If this doesn't exist, it's not needed, so noop */
9717 #ifndef switch_to_global_locale
9718 #  define switch_to_global_locale()
9719 #endif
9720 
9721 /* Originally, this didn't return a value, but in perls like that, the value
9722  * should always be TRUE.  Add a return to Perl_sync_locale() when it's
9723  * available.  And actually do a sync when its not, if locales are available on
9724  * this system. */
9725 #ifdef sync_locale
9726 #  if (PERL_BCDVERSION < 0x5027009)
9727 #    if (PERL_BCDVERSION >= 0x5021003)
9728 #      undef sync_locale
9729 #      define sync_locale() (Perl_sync_locale(aTHX), 1)
9730 #    elif defined(new_ctype) && defined(LC_CTYPE)
9731 #      define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), 1)
9732 #    else
9733 #      undef sync_locale
9734 #    endif
9735 #  endif
9736 #endif
9737 #ifndef sync_locale
9738 #  define sync_locale()                  1
9739 #endif
9740 
9741 #endif /* _P_P_PORTABILITY_H_ */
9742 
9743 /* End of File ppport.h */
9744