From 96c0bfed369618ea78749a975b9f8fb5ead597b5 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Sat, 4 Oct 2025 15:49:56 -0600 Subject: [PATCH 01/12] mathoms.c: Add a few coments --- mathoms.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mathoms.c b/mathoms.c index 7bc47bf8dea5..cfce11e6e33f 100644 --- a/mathoms.c +++ b/mathoms.c @@ -27,6 +27,9 @@ * 1) A function has been replaced by a macro within a minor release, * so XS modules compiled against an older release will expect to * still be able to link against the function + * 2) A function is deprecated, and so placing it here will cause a compiler + * warning to be generated (for participating compilers). + * 3) A few other reasons, documented with the functions below * * It used to be that this was the way to handle the case were a function * Perl_foo(...) had been replaced by a macro. But see the 'm' flag discussion From fd2c265a5561c84cd2d732047649c7ae010e0477 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Sat, 4 Oct 2025 15:35:29 -0600 Subject: [PATCH 02/12] regen/embed.pl: Don't create prototype for private macros Prior to this commit, a commented-out prototype was created for all macros that we have argument and return type information for. This might be useful information for a reader of proto.h. This commits stops doing this for private macros. It makes a future commit slightly easier, and I'm unsure of the usefulness of this anyway. But I could be persuaded otherwise. --- proto.h | 21 --------------------- regen/embed.pl | 4 ++++ 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/proto.h b/proto.h index 0703f6997a28..818440fbe4de 100644 --- a/proto.h +++ b/proto.h @@ -791,9 +791,6 @@ Perl_die_unwind(pTHX_ SV *msv) #define PERL_ARGS_ASSERT_DIE_UNWIND \ assert(msv) -/* PERL_CALLCONV bool -Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp); */ - PERL_CALLCONV bool Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, int fd, int do_report) __attribute__visibility__("hidden"); @@ -2648,9 +2645,6 @@ PERL_CALLCONV Pid_t Perl_my_fork(void); #define PERL_ARGS_ASSERT_MY_FORK -/* PERL_CALLCONV I32 -Perl_my_lstat(pTHX); */ - PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags); #define PERL_ARGS_ASSERT_MY_LSTAT_FLAGS @@ -2688,9 +2682,6 @@ PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]); #define PERL_ARGS_ASSERT_MY_SOCKETPAIR -/* PERL_CALLCONV I32 -Perl_my_stat(pTHX); */ - PERL_CALLCONV I32 Perl_my_stat_flags(pTHX_ const U32 flags); #define PERL_ARGS_ASSERT_MY_STAT_FLAGS @@ -6894,21 +6885,12 @@ S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl) defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C) # define PERL_ARGS_ASSERT_ADD_RANGE_TO_INVLIST_ -/* PERL_CALLCONV void -invlist_intersection_(pTHX_ SV * const a, SV * const b, SV **i); */ - # define PERL_ARGS_ASSERT_INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND_ \ assert(b); assert(i) # define PERL_ARGS_ASSERT_INVLIST_INVERT_ \ assert(invlist) -/* PERL_CALLCONV void -invlist_subtract_(pTHX_ SV * const a, SV * const b, SV **result); */ - -/* PERL_CALLCONV void -invlist_union_(pTHX_ SV * const a, SV * const b, SV **output); */ - # define PERL_ARGS_ASSERT_INVLIST_UNION_MAYBE_COMPLEMENT_2ND_ \ assert(b); assert(output) @@ -10755,9 +10737,6 @@ Perl_dump_c_backtrace(pTHX_ PerlIO *fp, int max_depth, int skip); # define PERL_ARGS_ASSERT_DUMP_C_BACKTRACE \ assert(fp) -/* PERL_CALLCONV void -free_c_backtrace(pTHX_ Perl_c_backtrace *bt); */ - PERL_CALLCONV Perl_c_backtrace * Perl_get_c_backtrace(pTHX_ int max_depth, int skip) __attribute__visibility__("hidden"); diff --git a/regen/embed.pl b/regen/embed.pl index 98090467fba2..3e613e18522b 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -191,6 +191,10 @@ sub generate_proto_h { die_at_end "$plain_func: m and S flags are mutually exclusive"; } + + # Don't generate a prototype for a macro that is not usable by the + # outside world. + next unless $flags =~ /[ACE]/; } else { die_at_end "$plain_func: u flag only usable with m" From 3dac89bc376a2d7557b44495ad22a9a4bb3160e3 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Sat, 4 Oct 2025 15:38:35 -0600 Subject: [PATCH 03/12] regen/embed.pl: Don't create prototype for weird macros Where 'weird' is defined as meaning something where the normal rules don't apply, so something we generate is unlikely to be correct. This only affects one element, and it uses aTHX in a way that is incompatible with it being automated. --- proto.h | 3 --- regen/embed.pl | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/proto.h b/proto.h index 818440fbe4de..027885a01465 100644 --- a/proto.h +++ b/proto.h @@ -55,9 +55,6 @@ Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag) #define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC \ assert(file) -/* PERL_CALLCONV const XOP * -Perl_custom_op_xop(pTHX_ const OP *o); */ - PERL_CALLCONV const char * Perl_langinfo(const nl_item item); #define PERL_ARGS_ASSERT_PERL_LANGINFO diff --git a/regen/embed.pl b/regen/embed.pl index 3e613e18522b..3fd68610e58b 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -195,6 +195,9 @@ sub generate_proto_h { # Don't generate a prototype for a macro that is not usable by the # outside world. next unless $flags =~ /[ACE]/; + + # Nor one that is weird, which would likely be a syntax error. + next if $flags =~ /u/; } else { die_at_end "$plain_func: u flag only usable with m" From e4188ce359b74330cc0280b1ed610bf48dbc2c10 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 14 Oct 2025 10:32:35 -0600 Subject: [PATCH 04/12] embed.pl: enum and union are like struct in parameters These keywords all need another word to indicate the parameter type. Previously only 'struct' was considered to have. This changed showed an error in one entry embed.fnc, which is also corrected in this commit. --- embed.fnc | 2 +- proto.h | 2 +- regen/embed.pl | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/embed.fnc b/embed.fnc index 470deba3ac8f..b05c84256746 100644 --- a/embed.fnc +++ b/embed.fnc @@ -2693,7 +2693,7 @@ CTp |Signal_t|perly_sighandler \ |bool safe Admp |const char * const|phase_name \ - |enum perl_phase + |enum perl_phase phase Adp |void |pmop_dump |NULLOK PMOP *pm : Used in perly.y p |OP * |pmruntime |NN OP *o \ diff --git a/proto.h b/proto.h index 027885a01465..bc56064ac5fa 100644 --- a/proto.h +++ b/proto.h @@ -3563,7 +3563,7 @@ Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe); #define PERL_ARGS_ASSERT_PERLY_SIGHANDLER /* PERL_CALLCONV const char * const -Perl_phase_name(pTHX_ enum perl_phase); */ +Perl_phase_name(pTHX_ enum perl_phase phase); */ PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP *pm); diff --git a/regen/embed.pl b/regen/embed.pl index 3fd68610e58b..4b15f69332d5 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -374,7 +374,8 @@ sub generate_proto_h { my $temp_arg = $arg; $temp_arg =~ s/\*//g; - $temp_arg =~ s/\s*\bstruct\b\s*/ /g; + $temp_arg =~ + s/ \s* \b ( struct | enum | union ) \b \s*/ /xg; if ( ($temp_arg ne "...") && ($temp_arg !~ /\w+\s+(\w+)(?:\[\d+\])?\s*$/) ) { die_at_end "$func: $arg ($n) doesn't have a name\n"; From cc3024214fc90929ae50ed561a0cbd397a6bc88e Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 14 Oct 2025 11:06:53 -0600 Subject: [PATCH 05/12] embed.fnc: Drop Perl_ on do_aexec my_stat my_lstat These macros are not for external use, so don't need a Perl_ prefix --- embed.fnc | 6 +++--- embed.h | 9 --------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/embed.fnc b/embed.fnc index b05c84256746..cf35a8153153 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1117,7 +1117,7 @@ Adpr |OP * |die_sv |NN SV *baseex : Used in util.c pr |void |die_unwind |NN SV *msv : FIXME -mp |bool |do_aexec |NULLOK SV *really \ +m |bool |do_aexec |NULLOK SV *really \ |NN SV **mark \ |NN SV **sp : Used in pp_sys.c @@ -2210,7 +2210,7 @@ Adpr |void |my_exit |U32 status Adpr |void |my_failure_exit Cdp |I32 |my_fflush_all CTdp |Pid_t |my_fork -mp |I32 |my_lstat +m |I32 |my_lstat Xp |I32 |my_lstat_flags |NULLOK const U32 flags RTop |int |my_mkostemp_cloexec \ |NN char *templte \ @@ -2231,7 +2231,7 @@ CTdp |int |my_socketpair |int family \ |int type \ |int protocol \ |int fd[2] -mp |I32 |my_stat +m |I32 |my_stat Xp |I32 |my_stat_flags |NULLOK const U32 flags p |const char *|my_strerror \ |const int errnum \ diff --git a/embed.h b/embed.h index 7394c28366f1..d663b28e847e 100644 --- a/embed.h +++ b/embed.h @@ -1831,15 +1831,6 @@ # define quadmath_format_needed Perl_quadmath_format_needed # define quadmath_format_valid Perl_quadmath_format_valid # endif -# if defined(USE_THREADS) -# define Perl_do_aexec(mTHX,a,b,c) do_aexec(a,b,c) -# define Perl_my_lstat(mTHX) my_lstat() -# define Perl_my_stat(mTHX) my_stat() -# else -# define Perl_do_aexec do_aexec -# define Perl_my_lstat my_lstat -# define Perl_my_stat my_stat -# endif # if defined(WIN32) # define get_win32_message_utf8ness(a) Perl_get_win32_message_utf8ness(aTHX_ a) # else From 3d7c9f6bfb90d0abe0f904841ea13fc44f42ab38 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 14 Oct 2025 11:12:47 -0600 Subject: [PATCH 06/12] Cast away const in call to strstr() My Linux man page says the arguments to this function should be const, but the compiler refuses to compile it when so. Easiest to just cast them away; the function isn't going to change them. --- util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util.h b/util.h index 386f38935621..a339bbdf6be0 100644 --- a/util.h +++ b/util.h @@ -252,7 +252,7 @@ returning NULL if not found. The terminating NUL bytes are not compared. */ -#define instr(haystack, needle) strstr(haystack, needle) +#define instr(haystack, needle) strstr((char *) haystack, (char *) needle) #ifdef HAS_MEMMEM # define ninstr(big, bigend, little, lend) \ From 08d601339fc57ce04318e916625e8d9d71c62940 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 14 Oct 2025 11:16:48 -0600 Subject: [PATCH 07/12] Move hv_stores() declaration from embed.fnc to hv.h This is required for the next few commits that start automatically creating long Perl_name functions for the elements in embed.fnc that are macros and don't already have them in the source. Only macros can take a parameter that has to be a literal string, so don't fit with the next few commits. This is the only case in embed.fnc like that, so I'm deferring dealing with it for now. --- embed.fnc | 3 --- embed.h | 2 -- hv.h | 1 + proto.h | 3 --- 4 files changed, 1 insertion(+), 8 deletions(-) diff --git a/embed.fnc b/embed.fnc index cf35a8153153..6fcecf3972ff 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1699,9 +1699,6 @@ Ampx |SV ** |hv_store_flags |NULLOK HV *hv \ |NULLOK SV *val \ |U32 hash \ |int flags -Admp |SV ** |hv_stores |NULLOK HV *hv \ - |"key" \ - |NULLOK SV *val Admp |void |hv_undef |NULLOK HV *hv Xop |void |hv_undef_flags |NULLOK HV *hv \ |U32 flags diff --git a/embed.h b/embed.h index d663b28e847e..cb5884ef065e 100644 --- a/embed.h +++ b/embed.h @@ -2291,7 +2291,6 @@ # define Perl_hv_store(mTHX,a,b,c,d,e) hv_store(a,b,c,d,e) # define Perl_hv_store_ent(mTHX,a,b,c,d) hv_store_ent(a,b,c,d) # define Perl_hv_store_flags(mTHX,a,b,c,d,e,f) hv_store_flags(a,b,c,d,e,f) -# define Perl_hv_stores(mTHX,a,b,c) hv_stores(a,b,c) # define Perl_hv_undef(mTHX,a) hv_undef(a) # define Perl_ibcmp(mTHX,a,b,c) ibcmp(a,b,c) # define Perl_ibcmp_locale(mTHX,a,b,c) ibcmp_locale(a,b,c) @@ -2392,7 +2391,6 @@ # define Perl_hv_store hv_store # define Perl_hv_store_ent hv_store_ent # define Perl_hv_store_flags hv_store_flags -# define Perl_hv_stores hv_stores # define Perl_hv_undef hv_undef # define Perl_ibcmp ibcmp # define Perl_ibcmp_locale ibcmp_locale diff --git a/hv.h b/hv.h index f83dcc1b5ccf..ca055c9342e1 100644 --- a/hv.h +++ b/hv.h @@ -584,6 +584,7 @@ whether it is valid to call C. =for apidoc_defn Am|SV**|hv_fetchs|HV* hv|"key"|I32 lval =for apidoc_defn Am|SV *|hv_deletes|HV *hv|"key"|U32 flags =for apidoc_defn Am|void|hv_name_sets|HV *hv|"name"|U32 flags +=for apidoc_defn Am|SV**|hv_stores|HV *hv|"name"|U32 flags =cut */ #define hv_fetchs(hv, key, lval) \ diff --git a/proto.h b/proto.h index bc56064ac5fa..1a419569d941 100644 --- a/proto.h +++ b/proto.h @@ -1705,9 +1705,6 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */ /* PERL_CALLCONV SV ** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */ -/* PERL_CALLCONV SV ** -Perl_hv_stores(pTHX_ HV *hv, const char * const key, SV *val); */ - /* PERL_CALLCONV void Perl_hv_undef(pTHX_ HV *hv); */ From ebc80052b7190a2bf8ce7df83b677b21747aaad7 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Tue, 14 Oct 2025 11:19:47 -0600 Subject: [PATCH 08/12] Remove const char * const return value A function can't return something of that type, but this has always been a macro, so this hasn't been caught. --- embed.fnc | 3 +-- proto.h | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/embed.fnc b/embed.fnc index 6fcecf3972ff..35195737c8f8 100644 --- a/embed.fnc +++ b/embed.fnc @@ -2689,8 +2689,7 @@ CTp |Signal_t|perly_sighandler \ |NULLOK void *uap \ |bool safe -Admp |const char * const|phase_name \ - |enum perl_phase phase +Admp |const char *|phase_name|enum perl_phase phase Adp |void |pmop_dump |NULLOK PMOP *pm : Used in perly.y p |OP * |pmruntime |NN OP *o \ diff --git a/proto.h b/proto.h index 1a419569d941..3eaffa75e0cb 100644 --- a/proto.h +++ b/proto.h @@ -3559,7 +3559,7 @@ PERL_CALLCONV Signal_t Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe); #define PERL_ARGS_ASSERT_PERLY_SIGHANDLER -/* PERL_CALLCONV const char * const +/* PERL_CALLCONV const char * Perl_phase_name(pTHX_ enum perl_phase phase); */ PERL_CALLCONV void From 6f930697d5cb0657575bafc5730f8e0a4a03c49f Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Thu, 30 Oct 2025 11:18:34 -0600 Subject: [PATCH 09/12] Three macros are used in perl extensions They were marked as core-only. --- embed.fnc | 6 +++--- handy.h | 2 +- proto.h | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/embed.fnc b/embed.fnc index 35195737c8f8..35d2819a9e2a 100644 --- a/embed.fnc +++ b/embed.fnc @@ -4492,7 +4492,7 @@ ERXp |SV * |add_range_to_invlist_ \ |NULLOK SV *invlist \ |UV start \ |UV end -m |void |invlist_intersection_ \ +Em |void |invlist_intersection_ \ |NN SV * const a \ |NN SV * const b \ |NN SV **i @@ -4502,11 +4502,11 @@ EXp |void |invlist_intersection_maybe_complement_2nd_ \ |const bool complement_b \ |NN SV **i EXp |void |invlist_invert_|NN SV * const invlist -m |void |invlist_subtract_ \ +Em |void |invlist_subtract_ \ |NN SV * const a \ |NN SV * const b \ |NN SV **result -m |void |invlist_union_ |NULLOK SV * const a \ +Em |void |invlist_union_ |NULLOK SV * const a \ |NN SV * const b \ |NN SV **output EXp |void |invlist_union_maybe_complement_2nd_ \ diff --git a/handy.h b/handy.h index d06292dd6ca9..142dacad54f9 100644 --- a/handy.h +++ b/handy.h @@ -450,7 +450,7 @@ a string/length pair. /* -=for apidoc_defn mx|void|lex_stuff_pvs|"pv"|U32 flags +=for apidoc_defn Emx|void|lex_stuff_pvs|"pv"|U32 flags =cut */ diff --git a/proto.h b/proto.h index 3eaffa75e0cb..b9e582f172e3 100644 --- a/proto.h +++ b/proto.h @@ -6172,10 +6172,16 @@ Perl_invlist_search_(SV * const invlist, const UV cp) PERL_CALLCONV SV * Perl_add_range_to_invlist_(pTHX_ SV *invlist, UV start, UV end) __attribute__warn_unused_result__; +/* PERL_CALLCONV void +invlist_intersection_(pTHX_ SV * const a, SV * const b, SV **i); */ PERL_CALLCONV void Perl_invlist_intersection_maybe_complement_2nd_(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **i); PERL_CALLCONV void Perl_invlist_invert_(pTHX_ SV * const invlist); +/* PERL_CALLCONV void +invlist_subtract_(pTHX_ SV * const a, SV * const b, SV **result); */ +/* PERL_CALLCONV void +invlist_union_(pTHX_ SV * const a, SV * const b, SV **output); */ PERL_CALLCONV void Perl_invlist_union_maybe_complement_2nd_(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **output); PERL_CALLCONV SV * From 0a3e16007a95361bf2f5361158f8a7b5535f0f44 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Thu, 30 Oct 2025 12:59:30 -0600 Subject: [PATCH 10/12] regen/embed.pl: Move declaration Future commits make the new location a better choice --- regen/embed.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/regen/embed.pl b/regen/embed.pl index 4b15f69332d5..a2e927a850bf 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -28,6 +28,8 @@ BEGIN require './regen/embed_lib.pl'; } +my @az = ('a'..'z'); + # This program has historically generated compatibility macros for a few # functions of the form Perl_FOO(pTHX_ ...). Those macros would be named # FOO(...), and would expand outside the core to Perl_FOO_nocontext(...) @@ -58,7 +60,6 @@ BEGIN my %perl_compats; # Have 'perl_' prefix my $unflagged_pointers; -my @az = ('a'..'z'); # # See database of global and static function prototypes in embed.fnc From dc9703c763defceed656ccbc5b033448d03212b2 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Thu, 30 Oct 2025 13:01:51 -0600 Subject: [PATCH 11/12] regen/embed.pl: Move declaration to first use --- regen/embed.pl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/regen/embed.pl b/regen/embed.pl index a2e927a850bf..130c4f248261 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -59,8 +59,6 @@ BEGIN $has_compat_macro{$_} = 1 for @have_compatibility_macros; my %perl_compats; # Have 'perl_' prefix -my $unflagged_pointers; - # # See database of global and static function prototypes in embed.fnc # This is used to generate prototype headers under various configurations, @@ -132,6 +130,10 @@ sub open_buf_out { # take non-initialised GV pointers ); +# Pointer arguments that erroneously don't indicate whether they can be NULL, +# etc. +my $unflagged_pointers; + # generate proto.h sub generate_proto_h { my ($all)= @_; From 3a90558d8d265fdc400fb4650ff808e3e5fce716 Mon Sep 17 00:00:00 2001 From: Karl Williamson Date: Thu, 30 Oct 2025 13:06:22 -0600 Subject: [PATCH 12/12] Gain control of macro namespace visibility This commit undefines all macros that are visible to XS code but shouldn't be. This stops macro namespace pollution by perl. It works by changing embed.h to have two modes, controlled by a #ifdef that is set by perl.h. perl.h now #includes embed.h twice. The first time works as it always has. The second sets the #ifdef, and causes embed.h to #undef the macros that shouldn't be visible. This call is just before perl.h returns to its includer, so that these macros have come and gone before the file that #included perl.h is affected by them. The list of macros is determined by the visibility given by the apidoc lines documenting them, and by painstaking experiments with our test suite. Those experiments, and some manual inspection, have produced three long lists of items beyond what the apidoc lines currently give. One list is for items that the re extension to Perl requires. A second list is for items that other Perl extensions require. The third list is for items that at least one module shipped with perl requires (or that I know something on CPAN requires) even though the items aren't marked as being visible. There are over 700 items on this list. And smoking cpan with this will add others. The experiments were done automatically, and I have not manually done much manual inspection. I have wanted this ability to happen for a long time; and now things have come together to enable it. This allows us to have a clear-cut boundary with CPAN. It means you can add macros that have internal-only use without having to worry about making them likely not to clash with user names. It shows precisely what our names are that are visible to CPAN, and we can change some of them to be less likely to clash. --- embed.h | 4768 +++++++++++++++++++++++++++++++++++++++++++++++- perl.h | 10 + regen/embed.pl | 1925 ++++++++++++++++++- 3 files changed, 6617 insertions(+), 86 deletions(-) diff --git a/embed.h b/embed.h index cb5884ef065e..e52dc33a9d9a 100644 --- a/embed.h +++ b/embed.h @@ -21,77 +21,4641 @@ /* (Doing namespace management portably in C is really gross.) */ -/* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms - * (like warn instead of Perl_warn) for the API are not defined. - * Not defining the short forms is a good thing for cleaner embedding. - * BEWARE that a bunch of macros don't have long names, so either must be - * added or don't use them if you define this symbol */ +/* When this symbol is defined, we undef various symbols we have defined + * before when this file was #included with the symbol undefined */ +#if defined(PERL_DO_UNDEFS) +# if !defined(PERL_CORE) +# undef _ +# undef _swab_16_ +# undef _swab_32_ +# undef _swab_64_ +# undef ABORT +# undef ABS_IV_MIN +# undef ACCEPT +# undef ACCEPT_t8 +# undef ACCEPT_t8_p8 +# undef ACCEPT_t8_pb +# undef ACCEPT_tb +# undef ACCEPT_tb_p8 +# undef ACCEPT_tb_pb +# undef AHOCORASICK +# undef AHOCORASICK_t8 +# undef AHOCORASICK_t8_p8 +# undef AHOCORASICK_t8_pb +# undef AHOCORASICK_tb +# undef AHOCORASICK_tb_p8 +# undef AHOCORASICK_tb_pb +# undef AHOCORASICKC +# undef AHOCORASICKC_t8 +# undef AHOCORASICKC_t8_p8 +# undef AHOCORASICKC_t8_pb +# undef AHOCORASICKC_tb +# undef AHOCORASICKC_tb_p8 +# undef AHOCORASICKC_tb_pb +# undef ALIGNED_TYPE +# undef ALIGNED_TYPE_NAME +# undef ALL_PARENS_COUNTED +# undef ALWAYS_WARN_SUPER +# undef AMG_id2name +# undef AMG_id2namelen +# undef AMGf_noleft +# undef AMGf_numarg +# undef AMGf_numeric +# undef AMGf_want_list +# undef AMGfallNEVER +# undef AMGfallNO +# undef AMGfallYES +# undef AMT_AMAGIC +# undef AMT_AMAGIC_off +# undef AMT_AMAGIC_on +# undef AMTf_AMAGIC +# undef anchored_end_shift +# undef anchored_offset +# undef anchored_substr +# undef anchored_utf8 +# undef ANY_FEATURE_BITS_SET +# undef ANYOF +# undef ANYOF_ALNUM +# undef ANYOF_ALNUML +# undef ANYOF_ALPHA +# undef ANYOF_ALPHANUMERIC +# undef ANYOF_ASCII +# undef ANYOF_BIT +# undef ANYOF_BITMAP +# undef ANYOF_BITMAP_BYTE +# undef ANYOF_BITMAP_CLEAR +# undef ANYOF_BITMAP_CLEARALL +# undef ANYOF_BITMAP_SET +# undef ANYOF_BITMAP_SETALL +# undef ANYOF_BITMAP_SIZE +# undef ANYOF_BITMAP_TEST +# undef ANYOF_BITMAP_ZERO +# undef ANYOF_BLANK +# undef ANYOF_CASED +# undef ANYOF_CLASS_OR +# undef ANYOF_CLASS_SETALL +# undef ANYOF_CLASS_TEST_ANY_SET +# undef ANYOF_CNTRL +# undef ANYOF_COMMON_FLAGS +# undef ANYOF_DIGIT +# undef ANYOF_FLAGS +# undef ANYOF_FLAGS_ALL +# undef ANYOF_GRAPH +# undef ANYOF_HAS_AUX +# undef ANYOF_HAS_EXTRA_RUNTIME_MATCHES +# undef ANYOF_HORIZWS +# undef ANYOF_INVERT +# undef ANYOF_LOCALE_FLAGS +# undef ANYOF_LOWER +# undef ANYOF_MATCHES_ALL_OUTSIDE_BITMAP +# undef ANYOF_MATCHES_ALL_OUTSIDE_BITMAP_VALUE +# undef ANYOF_MATCHES_NONE_OUTSIDE_BITMAP +# undef ANYOF_MATCHES_NONE_OUTSIDE_BITMAP_VALUE +# undef ANYOF_MATCHES_POSIXL +# undef ANYOF_MAX +# undef ANYOF_NALNUM +# undef ANYOF_NALNUML +# undef ANYOF_NALPHA +# undef ANYOF_NALPHANUMERIC +# undef ANYOF_NASCII +# undef ANYOF_NBLANK +# undef ANYOF_NCASED +# undef ANYOF_NCNTRL +# undef ANYOF_NDIGIT +# undef ANYOF_NGRAPH +# undef ANYOF_NHORIZWS +# undef ANYOF_NLOWER +# undef ANYOF_NPRINT +# undef ANYOF_NPUNCT +# undef ANYOF_NSPACE +# undef ANYOF_NSPACEL +# undef ANYOF_NUPPER +# undef ANYOF_NVERTWS +# undef ANYOF_NWORDCHAR +# undef ANYOF_NXDIGIT +# undef ANYOF_ONLY_HAS_BITMAP +# undef ANYOF_ONLY_HAS_BITMAP_MASK +# undef ANYOF_POSIXL_AND +# undef ANYOF_POSIXL_BITMAP +# undef ANYOF_POSIXL_CLEAR +# undef ANYOF_POSIXL_MAX +# undef ANYOF_POSIXL_OR +# undef ANYOF_POSIXL_SET +# undef ANYOF_POSIXL_SET_TO_BITMAP +# undef ANYOF_POSIXL_SETALL +# undef ANYOF_POSIXL_SSC_TEST_ALL_SET +# undef ANYOF_POSIXL_SSC_TEST_ANY_SET +# undef ANYOF_POSIXL_TEST +# undef ANYOF_POSIXL_TEST_ALL_SET +# undef ANYOF_POSIXL_TEST_ANY_SET +# undef ANYOF_POSIXL_ZERO +# undef ANYOF_PRINT +# undef ANYOF_PUNCT +# undef ANYOF_SPACE +# undef ANYOF_SPACEL +# undef ANYOF_t8 +# undef ANYOF_t8_p8 +# undef ANYOF_t8_pb +# undef ANYOF_tb +# undef ANYOF_tb_p8 +# undef ANYOF_tb_pb +# undef ANYOF_UNIPROP +# undef ANYOF_UPPER +# undef ANYOF_VERTWS +# undef ANYOF_WARN_SUPER__shared +# undef ANYOF_WORDCHAR +# undef ANYOF_XDIGIT +# undef ANYOFD +# undef ANYOFD_NON_UTF8_MATCHES_ALL_NON_ASCII__shared +# undef ANYOFD_t8 +# undef ANYOFD_t8_p8 +# undef ANYOFD_t8_pb +# undef ANYOFD_tb +# undef ANYOFD_tb_p8 +# undef ANYOFD_tb_pb +# undef ANYOFH +# undef ANYOFH_t8 +# undef ANYOFH_t8_p8 +# undef ANYOFH_t8_pb +# undef ANYOFH_tb +# undef ANYOFH_tb_p8 +# undef ANYOFH_tb_pb +# undef ANYOFHb +# undef ANYOFHb_t8 +# undef ANYOFHb_t8_p8 +# undef ANYOFHb_t8_pb +# undef ANYOFHb_tb +# undef ANYOFHb_tb_p8 +# undef ANYOFHb_tb_pb +# undef ANYOFHbbm +# undef ANYOFHbbm_t8 +# undef ANYOFHbbm_t8_p8 +# undef ANYOFHbbm_t8_pb +# undef ANYOFHbbm_tb +# undef ANYOFHbbm_tb_p8 +# undef ANYOFHbbm_tb_pb +# undef ANYOFHr +# undef ANYOFHr_t8 +# undef ANYOFHr_t8_p8 +# undef ANYOFHr_t8_pb +# undef ANYOFHr_tb +# undef ANYOFHr_tb_p8 +# undef ANYOFHr_tb_pb +# undef ANYOFHs +# undef ANYOFHs_t8 +# undef ANYOFHs_t8_p8 +# undef ANYOFHs_t8_pb +# undef ANYOFHs_tb +# undef ANYOFHs_tb_p8 +# undef ANYOFHs_tb_pb +# undef ANYOFL +# undef ANYOFL_FOLD +# undef ANYOFL_t8 +# undef ANYOFL_t8_p8 +# undef ANYOFL_t8_pb +# undef ANYOFL_tb +# undef ANYOFL_tb_p8 +# undef ANYOFL_tb_pb +# undef ANYOFL_UTF8_LOCALE_REQD +# undef ANYOFM +# undef ANYOFM_t8 +# undef ANYOFM_t8_p8 +# undef ANYOFM_t8_pb +# undef ANYOFM_tb +# undef ANYOFM_tb_p8 +# undef ANYOFM_tb_pb +# undef ANYOFPOSIXL +# undef ANYOFPOSIXL_t8 +# undef ANYOFPOSIXL_t8_p8 +# undef ANYOFPOSIXL_t8_pb +# undef ANYOFPOSIXL_tb +# undef ANYOFPOSIXL_tb_p8 +# undef ANYOFPOSIXL_tb_pb +# undef ANYOFR +# undef ANYOFR_BASE_BITS +# undef ANYOFR_t8 +# undef ANYOFR_t8_p8 +# undef ANYOFR_t8_pb +# undef ANYOFR_tb +# undef ANYOFR_tb_p8 +# undef ANYOFR_tb_pb +# undef ANYOFRb +# undef ANYOFRb_t8 +# undef ANYOFRb_t8_p8 +# undef ANYOFRb_t8_pb +# undef ANYOFRb_tb +# undef ANYOFRb_tb_p8 +# undef ANYOFRb_tb_pb +# undef ANYOFRbase +# undef ANYOFRdelta +# undef ARABIC_DECIMAL_SEPARATOR_UTF8 +# undef ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE +# undef ARABIC_DECIMAL_SEPARATOR_UTF8_FIRST_BYTE_s +# undef ARABIC_DECIMAL_SEPARATOR_UTF8_TAIL +# undef ARG1a +# undef ARG1a_LOC +# undef ARG1a_SET +# undef ARG1b +# undef ARG1b_LOC +# undef ARG1b_SET +# undef ARG1i +# undef ARG1i_LOC +# undef ARG1i_SET +# undef ARG1u +# undef ARG1u_LOC +# undef ARG1u_SET +# undef ARG2a +# undef ARG2a_LOC +# undef ARG2a_SET +# undef ARG2b +# undef ARG2b_LOC +# undef ARG2b_SET +# undef ARG2i +# undef ARG2i_LOC +# undef ARG2i_SET +# undef ARG2u +# undef ARG2u_LOC +# undef ARG2u_SET +# undef ARG3a +# undef ARG3a_LOC +# undef ARG3a_SET +# undef ARG3b +# undef ARG3b_LOC +# undef ARG3b_SET +# undef ARG3i +# undef ARG3i_LOC +# undef ARG3i_SET +# undef ARG3u +# undef ARG3u_LOC +# undef ARG3u_SET +# undef ARG__SET +# undef ARG_VALUE +# undef ARGp +# undef ARGp_BYTES_LOC +# undef ARGp_SET +# undef ARGTARG +# undef ASCII_FOLD_RESTRICTED +# undef ASCII_RESTRICTED +# undef ASCII_TO_NATIVE +# undef ASSERT_CURPAD_ACTIVE +# undef ASSERT_CURPAD_LEGAL +# undef AT_LEAST_ASCII_RESTRICTED +# undef AT_LEAST_UNI_SEMANTICS +# undef aTHXa +# undef aTHXo +# undef aTHXo_ +# undef aTHXx +# undef aTHXx_ +# undef av_dup +# undef av_dup_inc +# undef AvARYLEN +# undef AvREAL_on +# undef AvREAL_only +# undef AvREALISH +# undef AvREIFY +# undef AvREIFY_off +# undef AvREIFY_on +# undef AvREIFY_only +# undef BADVERSION +# undef BASEOP +# undef BIT_BUCKET +# undef BIT_DIGITS +# undef BITMAP_BIT +# undef BITMAP_BYTE +# undef BITMAP_TEST +# undef blk_eval +# undef blk_format +# undef blk_givwhen +# undef blk_loop +# undef blk_old_tmpsfloor +# undef blk_oldmarksp +# undef blk_oldpm +# undef blk_oldscopesp +# undef blk_oldsp +# undef blk_u16 +# undef BmFLAGS +# undef BOL +# undef BOL_t8 +# undef BOL_t8_p8 +# undef BOL_t8_pb +# undef BOL_tb +# undef BOL_tb_p8 +# undef BOL_tb_pb +# undef BOM_UTF8_FIRST_BYTE +# undef BOM_UTF8_TAIL +# undef BOUND +# undef BOUND_t8 +# undef BOUND_t8_p8 +# undef BOUND_t8_pb +# undef BOUND_tb +# undef BOUND_tb_p8 +# undef BOUND_tb_pb +# undef BOUNDA +# undef BOUNDA_t8 +# undef BOUNDA_t8_p8 +# undef BOUNDA_t8_pb +# undef BOUNDA_tb +# undef BOUNDA_tb_p8 +# undef BOUNDA_tb_pb +# undef BOUNDL +# undef BOUNDL_t8 +# undef BOUNDL_t8_p8 +# undef BOUNDL_t8_pb +# undef BOUNDL_tb +# undef BOUNDL_tb_p8 +# undef BOUNDL_tb_pb +# undef BOUNDU +# undef BOUNDU_t8 +# undef BOUNDU_t8_p8 +# undef BOUNDU_t8_pb +# undef BOUNDU_tb +# undef BOUNDU_tb_p8 +# undef BOUNDU_tb_pb +# undef BRANCH +# undef BRANCH_next +# undef BRANCH_next_fail +# undef BRANCH_next_fail_t8 +# undef BRANCH_next_fail_t8_p8 +# undef BRANCH_next_fail_t8_pb +# undef BRANCH_next_fail_tb +# undef BRANCH_next_fail_tb_p8 +# undef BRANCH_next_fail_tb_pb +# undef BRANCH_next_t8 +# undef BRANCH_next_t8_p8 +# undef BRANCH_next_t8_pb +# undef BRANCH_next_tb +# undef BRANCH_next_tb_p8 +# undef BRANCH_next_tb_pb +# undef BRANCH_t8 +# undef BRANCH_t8_p8 +# undef BRANCH_t8_pb +# undef BRANCH_tb +# undef BRANCH_tb_p8 +# undef BRANCH_tb_pb +# undef BRANCHJ +# undef BRANCHJ_t8 +# undef BRANCHJ_t8_p8 +# undef BRANCHJ_t8_pb +# undef BRANCHJ_tb +# undef BRANCHJ_tb_p8 +# undef BRANCHJ_tb_pb +# undef BSD_GETPGRP +# undef BSD_SETPGRP +# undef CALL_BLOCK_HOOKS +# undef CALL_FPTR +# undef CALLREG_INTUIT_START +# undef CALLREG_INTUIT_STRING +# undef CALLREG_NAMED_BUFF_CLEAR +# undef CALLREG_NAMED_BUFF_COUNT +# undef CALLREG_NAMED_BUFF_DELETE +# undef CALLREG_NAMED_BUFF_EXISTS +# undef CALLREG_NAMED_BUFF_FIRSTKEY +# undef CALLREG_NAMED_BUFF_SCALAR +# undef CALLREG_NAMED_BUFF_STORE +# undef CALLREG_NUMBUF_FETCH +# undef CALLREG_NUMBUF_LENGTH +# undef CALLREG_NUMBUF_STORE +# undef CALLREG_PACKAGE +# undef CALLREGCOMP +# undef CALLREGDUPE +# undef CALLREGDUPE_PVT +# undef CALLREGFREE +# undef CALLREGFREE_PVT +# undef CAN64BITHASH +# undef case_100_SBOX32 +# undef case_101_SBOX32 +# undef case_102_SBOX32 +# undef case_103_SBOX32 +# undef case_104_SBOX32 +# undef case_105_SBOX32 +# undef case_106_SBOX32 +# undef case_107_SBOX32 +# undef case_108_SBOX32 +# undef case_109_SBOX32 +# undef case_10_SBOX32 +# undef case_110_SBOX32 +# undef case_111_SBOX32 +# undef case_112_SBOX32 +# undef case_113_SBOX32 +# undef case_114_SBOX32 +# undef case_115_SBOX32 +# undef case_116_SBOX32 +# undef case_117_SBOX32 +# undef case_118_SBOX32 +# undef case_119_SBOX32 +# undef case_11_SBOX32 +# undef case_120_SBOX32 +# undef case_121_SBOX32 +# undef case_122_SBOX32 +# undef case_123_SBOX32 +# undef case_124_SBOX32 +# undef case_125_SBOX32 +# undef case_126_SBOX32 +# undef case_127_SBOX32 +# undef case_128_SBOX32 +# undef case_129_SBOX32 +# undef case_12_SBOX32 +# undef case_130_SBOX32 +# undef case_131_SBOX32 +# undef case_132_SBOX32 +# undef case_133_SBOX32 +# undef case_134_SBOX32 +# undef case_135_SBOX32 +# undef case_136_SBOX32 +# undef case_137_SBOX32 +# undef case_138_SBOX32 +# undef case_139_SBOX32 +# undef case_13_SBOX32 +# undef case_140_SBOX32 +# undef case_141_SBOX32 +# undef case_142_SBOX32 +# undef case_143_SBOX32 +# undef case_144_SBOX32 +# undef case_145_SBOX32 +# undef case_146_SBOX32 +# undef case_147_SBOX32 +# undef case_148_SBOX32 +# undef case_149_SBOX32 +# undef case_14_SBOX32 +# undef case_150_SBOX32 +# undef case_151_SBOX32 +# undef case_152_SBOX32 +# undef case_153_SBOX32 +# undef case_154_SBOX32 +# undef case_155_SBOX32 +# undef case_156_SBOX32 +# undef case_157_SBOX32 +# undef case_158_SBOX32 +# undef case_159_SBOX32 +# undef case_15_SBOX32 +# undef case_160_SBOX32 +# undef case_161_SBOX32 +# undef case_162_SBOX32 +# undef case_163_SBOX32 +# undef case_164_SBOX32 +# undef case_165_SBOX32 +# undef case_166_SBOX32 +# undef case_167_SBOX32 +# undef case_168_SBOX32 +# undef case_169_SBOX32 +# undef case_16_SBOX32 +# undef case_170_SBOX32 +# undef case_171_SBOX32 +# undef case_172_SBOX32 +# undef case_173_SBOX32 +# undef case_174_SBOX32 +# undef case_175_SBOX32 +# undef case_176_SBOX32 +# undef case_177_SBOX32 +# undef case_178_SBOX32 +# undef case_179_SBOX32 +# undef case_17_SBOX32 +# undef case_180_SBOX32 +# undef case_181_SBOX32 +# undef case_182_SBOX32 +# undef case_183_SBOX32 +# undef case_184_SBOX32 +# undef case_185_SBOX32 +# undef case_186_SBOX32 +# undef case_187_SBOX32 +# undef case_188_SBOX32 +# undef case_189_SBOX32 +# undef case_18_SBOX32 +# undef case_190_SBOX32 +# undef case_191_SBOX32 +# undef case_192_SBOX32 +# undef case_193_SBOX32 +# undef case_194_SBOX32 +# undef case_195_SBOX32 +# undef case_196_SBOX32 +# undef case_197_SBOX32 +# undef case_198_SBOX32 +# undef case_199_SBOX32 +# undef case_19_SBOX32 +# undef case_1_SBOX32 +# undef case_200_SBOX32 +# undef case_201_SBOX32 +# undef case_202_SBOX32 +# undef case_203_SBOX32 +# undef case_204_SBOX32 +# undef case_205_SBOX32 +# undef case_206_SBOX32 +# undef case_207_SBOX32 +# undef case_208_SBOX32 +# undef case_209_SBOX32 +# undef case_20_SBOX32 +# undef case_210_SBOX32 +# undef case_211_SBOX32 +# undef case_212_SBOX32 +# undef case_213_SBOX32 +# undef case_214_SBOX32 +# undef case_215_SBOX32 +# undef case_216_SBOX32 +# undef case_217_SBOX32 +# undef case_218_SBOX32 +# undef case_219_SBOX32 +# undef case_21_SBOX32 +# undef case_220_SBOX32 +# undef case_221_SBOX32 +# undef case_222_SBOX32 +# undef case_223_SBOX32 +# undef case_224_SBOX32 +# undef case_225_SBOX32 +# undef case_226_SBOX32 +# undef case_227_SBOX32 +# undef case_228_SBOX32 +# undef case_229_SBOX32 +# undef case_22_SBOX32 +# undef case_230_SBOX32 +# undef case_231_SBOX32 +# undef case_232_SBOX32 +# undef case_233_SBOX32 +# undef case_234_SBOX32 +# undef case_235_SBOX32 +# undef case_236_SBOX32 +# undef case_237_SBOX32 +# undef case_238_SBOX32 +# undef case_239_SBOX32 +# undef case_23_SBOX32 +# undef case_240_SBOX32 +# undef case_241_SBOX32 +# undef case_242_SBOX32 +# undef case_243_SBOX32 +# undef case_244_SBOX32 +# undef case_245_SBOX32 +# undef case_246_SBOX32 +# undef case_247_SBOX32 +# undef case_248_SBOX32 +# undef case_249_SBOX32 +# undef case_24_SBOX32 +# undef case_250_SBOX32 +# undef case_251_SBOX32 +# undef case_252_SBOX32 +# undef case_253_SBOX32 +# undef case_254_SBOX32 +# undef case_255_SBOX32 +# undef case_256_SBOX32 +# undef case_25_SBOX32 +# undef case_26_SBOX32 +# undef case_27_SBOX32 +# undef case_28_SBOX32 +# undef case_29_SBOX32 +# undef case_2_SBOX32 +# undef case_30_SBOX32 +# undef case_31_SBOX32 +# undef case_32_SBOX32 +# undef case_33_SBOX32 +# undef case_34_SBOX32 +# undef case_35_SBOX32 +# undef case_36_SBOX32 +# undef case_37_SBOX32 +# undef case_38_SBOX32 +# undef case_39_SBOX32 +# undef case_3_SBOX32 +# undef case_40_SBOX32 +# undef case_41_SBOX32 +# undef case_42_SBOX32 +# undef case_43_SBOX32 +# undef case_44_SBOX32 +# undef case_45_SBOX32 +# undef case_46_SBOX32 +# undef case_47_SBOX32 +# undef case_48_SBOX32 +# undef case_49_SBOX32 +# undef case_4_SBOX32 +# undef case_50_SBOX32 +# undef case_51_SBOX32 +# undef case_52_SBOX32 +# undef case_53_SBOX32 +# undef case_54_SBOX32 +# undef case_55_SBOX32 +# undef case_56_SBOX32 +# undef case_57_SBOX32 +# undef case_58_SBOX32 +# undef case_59_SBOX32 +# undef case_5_SBOX32 +# undef case_60_SBOX32 +# undef case_61_SBOX32 +# undef case_62_SBOX32 +# undef case_63_SBOX32 +# undef case_64_SBOX32 +# undef case_65_SBOX32 +# undef case_66_SBOX32 +# undef case_67_SBOX32 +# undef case_68_SBOX32 +# undef case_69_SBOX32 +# undef case_6_SBOX32 +# undef case_70_SBOX32 +# undef case_71_SBOX32 +# undef case_72_SBOX32 +# undef case_73_SBOX32 +# undef case_74_SBOX32 +# undef case_75_SBOX32 +# undef case_76_SBOX32 +# undef case_77_SBOX32 +# undef case_78_SBOX32 +# undef case_79_SBOX32 +# undef case_7_SBOX32 +# undef case_80_SBOX32 +# undef case_81_SBOX32 +# undef case_82_SBOX32 +# undef case_83_SBOX32 +# undef case_84_SBOX32 +# undef case_85_SBOX32 +# undef case_86_SBOX32 +# undef case_87_SBOX32 +# undef case_88_SBOX32 +# undef case_89_SBOX32 +# undef case_8_SBOX32 +# undef case_90_SBOX32 +# undef case_91_SBOX32 +# undef case_92_SBOX32 +# undef case_93_SBOX32 +# undef case_94_SBOX32 +# undef case_95_SBOX32 +# undef case_96_SBOX32 +# undef case_97_SBOX32 +# undef case_98_SBOX32 +# undef case_99_SBOX32 +# undef case_9_SBOX32 +# undef cBINOP +# undef cBINOPo +# undef CC_NON_FINAL_FOLD_ +# undef cCOP +# undef cGVOP_gv +# undef cGVOPo_gv +# undef cGVOPx_gv +# undef CHARSET_PAT_MODS +# undef check_end_shift +# undef CHECK_MALLOC_TAINT +# undef CHECK_MALLOC_TOO_LATE_FOR +# undef CHECK_MALLOC_TOO_LATE_FOR_ +# undef check_offset_max +# undef check_offset_min +# undef check_substr +# undef check_utf8 +# undef child_offset_bits +# undef CHR_SVLEN +# undef ckWARN2_non_literal_string +# undef ckWARN2reg +# undef ckWARN2reg_d +# undef ckWARN3reg +# undef ckWARN4reg +# undef ckWARNdep +# undef ckWARNexperimental +# undef ckWARNexperimental_with_arg +# undef ckWARNreg +# undef ckWARNregdep +# undef classnum_to_namedclass +# undef CLEAR_ARGARRAY +# undef CLEAR_OPTSTART +# undef CLEARFEATUREBITS +# undef cLISTOP +# undef cLOGOP +# undef cLOOP +# undef CLOSE +# undef CLOSE_t8 +# undef CLOSE_t8_p8 +# undef CLOSE_t8_pb +# undef CLOSE_tb +# undef CLOSE_tb_p8 +# undef CLOSE_tb_pb +# undef CLUMP +# undef CLUMP_2IV +# undef CLUMP_2UV +# undef CLUMP_t8 +# undef CLUMP_t8_p8 +# undef CLUMP_t8_pb +# undef CLUMP_tb +# undef CLUMP_tb_p8 +# undef CLUMP_tb_pb +# undef cMETHOP +# undef cMETHOP_meth +# undef cMETHOP_rclass +# undef cMETHOPo_meth +# undef cMETHOPo_rclass +# undef cMETHOPx_meth +# undef cMETHOPx_rclass +# undef COMBINING_DOT_ABOVE_UTF8 +# undef COMBINING_GRAVE_ACCENT_UTF8 +# undef COMBINING_GREEK_YPOGEGRAMMENI_UTF8 +# undef COMMIT +# undef COMMIT_next +# undef COMMIT_next_fail +# undef COMMIT_next_fail_t8 +# undef COMMIT_next_fail_t8_p8 +# undef COMMIT_next_fail_t8_pb +# undef COMMIT_next_fail_tb +# undef COMMIT_next_fail_tb_p8 +# undef COMMIT_next_fail_tb_pb +# undef COMMIT_next_t8 +# undef COMMIT_next_t8_p8 +# undef COMMIT_next_t8_pb +# undef COMMIT_next_tb +# undef COMMIT_next_tb_p8 +# undef COMMIT_next_tb_pb +# undef COMMIT_t8 +# undef COMMIT_t8_p8 +# undef COMMIT_t8_pb +# undef COMMIT_tb +# undef COMMIT_tb_p8 +# undef COMMIT_tb_pb +# undef COP_SEQ_RANGE_HIGH +# undef COP_SEQ_RANGE_LOW +# undef COP_SEQMAX_INC +# undef CopFEATURES_setfrom +# undef CopFILE_copy_x +# undef CopFILE_debug +# undef CopFILE_free_x +# undef CopFILE_set_x +# undef CopFILE_setn_x +# undef CopFILEAVx +# undef COPHH_EXISTS +# undef cophh_exists_pv +# undef cophh_exists_pvs +# undef cophh_exists_sv +# undef CopHINTHASH_set +# undef CopHINTS_set +# undef CopLABEL_alloc +# undef CopLINE_dec +# undef CopLINE_inc +# undef CopLINE_set +# undef CopSTASH_ne +# undef copy_length +# undef cPADOP +# undef cPADOPo +# undef cPADOPx +# undef cPMOP +# undef cPVOP +# undef CR_NATIVE +# undef cSVOP +# undef cSVOP_sv +# undef cSVOPx_svp +# undef Ctl +# undef cUNOP +# undef cUNOP_AUX +# undef CURLY +# undef CURLY_B_max +# undef CURLY_B_max_fail +# undef CURLY_B_max_fail_t8 +# undef CURLY_B_max_fail_t8_p8 +# undef CURLY_B_max_fail_t8_pb +# undef CURLY_B_max_fail_tb +# undef CURLY_B_max_fail_tb_p8 +# undef CURLY_B_max_fail_tb_pb +# undef CURLY_B_max_t8 +# undef CURLY_B_max_t8_p8 +# undef CURLY_B_max_t8_pb +# undef CURLY_B_max_tb +# undef CURLY_B_max_tb_p8 +# undef CURLY_B_max_tb_pb +# undef CURLY_B_min +# undef CURLY_B_min_fail +# undef CURLY_B_min_fail_t8 +# undef CURLY_B_min_fail_t8_p8 +# undef CURLY_B_min_fail_t8_pb +# undef CURLY_B_min_fail_tb +# undef CURLY_B_min_fail_tb_p8 +# undef CURLY_B_min_fail_tb_pb +# undef CURLY_B_min_t8 +# undef CURLY_B_min_t8_p8 +# undef CURLY_B_min_t8_pb +# undef CURLY_B_min_tb +# undef CURLY_B_min_tb_p8 +# undef CURLY_B_min_tb_pb +# undef CURLY_t8 +# undef CURLY_t8_p8 +# undef CURLY_t8_pb +# undef CURLY_tb +# undef CURLY_tb_p8 +# undef CURLY_tb_pb +# undef CURLYM +# undef CURLYM_A +# undef CURLYM_A_fail +# undef CURLYM_A_fail_t8 +# undef CURLYM_A_fail_t8_p8 +# undef CURLYM_A_fail_t8_pb +# undef CURLYM_A_fail_tb +# undef CURLYM_A_fail_tb_p8 +# undef CURLYM_A_fail_tb_pb +# undef CURLYM_A_t8 +# undef CURLYM_A_t8_p8 +# undef CURLYM_A_t8_pb +# undef CURLYM_A_tb +# undef CURLYM_A_tb_p8 +# undef CURLYM_A_tb_pb +# undef CURLYM_B +# undef CURLYM_B_fail +# undef CURLYM_B_fail_t8 +# undef CURLYM_B_fail_t8_p8 +# undef CURLYM_B_fail_t8_pb +# undef CURLYM_B_fail_tb +# undef CURLYM_B_fail_tb_p8 +# undef CURLYM_B_fail_tb_pb +# undef CURLYM_B_t8 +# undef CURLYM_B_t8_p8 +# undef CURLYM_B_t8_pb +# undef CURLYM_B_tb +# undef CURLYM_B_tb_p8 +# undef CURLYM_B_tb_pb +# undef CURLYM_t8 +# undef CURLYM_t8_p8 +# undef CURLYM_t8_pb +# undef CURLYM_tb +# undef CURLYM_tb_p8 +# undef CURLYM_tb_pb +# undef CURLYN +# undef CURLYN_t8 +# undef CURLYN_t8_p8 +# undef CURLYN_t8_pb +# undef CURLYN_tb +# undef CURLYN_tb_p8 +# undef CURLYN_tb_pb +# undef CURLYX +# undef CURLYX_end +# undef CURLYX_end_fail +# undef CURLYX_end_fail_t8 +# undef CURLYX_end_fail_t8_p8 +# undef CURLYX_end_fail_t8_pb +# undef CURLYX_end_fail_tb +# undef CURLYX_end_fail_tb_p8 +# undef CURLYX_end_fail_tb_pb +# undef CURLYX_end_t8 +# undef CURLYX_end_t8_p8 +# undef CURLYX_end_t8_pb +# undef CURLYX_end_tb +# undef CURLYX_end_tb_p8 +# undef CURLYX_end_tb_pb +# undef CURLYX_t8 +# undef CURLYX_t8_p8 +# undef CURLYX_t8_pb +# undef CURLYX_tb +# undef CURLYX_tb_p8 +# undef CURLYX_tb_pb +# undef CURRENT_FEATURE_BUNDLE +# undef CURRENT_HINTS +# undef CUTGROUP +# undef CUTGROUP_next +# undef CUTGROUP_next_fail +# undef CUTGROUP_next_fail_t8 +# undef CUTGROUP_next_fail_t8_p8 +# undef CUTGROUP_next_fail_t8_pb +# undef CUTGROUP_next_fail_tb +# undef CUTGROUP_next_fail_tb_p8 +# undef CUTGROUP_next_fail_tb_pb +# undef CUTGROUP_next_t8 +# undef CUTGROUP_next_t8_p8 +# undef CUTGROUP_next_t8_pb +# undef CUTGROUP_next_tb +# undef CUTGROUP_next_tb_p8 +# undef CUTGROUP_next_tb_pb +# undef CUTGROUP_t8 +# undef CUTGROUP_t8_p8 +# undef CUTGROUP_t8_pb +# undef CUTGROUP_tb +# undef CUTGROUP_tb_p8 +# undef CUTGROUP_tb_pb +# undef cv_ckproto +# undef cv_dup +# undef cv_dup_inc +# undef CV_UNDEF_KEEP_NAME +# undef CvANON_on +# undef CvAUTOLOAD +# undef CvAUTOLOAD_off +# undef CvAUTOLOAD_on +# undef CvCLONE +# undef CvCLONE_off +# undef CvCLONE_on +# undef CvCLONED_off +# undef CvCLONED_on +# undef CvCVGV_RC +# undef CvCVGV_RC_off +# undef CvCVGV_RC_on +# undef CvDEPTHunsafe +# undef CvDYNFILE +# undef CvDYNFILE_off +# undef CvDYNFILE_on +# undef CvEVAL +# undef CvEVAL_COMPILED +# undef CvEVAL_COMPILED_off +# undef CvEVAL_COMPILED_on +# undef CvEVAL_off +# undef CvEVAL_on +# undef CVf_BUILTIN_ATTRS +# undef CVf_METHOD +# undef CvFILE +# undef CvFILE_set_from_cop +# undef CvFILEGV +# undef CvGvNAME_HEK +# undef CvHASEVAL +# undef CvHASEVAL_off +# undef CvHASEVAL_on +# undef CvHASGV +# undef CvIsMETHOD +# undef CvIsMETHOD_off +# undef CvIsMETHOD_on +# undef CvISXSUB_off +# undef CvLEXICAL +# undef CvLEXICAL_off +# undef CvLEXICAL_on +# undef CvLVALUE_off +# undef CvMETHOD +# undef CvMETHOD_off +# undef CvMETHOD_on +# undef CvNAME_HEK_set +# undef CvNAMED_off +# undef CvNAMED_on +# undef CvNODEBUG +# undef CvNODEBUG_off +# undef CvNODEBUG_on +# undef CvNOWARN_AMBIGUOUS +# undef CvNOWARN_AMBIGUOUS_off +# undef CvNOWARN_AMBIGUOUS_on +# undef CvOUTSIDE +# undef CvOUTSIDE_SEQ +# undef CvPADLIST_set +# undef CvPROTO +# undef CvPROTOLEN +# undef CvREFCOUNTED_ANYSV +# undef CvREFCOUNTED_ANYSV_off +# undef CvSIGNATURE +# undef CvSIGNATURE_off +# undef CvSIGNATURE_on +# undef CvSLABBED +# undef CvSLABBED_off +# undef CvSLABBED_on +# undef CvSPECIAL +# undef CvSPECIAL_off +# undef CvSPECIAL_on +# undef CvSTASH_set +# undef CvUNIQUE +# undef CvUNIQUE_off +# undef CvUNIQUE_on +# undef CvWEAKOUTSIDE +# undef CvWEAKOUTSIDE_off +# undef CvWEAKOUTSIDE_on +# undef CvXS_RCSTACK +# undef CX_CURPAD_SAVE +# undef CX_CURPAD_SV +# undef CX_DEBUG +# undef CX_POP_SAVEARRAY +# undef CX_POPSUBST +# undef CX_PUSHSUB_GET_LVALUE_MASK +# undef CX_PUSHSUBST +# undef CxEVAL_TXT_REFCNTED +# undef CxEVALBLOCK +# undef CxFOREACH +# undef CxHASARGS +# undef CxITERVAR +# undef CxLABEL +# undef CxLABEL_len +# undef CxLABEL_len_flags +# undef CxLVAL +# undef CxOLD_IN_EVAL +# undef CxOLD_OP_TYPE +# undef CxONCE +# undef CXp_TRYBLOCK +# undef CxPADLOOP +# undef CxREALEVAL +# undef cxstack_max +# undef CxTRY +# undef CxTRYBLOCK +# undef CxTYPE_is_LOOP +# undef dATARGET +# undef DBVARMG_COUNT +# undef DBVARMG_SIGNAL +# undef DBVARMG_SINGLE +# undef DBVARMG_TRACE +# undef DEBUG_A +# undef DEBUG_A_FLAG +# undef DEBUG_A_TEST +# undef DEBUG_A_TEST_ +# undef DEBUG_B +# undef DEBUG_B_FLAG +# undef DEBUG_B_TEST +# undef DEBUG_B_TEST_ +# undef DEBUG_BUFFERS_r +# undef DEBUG_c +# undef DEBUG_c_FLAG +# undef DEBUG_c_TEST +# undef DEBUG_c_TEST_ +# undef DEBUG_COMPILE_r +# undef DEBUG_D +# undef DEBUG_D_FLAG +# undef DEBUG_D_TEST +# undef DEBUG_D_TEST_ +# undef DEBUG_DB_RECURSE_FLAG +# undef DEBUG_DUMP_PRE_OPTIMIZE_r +# undef DEBUG_DUMP_r +# undef DEBUG_EXECUTE_r +# undef DEBUG_EXTRA_r +# undef DEBUG_f +# undef DEBUG_f_FLAG +# undef DEBUG_f_TEST +# undef DEBUG_f_TEST_ +# undef DEBUG_FLAGS_r +# undef DEBUG_GPOS_r +# undef DEBUG_h_FLAG +# undef DEBUG_h_TEST +# undef DEBUG_h_TEST_ +# undef DEBUG_i +# undef DEBUG_i_FLAG +# undef DEBUG_i_TEST +# undef DEBUG_i_TEST_ +# undef DEBUG_INTUIT_r +# undef DEBUG_J_FLAG +# undef DEBUG_J_TEST +# undef DEBUG_J_TEST_ +# undef DEBUG_L +# undef DEBUG_L_TEST +# undef DEBUG_L_TEST_ +# undef DEBUG_M +# undef DEBUG_m +# undef DEBUG_M_FLAG +# undef DEBUG_m_FLAG +# undef DEBUG_M_TEST +# undef DEBUG_m_TEST +# undef DEBUG_M_TEST_ +# undef DEBUG_m_TEST_ +# undef DEBUG_MASK +# undef DEBUG_MATCH_r +# undef DEBUG_o +# undef DEBUG_o_FLAG +# undef DEBUG_o_TEST +# undef DEBUG_o_TEST_ +# undef DEBUG_OPTIMISE_MORE_r +# undef DEBUG_OPTIMISE_r +# undef DEBUG_P +# undef DEBUG_p +# undef DEBUG_P_FLAG +# undef DEBUG_p_FLAG +# undef DEBUG_P_TEST +# undef DEBUG_p_TEST +# undef DEBUG_P_TEST_ +# undef DEBUG_p_TEST_ +# undef DEBUG_PARSE_r +# undef DEBUG_PEEP +# undef DEBUG_Pv +# undef DEBUG_Pv_TEST +# undef DEBUG_Pv_TEST_ +# undef DEBUG_q +# undef DEBUG_q_FLAG +# undef DEBUG_q_TEST +# undef DEBUG_q_TEST_ +# undef DEBUG_R +# undef DEBUG_R_FLAG +# undef DEBUG_R_TEST +# undef DEBUG_r_TEST +# undef DEBUG_R_TEST_ +# undef DEBUG_r_TEST_ +# undef DEBUG_RExC_seen +# undef DEBUG_S +# undef DEBUG_S_FLAG +# undef DEBUG_S_TEST +# undef DEBUG_S_TEST_ +# undef DEBUG_SHOW_STUDY_FLAG +# undef DEBUG_STACK_r +# undef DEBUG_STATE_r +# undef DEBUG_STUDYDATA +# undef DEBUG_T +# undef DEBUG_t +# undef DEBUG_T_FLAG +# undef DEBUG_t_FLAG +# undef DEBUG_T_TEST +# undef DEBUG_t_TEST +# undef DEBUG_T_TEST_ +# undef DEBUG_t_TEST_ +# undef DEBUG_TEST_r +# undef DEBUG_TOP_FLAG +# undef DEBUG_TRIE_COMPILE_MORE_r +# undef DEBUG_TRIE_COMPILE_r +# undef DEBUG_TRIE_EXECUTE_MORE_r +# undef DEBUG_TRIE_EXECUTE_r +# undef DEBUG_TRIE_r +# undef DEBUG_U +# undef DEBUG_u +# undef DEBUG_U_FLAG +# undef DEBUG_u_FLAG +# undef DEBUG_U_TEST +# undef DEBUG_u_TEST +# undef DEBUG_U_TEST_ +# undef DEBUG_u_TEST_ +# undef DEBUG_Uv +# undef DEBUG_Uv_TEST +# undef DEBUG_Uv_TEST_ +# undef DEBUG_X +# undef DEBUG_x +# undef DEBUG_x_FLAG +# undef DEBUG_X_TEST +# undef DEBUG_x_TEST +# undef DEBUG_X_TEST_ +# undef DEBUG_x_TEST_ +# undef DEBUG_y +# undef DEBUG_y_FLAG +# undef DEBUG_y_TEST +# undef DEBUG_yv +# undef DEBUG_yv_TEST +# undef DEBUG_yv_TEST_ +# undef DECLARE_AND_GET_RE_DEBUG_FLAGS +# undef DECLARE_AND_GET_RE_DEBUG_FLAGS_NON_REGEX +# undef DEFERRED_COULD_BE_OFFICIAL_MARKERc +# undef DEFERRED_COULD_BE_OFFICIAL_MARKERs +# undef DEFERRED_USER_DEFINED_INDEX +# undef DEFINEP +# undef DEFINEP_t8 +# undef DEFINEP_t8_p8 +# undef DEFINEP_t8_pb +# undef DEFINEP_tb +# undef DEFINEP_tb_p8 +# undef DEFINEP_tb_pb +# undef del_body_by_type +# undef DEL_NATIVE +# undef DEPENDS_SEMANTICS +# undef deprecate +# undef deprecate_disappears_in +# undef deprecate_fatal_in +# undef DEPRECATED_OPENING_NON_UTF8_BRACKETS +# undef DEPRECATED_OPENING_UTF8_BRACKETS +# undef DFA_RETURN_FAILURE_ +# undef DFA_RETURN_SUCCESS_ +# undef DFA_TEASE_APART_FF_ +# undef DIE +# undef DISABLE_LC_NUMERIC_CHANGES +# undef djSP +# undef DM_ARRAY_ISA +# undef DM_DELAY +# undef DM_EGID +# undef DM_EUID +# undef DM_GID +# undef DM_RGID +# undef DM_RUID +# undef DM_UID +# undef do_aexec +# undef do_exec +# undef DOUBLE_BIG_ENDIAN +# undef DOUBLE_HAS_INF +# undef DOUBLE_IS_IEEE_FORMAT +# undef DOUBLE_IS_VAX_FLOAT +# undef DOUBLE_LITTLE_ENDIAN +# undef DOUBLE_MIX_ENDIAN +# undef DOUBLE_VAX_ENDIAN +# undef dPOPiv +# undef dPOPnv +# undef dPOPnv_nomg +# undef dPOPPOPiirl +# undef dPOPPOPnnrl +# undef dPOPPOPssrl +# undef dPOPss +# undef dPOPTOPiirl +# undef dPOPTOPiirl_nomg +# undef dPOPTOPiirl_ul_nomg +# undef dPOPTOPnnrl +# undef dPOPTOPnnrl_nomg +# undef dPOPTOPssrl +# undef dPOPuv +# undef dPOPXiirl +# undef dPOPXiirl_ul_nomg +# undef dPOPXnnrl +# undef dPOPXssrl +# undef dSS_ADD +# undef dTARGETSTACKED +# undef dTHX_DEBUGGING +# undef dTHXo +# undef dTHXs +# undef dTHXx +# undef dTOPiv +# undef dTOPnv +# undef dTOPss +# undef dTOPuv +# undef DUMP_FEATURE_BITS +# undef DUMPUNTIL +# undef DUP_WARNINGS +# undef dXSUB_SYS +# undef eC +# undef eI +# undef ELEMENT_RANGE_MATCHES_INVLIST +# undef EMBEDMYMALLOC +# undef EMULATE_THREAD_SAFE_LOCALES +# undef END +# undef END_t8 +# undef END_t8_p8 +# undef END_t8_pb +# undef END_tb +# undef END_tb_p8 +# undef END_tb_pb +# undef ENDGRENT_R_HAS_FPTR +# undef ENDLIKE +# undef ENDLIKE_t8 +# undef ENDLIKE_t8_p8 +# undef ENDLIKE_t8_pb +# undef ENDLIKE_tb +# undef ENDLIKE_tb_p8 +# undef ENDLIKE_tb_pb +# undef ENDPWENT_R_HAS_FPTR +# undef ENV_INIT +# undef ENV_TERM +# undef environ +# undef EOL +# undef EOL_t8 +# undef EOL_t8_p8 +# undef EOL_t8_pb +# undef EOL_tb +# undef EOL_tb_p8 +# undef EOL_tb_pb +# undef EOS +# undef EOS_t8 +# undef EOS_t8_p8 +# undef EOS_t8_pb +# undef EOS_tb +# undef EOS_tb_p8 +# undef EOS_tb_pb +# undef EVAL +# undef EVAL_B +# undef EVAL_B_fail +# undef EVAL_B_fail_t8 +# undef EVAL_B_fail_t8_p8 +# undef EVAL_B_fail_t8_pb +# undef EVAL_B_fail_tb +# undef EVAL_B_fail_tb_p8 +# undef EVAL_B_fail_tb_pb +# undef EVAL_B_t8 +# undef EVAL_B_t8_p8 +# undef EVAL_B_t8_pb +# undef EVAL_B_tb +# undef EVAL_B_tb_p8 +# undef EVAL_B_tb_pb +# undef EVAL_FLAGS_MASK +# undef EVAL_OPTIMISTIC_FLAG +# undef EVAL_postponed_AB +# undef EVAL_postponed_AB_fail +# undef EVAL_postponed_AB_fail_t8 +# undef EVAL_postponed_AB_fail_t8_p8 +# undef EVAL_postponed_AB_fail_t8_pb +# undef EVAL_postponed_AB_fail_tb +# undef EVAL_postponed_AB_fail_tb_p8 +# undef EVAL_postponed_AB_fail_tb_pb +# undef EVAL_postponed_AB_t8 +# undef EVAL_postponed_AB_t8_p8 +# undef EVAL_postponed_AB_t8_pb +# undef EVAL_postponed_AB_tb +# undef EVAL_postponed_AB_tb_p8 +# undef EVAL_postponed_AB_tb_pb +# undef EVAL_t8 +# undef EVAL_t8_p8 +# undef EVAL_t8_pb +# undef EVAL_tb +# undef EVAL_tb_p8 +# undef EVAL_tb_pb +# undef EXACT +# undef EXACT_REQ8 +# undef EXACT_REQ8_t8 +# undef EXACT_REQ8_t8_p8 +# undef EXACT_REQ8_t8_pb +# undef EXACT_REQ8_tb +# undef EXACT_REQ8_tb_p8 +# undef EXACT_REQ8_tb_pb +# undef EXACT_t8 +# undef EXACT_t8_p8 +# undef EXACT_t8_pb +# undef EXACT_tb +# undef EXACT_tb_p8 +# undef EXACT_tb_pb +# undef EXACTF +# undef EXACTF_t8 +# undef EXACTF_t8_p8 +# undef EXACTF_t8_pb +# undef EXACTF_tb +# undef EXACTF_tb_p8 +# undef EXACTF_tb_pb +# undef EXACTFAA +# undef EXACTFAA_NO_TRIE +# undef EXACTFAA_NO_TRIE_t8 +# undef EXACTFAA_NO_TRIE_t8_p8 +# undef EXACTFAA_NO_TRIE_t8_pb +# undef EXACTFAA_NO_TRIE_tb +# undef EXACTFAA_NO_TRIE_tb_p8 +# undef EXACTFAA_NO_TRIE_tb_pb +# undef EXACTFAA_t8 +# undef EXACTFAA_t8_p8 +# undef EXACTFAA_t8_pb +# undef EXACTFAA_tb +# undef EXACTFAA_tb_p8 +# undef EXACTFAA_tb_pb +# undef EXACTFL +# undef EXACTFL_t8 +# undef EXACTFL_t8_p8 +# undef EXACTFL_t8_pb +# undef EXACTFL_tb +# undef EXACTFL_tb_p8 +# undef EXACTFL_tb_pb +# undef EXACTFLU8 +# undef EXACTFLU8_t8 +# undef EXACTFLU8_t8_p8 +# undef EXACTFLU8_t8_pb +# undef EXACTFLU8_tb +# undef EXACTFLU8_tb_p8 +# undef EXACTFLU8_tb_pb +# undef EXACTFU +# undef EXACTFU_REQ8 +# undef EXACTFU_REQ8_t8 +# undef EXACTFU_REQ8_t8_p8 +# undef EXACTFU_REQ8_t8_pb +# undef EXACTFU_REQ8_tb +# undef EXACTFU_REQ8_tb_p8 +# undef EXACTFU_REQ8_tb_pb +# undef EXACTFU_S_EDGE +# undef EXACTFU_S_EDGE_t8 +# undef EXACTFU_S_EDGE_t8_p8 +# undef EXACTFU_S_EDGE_t8_pb +# undef EXACTFU_S_EDGE_tb +# undef EXACTFU_S_EDGE_tb_p8 +# undef EXACTFU_S_EDGE_tb_pb +# undef EXACTFU_t8 +# undef EXACTFU_t8_p8 +# undef EXACTFU_t8_pb +# undef EXACTFU_tb +# undef EXACTFU_tb_p8 +# undef EXACTFU_tb_pb +# undef EXACTFUP +# undef EXACTFUP_t8 +# undef EXACTFUP_t8_p8 +# undef EXACTFUP_t8_pb +# undef EXACTFUP_tb +# undef EXACTFUP_tb_p8 +# undef EXACTFUP_tb_pb +# undef EXACTL +# undef EXACTL_t8 +# undef EXACTL_t8_p8 +# undef EXACTL_t8_pb +# undef EXACTL_tb +# undef EXACTL_tb_p8 +# undef EXACTL_tb_pb +# undef EXEC_PAT_MOD +# undef EXEC_PAT_MODS +# undef EXPERIMENTAL_INPLACESCAN +# undef EXT_MGVTBL +# undef EXT_PAT_MODS +# undef EXTEND_MORTAL +# undef EXTEND_SKIP +# undef EXTRA_CLOSING_NON_UTF8_BRACKETS +# undef EXTRA_CLOSING_UTF8_BRACKETS +# undef EXTRA_OPENING_NON_UTF8_BRACKETS +# undef EXTRA_OPENING_UTF8_BRACKETS +# undef EXTRA_SIZE +# undef F_atan2_amg +# undef F_cos_amg +# undef F_exp_amg +# undef F_log_amg +# undef F_pow_amg +# undef F_sin_amg +# undef F_sqrt_amg +# undef FAIL +# undef FAIL2 +# undef FAIL3 +# undef FAIL_ +# undef FAKE_BIT_BUCKET +# undef FAKE_DEFAULT_SIGNAL_HANDLERS +# undef FAKE_PERSISTENT_SIGNAL_HANDLERS +# undef FATAL_ABOVE_FF_MSG +# undef FEATURE___SUB___BIT +# undef FEATURE___SUB___INDEX +# undef FEATURE___SUB___IS_ENABLED +# undef FEATURE_APOS_AS_NAME_SEP_BIT +# undef FEATURE_APOS_AS_NAME_SEP_INDEX +# undef FEATURE_APOS_AS_NAME_SEP_IS_ENABLED +# undef FEATURE_BAREWORD_FILEHANDLES_BIT +# undef FEATURE_BAREWORD_FILEHANDLES_INDEX +# undef FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED +# undef FEATURE_BITWISE_BIT +# undef FEATURE_BITWISE_INDEX +# undef FEATURE_BITWISE_IS_ENABLED +# undef FEATURE_BUNDLE_510 +# undef FEATURE_BUNDLE_511 +# undef FEATURE_BUNDLE_515 +# undef FEATURE_BUNDLE_523 +# undef FEATURE_BUNDLE_527 +# undef FEATURE_BUNDLE_535 +# undef FEATURE_BUNDLE_537 +# undef FEATURE_BUNDLE_539 +# undef FEATURE_BUNDLE_541 +# undef FEATURE_BUNDLE_CUSTOM +# undef FEATURE_BUNDLE_DEFAULT +# undef FEATURE_CLASS_BIT +# undef FEATURE_CLASS_INDEX +# undef FEATURE_CLASS_IS_ENABLED +# undef FEATURE_DEFER_BIT +# undef FEATURE_DEFER_INDEX +# undef FEATURE_DEFER_IS_ENABLED +# undef FEATURE_EVALBYTES_BIT +# undef FEATURE_EVALBYTES_INDEX +# undef FEATURE_EVALBYTES_IS_ENABLED +# undef FEATURE_FC_BIT +# undef FEATURE_FC_INDEX +# undef FEATURE_FC_IS_ENABLED +# undef FEATURE_INDIRECT_BIT +# undef FEATURE_INDIRECT_INDEX +# undef FEATURE_INDIRECT_IS_ENABLED +# undef FEATURE_IS_ENABLED_MASK +# undef FEATURE_ISA_BIT +# undef FEATURE_ISA_INDEX +# undef FEATURE_ISA_IS_ENABLED +# undef FEATURE_KEYWORD_ALL_BIT +# undef FEATURE_KEYWORD_ALL_INDEX +# undef FEATURE_KEYWORD_ALL_IS_ENABLED +# undef FEATURE_KEYWORD_ANY_BIT +# undef FEATURE_KEYWORD_ANY_INDEX +# undef FEATURE_KEYWORD_ANY_IS_ENABLED +# undef FEATURE_MODULE_TRUE_BIT +# undef FEATURE_MODULE_TRUE_INDEX +# undef FEATURE_MODULE_TRUE_IS_ENABLED +# undef FEATURE_MORE_DELIMS_BIT +# undef FEATURE_MORE_DELIMS_INDEX +# undef FEATURE_MORE_DELIMS_IS_ENABLED +# undef FEATURE_MULTIDIMENSIONAL_BIT +# undef FEATURE_MULTIDIMENSIONAL_INDEX +# undef FEATURE_MULTIDIMENSIONAL_IS_ENABLED +# undef FEATURE_MYREF_BIT +# undef FEATURE_MYREF_INDEX +# undef FEATURE_MYREF_IS_ENABLED +# undef FEATURE_POSTDEREF_QQ_BIT +# undef FEATURE_POSTDEREF_QQ_INDEX +# undef FEATURE_POSTDEREF_QQ_IS_ENABLED +# undef FEATURE_REFALIASING_BIT +# undef FEATURE_REFALIASING_INDEX +# undef FEATURE_REFALIASING_IS_ENABLED +# undef FEATURE_SAY_BIT +# undef FEATURE_SAY_INDEX +# undef FEATURE_SAY_IS_ENABLED +# undef FEATURE_SIGNATURES_BIT +# undef FEATURE_SIGNATURES_INDEX +# undef FEATURE_SIGNATURES_IS_ENABLED +# undef FEATURE_SMARTMATCH_BIT +# undef FEATURE_SMARTMATCH_INDEX +# undef FEATURE_SMARTMATCH_IS_ENABLED +# undef FEATURE_STATE_BIT +# undef FEATURE_STATE_INDEX +# undef FEATURE_STATE_IS_ENABLED +# undef FEATURE_SWITCH_BIT +# undef FEATURE_SWITCH_INDEX +# undef FEATURE_SWITCH_IS_ENABLED +# undef FEATURE_TRY_BIT +# undef FEATURE_TRY_INDEX +# undef FEATURE_TRY_IS_ENABLED +# undef FEATURE_UNICODE_BIT +# undef FEATURE_UNICODE_INDEX +# undef FEATURE_UNICODE_IS_ENABLED +# undef FEATURE_UNIEVAL_BIT +# undef FEATURE_UNIEVAL_INDEX +# undef FEATURE_UNIEVAL_IS_ENABLED +# undef FETCHFEATUREBITSHH +# undef FF_0DECIMAL +# undef FF_BLANK +# undef FF_CHECKCHOP +# undef FF_CHECKNL +# undef FF_CHOP +# undef FF_DECIMAL +# undef FF_END +# undef FF_FETCH +# undef FF_HALFSPACE +# undef FF_ITEM +# undef FF_LINEGLOB +# undef FF_LINEMARK +# undef FF_LINESNGL +# undef FF_LITERAL +# undef FF_MORE +# undef FF_NEWLINE +# undef FF_SKIP +# undef FF_SPACE +# undef Fflush +# undef FILL_ADVANCE_NODE +# undef FILL_ADVANCE_NODE_2ui_ARG +# undef FILL_ADVANCE_NODE_ARG1u +# undef FILL_ADVANCE_NODE_ARGp +# undef FILL_NODE +# undef FILTER_ISREADER +# undef FIND_RUNCV_level_eq +# undef FIND_RUNCV_padid_eq +# undef FIRST_BYTE +# undef FIRST_NON_ASCII_DECIMAL_DIGIT +# undef FIT_ARENA +# undef FIT_ARENA0 +# undef FIT_ARENAn +# undef FLAGS +# undef float_end_shift +# undef float_max_offset +# undef float_min_offset +# undef float_substr +# undef float_utf8 +# undef FmLINES +# undef FOLD +# undef FP_PINF +# undef FP_QNAN +# undef free_and_set_cop_warnings +# undef free_c_backtrace +# undef FROM_INTERNAL_SIZE +# undef FULL_TRIE_STUDY +# undef FUNCTION__ +# undef fwrite1 +# undef G_WARN_ALL_MASK +# undef G_WARN_ALL_OFF +# undef G_WARN_ALL_ON +# undef G_WARN_OFF +# undef G_WARN_ONCE +# undef GCC_DIAG_IGNORE_DECL +# undef GCC_DIAG_RESTORE_DECL +# undef get_extended_os_errno +# undef GET_REGCLASS_AUX_DATA +# undef GETATARGET +# undef GETGRENT_R_HAS_BUFFER +# undef GETGRENT_R_HAS_FPTR +# undef GETGRENT_R_HAS_PTR +# undef GETGRGID_R_HAS_BUFFER +# undef GETGRGID_R_HAS_PTR +# undef GETGRNAM_R_HAS_BUFFER +# undef GETGRNAM_R_HAS_PTR +# undef GETHOSTBYADDR_R_HAS_BUFFER +# undef GETHOSTBYADDR_R_HAS_ERRNO +# undef GETHOSTBYADDR_R_HAS_PTR +# undef GETHOSTBYNAME_R_HAS_BUFFER +# undef GETHOSTBYNAME_R_HAS_ERRNO +# undef GETHOSTBYNAME_R_HAS_PTR +# undef GETHOSTENT_R_HAS_BUFFER +# undef GETHOSTENT_R_HAS_ERRNO +# undef GETHOSTENT_R_HAS_PTR +# undef GETNETBYADDR_R_HAS_BUFFER +# undef GETNETBYADDR_R_HAS_ERRNO +# undef GETNETBYADDR_R_HAS_PTR +# undef GETNETBYNAME_R_HAS_BUFFER +# undef GETNETBYNAME_R_HAS_ERRNO +# undef GETNETBYNAME_R_HAS_PTR +# undef GETNETENT_R_HAS_BUFFER +# undef GETNETENT_R_HAS_ERRNO +# undef GETNETENT_R_HAS_PTR +# undef GETPROTOBYNAME_R_HAS_BUFFER +# undef GETPROTOBYNAME_R_HAS_PTR +# undef GETPROTOBYNUMBER_R_HAS_BUFFER +# undef GETPROTOBYNUMBER_R_HAS_PTR +# undef GETPROTOENT_R_HAS_BUFFER +# undef GETPROTOENT_R_HAS_PTR +# undef GETPWENT_R_HAS_BUFFER +# undef GETPWENT_R_HAS_FPTR +# undef GETPWENT_R_HAS_PTR +# undef GETPWNAM_R_HAS_BUFFER +# undef GETPWNAM_R_HAS_PTR +# undef GETPWUID_R_HAS_PTR +# undef GETSERVBYNAME_R_HAS_BUFFER +# undef GETSERVBYNAME_R_HAS_PTR +# undef GETSERVBYPORT_R_HAS_BUFFER +# undef GETSERVBYPORT_R_HAS_PTR +# undef GETSERVENT_R_HAS_BUFFER +# undef GETSERVENT_R_HAS_PTR +# undef GETSPNAM_R_HAS_BUFFER +# undef GETSPNAM_R_HAS_PTR +# undef GETTARGET +# undef GETTARGETSTACKED +# undef GOSUB +# undef GOSUB_t8 +# undef GOSUB_t8_p8 +# undef GOSUB_t8_pb +# undef GOSUB_tb +# undef GOSUB_tb_p8 +# undef GOSUB_tb_pb +# undef GPOS +# undef GPOS_t8 +# undef GPOS_t8_p8 +# undef GPOS_t8_pb +# undef GPOS_tb +# undef GPOS_tb_p8 +# undef GPOS_tb_pb +# undef GROUPP +# undef GROUPP_t8 +# undef GROUPP_t8_p8 +# undef GROUPP_t8_pb +# undef GROUPP_tb +# undef GROUPP_tb_p8 +# undef GROUPP_tb_pb +# undef GROUPPN +# undef GROUPPN_t8 +# undef GROUPPN_t8_p8 +# undef GROUPPN_t8_pb +# undef GROUPPN_tb +# undef GROUPPN_tb_p8 +# undef GROUPPN_tb_pb +# undef GV_AUTOLOAD +# undef GV_CROAK +# undef gv_dup +# undef gv_dup_inc +# undef gv_method_changed +# undef GV_NOADD_MASK +# undef GvASSUMECV +# undef GvASSUMECV_off +# undef GvASSUMECV_on +# undef GvCV_set +# undef GvEGVx +# undef GvENAME +# undef GvENAME_HEK +# undef GvENAMELEN +# undef GvENAMEUTF8 +# undef GVF_NOADD +# undef GvFILE +# undef GvFLAGS +# undef GvFORM +# undef GvGP_set +# undef GvIMPORTED +# undef GvIMPORTED_AV +# undef GvIMPORTED_AV_off +# undef GvIMPORTED_AV_on +# undef GvIMPORTED_CV +# undef GvIMPORTED_CV_off +# undef GvIMPORTED_CV_on +# undef GvIMPORTED_HV +# undef GvIMPORTED_HV_off +# undef GvIMPORTED_HV_on +# undef GvIMPORTED_off +# undef GvIMPORTED_on +# undef GvIMPORTED_SV +# undef GvIMPORTED_SV_off +# undef GvIMPORTED_SV_on +# undef GvIN_PAD +# undef GvIN_PAD_off +# undef GvIN_PAD_on +# undef GvINTRO +# undef GvINTRO_off +# undef GvINTRO_on +# undef GvIOn +# undef GvMULTI +# undef GvMULTI_off +# undef GvMULTI_on +# undef GvONCE_FATAL +# undef GvONCE_FATAL_off +# undef GvONCE_FATAL_on +# undef GvREFCNT +# undef HADNV +# undef HAS_BUILTIN_UNREACHABLE +# undef HAS_C99 +# undef HAS_CHOWN +# undef HAS_EXTENDED_OS_ERRNO +# undef HAS_EXTRA_LONG_UTF8 +# undef HAS_GROUP +# undef HAS_IGNORED_LOCALE_CATEGORIES_ +# undef HAS_IOCTL +# undef HAS_KILL +# undef HAS_POSIX_2008_LOCALE +# undef HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP +# undef HAS_UTIME +# undef HAS_WAIT +# undef HASARENA +# undef HASATTRIBUTE_ALWAYS_INLINE +# undef HASATTRIBUTE_DEPRECATED +# undef HASATTRIBUTE_FORMAT +# undef HASATTRIBUTE_MALLOC +# undef HASATTRIBUTE_NONNULL +# undef HASATTRIBUTE_NORETURN +# undef HASATTRIBUTE_PURE +# undef HASATTRIBUTE_UNUSED +# undef HASATTRIBUTE_VISIBILITY +# undef HASATTRIBUTE_WARN_UNUSED_RESULT +# undef HASWIDTH +# undef HEK_BASESIZE +# undef HEK_UTF8_off +# undef HEK_UTF8_on +# undef HEK_WASUTF8_off +# undef HEK_WASUTF8_on +# undef HeKFLAGS +# undef HeKLEN_UTF8 +# undef HeKWASUTF8 +# undef HIGHEST_ANYOF_HRx_BYTE +# undef HIGHEST_CASE_CHANGING_CP +# undef HINT_ALL_STRICT +# undef HINT_ASCII_ENCODING +# undef HINT_EXPLICIT_STRICT_REFS +# undef HINT_EXPLICIT_STRICT_SUBS +# undef HINT_EXPLICIT_STRICT_VARS +# undef HINT_FEATURE_MASK +# undef HINT_FEATURE_SHIFT +# undef HINT_FILETEST_ACCESS +# undef HINT_LEXICAL_IO_IN +# undef HINT_LEXICAL_IO_OUT +# undef HINT_NEW_BINARY +# undef HINT_NEW_FLOAT +# undef HINT_NEW_INTEGER +# undef HINT_NEW_RE +# undef HINT_NEW_STRING +# undef HINT_NO_AMAGIC +# undef HINT_RE_FLAGS +# undef HINT_RE_TAINT +# undef HINT_STRICT_SUBS +# undef HINT_STRICT_VARS +# undef HINT_UNI_8_BIT +# undef HINT_UTF8 +# undef HINTS_DEFAULT +# undef HINTS_REFCNT_INIT +# undef HINTS_REFCNT_TERM +# undef HS_GETAPIVERLEN +# undef HS_GETINTERPSIZE +# undef HS_GETXSVERLEN +# undef HSm_XSVERLEN +# undef htoni +# undef htonl +# undef htons +# undef htovl +# undef htovs +# undef hv_deletehek +# undef hv_dup +# undef hv_dup_inc +# undef hv_existshek +# undef HV_FETCH_EMPTY_HE +# undef hv_fetchhek +# undef hv_storehek +# undef HvAMAGIC_on +# undef HVAUX_ARENA_ROOT_IX +# undef HvAUXf_IS_CLASS +# undef HvAUXf_NO_DEREF +# undef HvAUXf_SCAN_STASH +# undef HvEITER +# undef HvHASKFLAGS_off +# undef HvHASKFLAGS_on +# undef HVhek_ENABLEHVKFLAGS +# undef HVhek_FREEKEY +# undef HVhek_KEYCANONICAL +# undef HVhek_NOTSHARED +# undef HvKEYS +# undef HvLASTRAND_get +# undef HvLAZYDEL +# undef HvLAZYDEL_off +# undef HvLAZYDEL_on +# undef HvPLACEHOLDERS_set +# undef HVrhek_delete +# undef HVrhek_IV +# undef HVrhek_PV +# undef HVrhek_PV_UTF8 +# undef HVrhek_typemask +# undef HVrhek_undef +# undef HVrhek_UV +# undef HvSHAREKEYS +# undef HvSHAREKEYS_off +# undef HvSHAREKEYS_on +# undef HvSTASH_IS_CLASS +# undef HYPHEN_UTF8 +# undef I16_MIN +# undef I32_MAX_P1 +# undef I8_TO_NATIVE +# undef I_LIMITS +# undef I_STDARG +# undef IFMATCH +# undef IFMATCH_A +# undef IFMATCH_A_fail +# undef IFMATCH_A_fail_t8 +# undef IFMATCH_A_fail_t8_p8 +# undef IFMATCH_A_fail_t8_pb +# undef IFMATCH_A_fail_tb +# undef IFMATCH_A_fail_tb_p8 +# undef IFMATCH_A_fail_tb_pb +# undef IFMATCH_A_t8 +# undef IFMATCH_A_t8_p8 +# undef IFMATCH_A_t8_pb +# undef IFMATCH_A_tb +# undef IFMATCH_A_tb_p8 +# undef IFMATCH_A_tb_pb +# undef IFMATCH_t8 +# undef IFMATCH_t8_p8 +# undef IFMATCH_t8_pb +# undef IFMATCH_tb +# undef IFMATCH_tb_p8 +# undef IFMATCH_tb_pb +# undef IFTHEN +# undef IFTHEN_t8 +# undef IFTHEN_t8_p8 +# undef IFTHEN_t8_pb +# undef IFTHEN_tb +# undef IFTHEN_tb_p8 +# undef IFTHEN_tb_pb +# undef ILLEGAL_UTF8_BYTE +# undef IN_LC +# undef IN_LC_ALL_COMPILETIME +# undef IN_LC_ALL_RUNTIME +# undef IN_LC_COMPILETIME +# undef IN_LC_PARTIAL_COMPILETIME +# undef IN_LC_PARTIAL_RUNTIME +# undef IN_LC_RUNTIME +# undef IN_PARENS_PASS +# undef IN_SOME_LOCALE_FORM +# undef IN_UNI_8_BIT +# undef INCMARK +# undef INFNAN_NV_U8_DECL +# undef INFNAN_U8_NV_DECL +# undef init_os_extras +# undef INIT_TRACK_MEMPOOL +# undef INSUBP +# undef INSUBP_t8 +# undef INSUBP_t8_p8 +# undef INSUBP_t8_pb +# undef INSUBP_tb +# undef INSUBP_tb_p8 +# undef INSUBP_tb_pb +# undef INT64_MIN +# undef INT_64_T +# undef INT_PAT_MODS +# undef INVLIST_INDEX +# undef invlist_intersection_complement_2nd_ +# undef invlist_union_complement_2nd_ +# undef io_dup +# undef io_dup_inc +# undef IoANY +# undef IOf_ARGV +# undef IOf_DIDTOP +# undef IOf_NOLINE +# undef IOf_START +# undef IoTYPE_APPEND +# undef IoTYPE_CLOSED +# undef IoTYPE_IMPLICIT +# undef IoTYPE_NUMERIC +# undef IoTYPE_PIPE +# undef IoTYPE_RDONLY +# undef IoTYPE_RDWR +# undef IoTYPE_SOCKET +# undef IoTYPE_STD +# undef IoTYPE_WRONLY +# undef is_ANYOF_SYNTHETIC +# undef IS_ANYOF_TRIE +# undef is_HANGUL_ED_utf8_safe +# undef is_LARGER_NON_CHARS_utf8 +# undef IS_NON_FINAL_FOLD +# undef is_NONCHAR_utf8_safe +# undef IS_NUMERIC_RADIX +# undef IS_PADCONST +# undef IS_PADGV +# undef is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8 +# undef is_QUOTEMETA_high +# undef IS_SAFE_PATHNAME +# undef is_SHORTER_NON_CHARS_utf8 +# undef is_SPACE_utf8_safe_backwards +# undef is_SURROGATE_utf8 +# undef is_SURROGATE_utf8_safe +# undef IS_TRIE_AC +# undef IS_UTF8_CHAR +# undef ISA_VERSION_OBJ +# undef isALNUM_lazy_if_safe +# undef isALNUM_LC_utf8 +# undef isALNUM_LC_utf8_safe +# undef isALNUM_utf8 +# undef isALNUM_utf8_safe +# undef isALNUMC_LC_utf8_safe +# undef isALNUMC_uni +# undef isALNUMC_utf8 +# undef isALNUMC_utf8_safe +# undef isALNUMU +# undef isALPHA_FOLD_NE +# undef isALPHA_LC_utf8 +# undef isALPHANUMERIC_LC_utf8 +# undef isALPHAU +# undef isASCII_LC_utf8 +# undef isBACKSLASHED_PUNCT +# undef isBLANK_LC_uni +# undef isBLANK_LC_utf8 +# undef isCASED_LC +# undef isCNTRL_LC_utf8 +# undef isDEBUG_WILDCARD +# undef isDIGIT_LC_utf8 +# undef isEXACT_REQ8 +# undef isEXACTFish +# undef isGRAPH_LC_utf8 +# undef isGV_or_RVCV +# undef isGV_with_GP_off +# undef isGV_with_GP_on +# undef isIDCONT_lazy_if_safe +# undef isIDCONT_LC_utf8 +# undef isIDFIRST_LC_utf8 +# undef isLEXWARN_off +# undef isLEXWARN_on +# undef isLOWER_LC_utf8 +# undef isNON_BRACE_QUANTIFIER +# undef isnormal +# undef isPRINT_LC_utf8 +# undef isPSXSPC_LC_utf8 +# undef isPUNCT_LC_utf8 +# undef isQUANTIFIER +# undef isSPACE_LC_utf8 +# undef isUNICODE_POSSIBLY_PROBLEMATIC +# undef isUPPER_LC_utf8 +# undef isVERTWS_utf8 +# undef isWARN_on +# undef isWARN_ONCE +# undef isWORDCHAR_lazy_if_safe +# undef isWORDCHAR_LC_utf8 +# undef isXDIGIT_LC_utf8 +# undef IV_DIG +# undef IV_MAX_P1 +# undef JE_OLD_STACK_HWM_zero +# undef JMPENV_BOOTSTRAP +# undef kBINOP +# undef kCOP +# undef KEEPCOPY_PAT_MODS +# undef KEEPS +# undef KEEPS_next +# undef KEEPS_next_fail +# undef KEEPS_next_fail_t8 +# undef KEEPS_next_fail_t8_p8 +# undef KEEPS_next_fail_t8_pb +# undef KEEPS_next_fail_tb +# undef KEEPS_next_fail_tb_p8 +# undef KEEPS_next_fail_tb_pb +# undef KEEPS_next_t8 +# undef KEEPS_next_t8_p8 +# undef KEEPS_next_t8_pb +# undef KEEPS_next_tb +# undef KEEPS_next_tb_p8 +# undef KEEPS_next_tb_pb +# undef KEEPS_t8 +# undef KEEPS_t8_p8 +# undef KEEPS_t8_pb +# undef KEEPS_tb +# undef KEEPS_tb_p8 +# undef KEEPS_tb_pb +# undef KERNEL +# undef KEY_write +# undef KEY_x +# undef KEY_xor +# undef KEY_y +# undef KEYWORD_PLUGIN_DECLINE +# undef KEYWORD_PLUGIN_MUTEX_INIT +# undef KEYWORD_PLUGIN_MUTEX_TERM +# undef kGVOP_gv +# undef kLISTOP +# undef kLOGOP +# undef kLOOP +# undef kMETHOP +# undef kPADOP +# undef kPMOP +# undef kPVOP +# undef kSVOP +# undef kSVOP_sv +# undef kUNOP_AUX +# undef LARGE_HASH_HEURISTIC +# undef LATIN_CAPITAL_LETTER_SHARP_S_UTF8 +# undef LATIN_SMALL_LETTER_DOTLESS_I_UTF8 +# undef LATIN_SMALL_LIGATURE_LONG_S_T_UTF8 +# undef LC_ADDRESS_AVAIL_ +# undef LC_COLLATE_AVAIL_ +# undef LC_CTYPE_AVAIL_ +# undef LC_IDENTIFICATION_AVAIL_ +# undef LC_MEASUREMENT_AVAIL_ +# undef LC_MESSAGES_AVAIL_ +# undef LC_MONETARY_AVAIL_ +# undef LC_NAME_AVAIL_ +# undef LC_NUMERIC_AVAIL_ +# undef LC_PAPER_AVAIL_ +# undef LC_SYNTAX_AVAIL_ +# undef LC_TELEPHONE_AVAIL_ +# undef LC_TIME_AVAIL_ +# undef LC_TOD_AVAIL_ +# undef LEX_DONT_CLOSE_RSFP +# undef LEX_EVALBYTES +# undef LEX_IGNORE_UTF8_HINTS +# undef LEX_NOTPARSING +# undef LEX_START_COPIED +# undef LEX_START_FLAGS +# undef LEX_START_SAME_FILTER +# undef LEXACT +# undef LEXACT_REQ8 +# undef LEXACT_REQ8_t8 +# undef LEXACT_REQ8_t8_p8 +# undef LEXACT_REQ8_t8_pb +# undef LEXACT_REQ8_tb +# undef LEXACT_REQ8_tb_p8 +# undef LEXACT_REQ8_tb_pb +# undef LEXACT_t8 +# undef LEXACT_t8_p8 +# undef LEXACT_t8_pb +# undef LEXACT_tb +# undef LEXACT_tb_p8 +# undef LEXACT_tb_pb +# undef LF_NATIVE +# undef LIB_INVARG +# undef LNBREAK +# undef LNBREAK_t8 +# undef LNBREAK_t8_p8 +# undef LNBREAK_t8_pb +# undef LNBREAK_tb +# undef LNBREAK_tb_p8 +# undef LNBREAK_tb_pb +# undef LOC +# undef LOCALE_CATEGORIES_COUNT_ +# undef LOCALE_INIT +# undef LOCALE_LOCK_DOES_SOMETHING_ +# undef locale_panic_ +# undef locale_panic_via_ +# undef LOCALE_PAT_MODS +# undef LOCALE_TERM +# undef LOCALE_TERM_POSIX_2008_ +# undef LOCK_LC_NUMERIC_STANDARD +# undef LOGICAL +# undef LOGICAL_t8 +# undef LOGICAL_t8_p8 +# undef LOGICAL_t8_pb +# undef LOGICAL_tb +# undef LOGICAL_tb_p8 +# undef LOGICAL_tb_pb +# undef LONG_DOUBLE_EQUALS_DOUBLE +# undef LONGDOUBLE_BIG_ENDIAN +# undef LONGDOUBLE_DOUBLEDOUBLE +# undef LONGDOUBLE_LITTLE_ENDIAN +# undef LONGDOUBLE_MIX_ENDIAN +# undef LONGDOUBLE_VAX_ENDIAN +# undef LONGDOUBLE_X86_80_BIT +# undef LONGJMP +# undef LONGJMP_t8 +# undef LONGJMP_t8_p8 +# undef LONGJMP_t8_pb +# undef LONGJMP_tb +# undef LONGJMP_tb_p8 +# undef LONGJMP_tb_pb +# undef LOOKBEHIND_END +# undef LOOKBEHIND_END_t8 +# undef LOOKBEHIND_END_t8_p8 +# undef LOOKBEHIND_END_t8_pb +# undef LOOKBEHIND_END_tb +# undef LOOKBEHIND_END_tb_p8 +# undef LOOKBEHIND_END_tb_pb +# undef LOOP_PAT_MODS +# undef LOWEST_ANYOF_HRx_BYTE +# undef lsbit_pos +# undef lsbit_pos_uintmax_ +# undef LVf_NEG_LEN +# undef LVf_NEG_OFF +# undef LVf_OUT_OF_RANGE +# undef LvFLAGS +# undef LVRET +# undef LvSTARGOFF +# undef LZC_TO_MSBIT_POS_ +# undef M_PAT_MODS +# undef MADE_EXACT_TRIE +# undef MADE_JUMP_TRIE +# undef MADE_TRIE +# undef magic_sethint_feature +# undef MALFORMED_UTF8_WARN +# undef MALLOC_CHECK_TAINT +# undef MALLOC_CHECK_TAINT2 +# undef MALLOC_INIT +# undef MALLOC_OVERHEAD +# undef MALLOC_TERM +# undef MALLOC_TOO_LATE_FOR +# undef MARK_NAUGHTY +# undef MARK_NAUGHTY_EXP +# undef MARKER1 +# undef MARKER2 +# undef MARKPOINT +# undef MARKPOINT_next +# undef MARKPOINT_next_fail +# undef MARKPOINT_next_fail_t8 +# undef MARKPOINT_next_fail_t8_p8 +# undef MARKPOINT_next_fail_t8_pb +# undef MARKPOINT_next_fail_tb +# undef MARKPOINT_next_fail_tb_p8 +# undef MARKPOINT_next_fail_tb_pb +# undef MARKPOINT_next_t8 +# undef MARKPOINT_next_t8_p8 +# undef MARKPOINT_next_t8_pb +# undef MARKPOINT_next_tb +# undef MARKPOINT_next_tb_p8 +# undef MARKPOINT_next_tb_pb +# undef MARKPOINT_t8 +# undef MARKPOINT_t8_p8 +# undef MARKPOINT_t8_pb +# undef MARKPOINT_tb +# undef MARKPOINT_tb_p8 +# undef MARKPOINT_tb_pb +# undef MAX_ANYOF_HRx_BYTE +# undef MAX_FEATURE_LEN +# undef MAX_PORTABLE_UTF8_TWO_BYTE +# undef MAX_SAVEt +# undef MAX_UNICODE_UTF8 +# undef MAXARG +# undef MAXARG3 +# undef MAYBE_DEREF_GV +# undef MAYBE_DEREF_GV_flags +# undef MAYBE_DEREF_GV_nomg +# undef MBOL +# undef MBOL_t8 +# undef MBOL_t8_p8 +# undef MBOL_t8_pb +# undef MBOL_tb +# undef MBOL_tb_p8 +# undef MBOL_tb_pb +# undef MEM_LOG_DEL_SV +# undef MEM_LOG_NEW_SV +# undef MEM_WRAP_CHECK_1 +# undef MEM_WRAP_CHECK_s +# undef MEMBER_TO_FPTR +# undef memENDs +# undef memGE +# undef memGT +# undef memLE +# undef memLT +# undef MEOL +# undef MEOL_t8 +# undef MEOL_t8_p8 +# undef MEOL_t8_pb +# undef MEOL_tb +# undef MEOL_tb_p8 +# undef MEOL_tb_pb +# undef MEXTEND +# undef MGf_GSKIP +# undef MGf_MINMATCH +# undef MGf_TAINTEDDIR +# undef MgPV +# undef MgPV_const +# undef MgPV_nolen_const +# undef MgSV +# undef MgTAINTEDDIR +# undef MgTAINTEDDIR_off +# undef MgTAINTEDDIR_on +# undef MI_INIT_WORKAROUND_PACK +# undef MINMOD +# undef MINMOD_t8 +# undef MINMOD_t8_p8 +# undef MINMOD_t8_pb +# undef MINMOD_tb +# undef MINMOD_tb_p8 +# undef MINMOD_tb_pb +# undef Mkdir +# undef MPH_BUCKETS +# undef MPH_RSHIFT +# undef MPH_VALt +# undef msbit_pos_uintmax_ +# undef MSPAGAIN +# undef MSVC_DIAG_IGNORE +# undef MSVC_DIAG_IGNORE_DECL +# undef MSVC_DIAG_RESTORE +# undef MSVC_DIAG_RESTORE_DECL +# undef MSVC_DIAG_RESTORE_STMT +# undef MUST_RESTART +# undef MUTEX_INIT_NEEDS_MUTEX_ZEROED +# undef my +# undef my_binmode +# undef MY_CXT_INIT_INTERP +# undef my_lstat +# undef my_stat +# undef N0 +# undef N1 +# undef N10 +# undef N11 +# undef N2 +# undef N3 +# undef N4 +# undef N5 +# undef N6 +# undef N7 +# undef N8 +# undef N9 +# undef namedclass_to_classnum +# undef NAN_COMPARE_BROKEN +# undef NANYOFM +# undef NANYOFM_t8 +# undef NANYOFM_t8_p8 +# undef NANYOFM_t8_pb +# undef NANYOFM_tb +# undef NANYOFM_tb_p8 +# undef NANYOFM_tb_pb +# undef NATIVE8_TO_UNI +# undef NATIVE_BYTE_IS_INVARIANT +# undef NATIVE_SKIP +# undef NATIVE_TO_ASCII +# undef NATIVE_TO_I8 +# undef NATIVE_TO_UTF +# undef NBOUND +# undef NBOUND_t8 +# undef NBOUND_t8_p8 +# undef NBOUND_t8_pb +# undef NBOUND_tb +# undef NBOUND_tb_p8 +# undef NBOUND_tb_pb +# undef NBOUNDA +# undef NBOUNDA_t8 +# undef NBOUNDA_t8_p8 +# undef NBOUNDA_t8_pb +# undef NBOUNDA_tb +# undef NBOUNDA_tb_p8 +# undef NBOUNDA_tb_pb +# undef NBOUNDL +# undef NBOUNDL_t8 +# undef NBOUNDL_t8_p8 +# undef NBOUNDL_t8_pb +# undef NBOUNDL_tb +# undef NBOUNDL_tb_p8 +# undef NBOUNDL_tb_pb +# undef NBOUNDU +# undef NBOUNDU_t8 +# undef NBOUNDU_t8_p8 +# undef NBOUNDU_t8_pb +# undef NBOUNDU_tb +# undef NBOUNDU_tb_p8 +# undef NBOUNDU_tb_pb +# undef NBSP_NATIVE +# undef NBSP_UTF8 +# undef NEED_UTF8 +# undef NEGATE_2IV +# undef NEGATE_2UV +# undef NEGATIVE_INDICES_VAR +# undef NETDB_R_OBSOLETE +# undef new_body_allocated +# undef new_body_from_arena +# undef new_NOARENA +# undef new_NOARENAZ +# undef new_SV +# undef NEW_VERSION +# undef new_XNV +# undef new_XPV +# undef new_XPVIV +# undef new_XPVNV +# undef NewOpSz +# undef NEXT_LINE_CHAR +# undef NEXT_OFF +# undef NO_ENV_ARRAY_IN_MAIN +# undef NO_ENVIRON_ARRAY +# undef NO_POSIX_2008_LOCALE +# undef NOARENA +# undef NOCAPTURE_PAT_MODS +# undef NODE_ALIGN +# undef NODE_ALIGN_FILL +# undef NODE_STEP_REGNODE +# undef NofAMmeth +# undef NOLINE +# undef NONDESTRUCT_PAT_MOD +# undef NONDESTRUCT_PAT_MODS +# undef NONV +# undef NORETURN_FUNCTION_END +# undef NOT_IN_NUMERIC_STANDARD_ +# undef NOTE3 +# undef NOTHING +# undef NOTHING_t8 +# undef NOTHING_t8_p8 +# undef NOTHING_t8_pb +# undef NOTHING_tb +# undef NOTHING_tb_p8 +# undef NOTHING_tb_pb +# undef NPOSIXA +# undef NPOSIXA_t8 +# undef NPOSIXA_t8_p8 +# undef NPOSIXA_t8_pb +# undef NPOSIXA_tb +# undef NPOSIXA_tb_p8 +# undef NPOSIXA_tb_pb +# undef NPOSIXD +# undef NPOSIXD_t8 +# undef NPOSIXD_t8_p8 +# undef NPOSIXD_t8_pb +# undef NPOSIXD_tb +# undef NPOSIXD_tb_p8 +# undef NPOSIXD_tb_pb +# undef NPOSIXL +# undef NPOSIXL_t8 +# undef NPOSIXL_t8_p8 +# undef NPOSIXL_t8_pb +# undef NPOSIXL_tb +# undef NPOSIXL_tb_p8 +# undef NPOSIXL_tb_pb +# undef NPOSIXU +# undef NPOSIXU_t8 +# undef NPOSIXU_t8_p8 +# undef NPOSIXU_t8_pb +# undef NPOSIXU_tb +# undef NPOSIXU_tb_p8 +# undef NPOSIXU_tb_pb +# undef ntohi +# undef ntohl +# undef ntohs +# undef Nullfp +# undef Nullgv +# undef Nullhe +# undef Nullhek +# undef Nullop +# undef NUM_CLASSES +# undef o1_ +# undef O_VMS_DELETEONCLOSE +# undef ObjectFIELDS +# undef ObjectITERSVAT +# undef ObjectMAXFIELD +# undef OCTAL_VALUE +# undef OLD_CURRENT_HINTS +# undef ONCE_PAT_MODS +# undef ONLY_LOCALE_MATCHES_INDEX +# undef OOB_NAMEDCLASS +# undef OOB_UNICODE +# undef OP_CHECK_MUTEX_INIT +# undef OP_CHECK_MUTEX_TERM +# undef OP_FREED +# undef OP_GIMME +# undef OP_GIMME_REVERSE +# undef OP_IS_DIRHOP +# undef OP_IS_FILETEST +# undef OP_IS_FILETEST_ACCESS +# undef OP_IS_INFIX_BIT +# undef OP_IS_NUMCOMPARE +# undef OP_IS_SOCKET +# undef OP_IS_STAT +# undef OP_REFCNT_INIT +# undef OP_REFCNT_TERM +# undef OP_SIBLING +# undef OP_TYPE_IS_OR_WAS_NN +# undef OP_TYPE_ISNT +# undef OP_TYPE_ISNT_AND_WASNT +# undef OP_TYPE_ISNT_AND_WASNT_NN +# undef OP_TYPE_ISNT_NN +# undef opASSIGN +# undef OPEN +# undef OPEN_t8 +# undef OPEN_t8_p8 +# undef OPEN_t8_pb +# undef OPEN_tb +# undef OPEN_tb_p8 +# undef OPEN_tb_pb +# undef OPERAND +# undef OPERANDl +# undef OPERANDs +# undef OPf_KNOW +# undef OPf_LIST +# undef OPFAIL +# undef OPFAIL_t8 +# undef OPFAIL_t8_p8 +# undef OPFAIL_t8_pb +# undef OPFAIL_tb +# undef OPFAIL_tb_p8 +# undef OPFAIL_tb_pb +# undef OpMySLAB +# undef OpREFCNT_dec +# undef OpREFCNT_inc +# undef OpREFCNT_set +# undef OpSLAB +# undef OpslabREFCNT_dec +# undef OpslabREFCNT_dec_padok +# undef OpSLOT +# undef OPSLOT_HEADER +# undef OpSLOToff +# undef OPTIMIZE_INFTY +# undef OPTIMIZED +# undef OPTIMIZED_t8 +# undef OPTIMIZED_t8_p8 +# undef OPTIMIZED_t8_pb +# undef OPTIMIZED_tb +# undef OPTIMIZED_tb_p8 +# undef OPTIMIZED_tb_pb +# undef OpTYPE_set +# undef OutCopFILE +# undef PAD_BASE_SV +# undef PAD_CLONE_VARS +# undef PAD_COMPNAME +# undef PAD_COMPNAME_FLAGS +# undef PAD_COMPNAME_GEN +# undef PAD_COMPNAME_GEN_set +# undef PAD_COMPNAME_OURSTASH +# undef PAD_COMPNAME_PV +# undef PAD_COMPNAME_TYPE +# undef PAD_RESTORE_LOCAL +# undef PAD_SAVE_LOCAL +# undef PAD_SAVE_SETNULLPAD +# undef PAD_SET_CUR +# undef PAD_SETSV +# undef padadd_FIELD +# undef padadd_OUR +# undef padadd_STALEOK +# undef padfind_FIELD_OK +# undef PADNAME_BASE_ +# undef padname_dup_inc +# undef PADNAME_FROM_PV +# undef PadnameFIELDINFO +# undef PadnameHasTYPE +# undef PadnameIsFIELD +# undef PadnameIsSTATE +# undef PadnameIsSTATE_on +# undef padnamelist_dup_inc +# undef PadnamelistMAXNAMED +# undef PadnamelistREFCNT_inc +# undef PadnameLVALUE +# undef PadnameLVALUE_on +# undef PadnameOURSTASH +# undef PadnamePROTOCV +# undef PADNAMEt_LVALUE +# undef PADNAMEt_OUR +# undef PADNAMEt_OUTER +# undef PADNAMEt_STATE +# undef PADNAMEt_TYPED +# undef PadnameTYPE +# undef PadnameTYPE_set +# undef padnew_CLONE +# undef padnew_SAVE +# undef padnew_SAVESUB +# undef panic_write2 +# undef PAREN_OFFSET +# undef PAREN_SET +# undef PAREN_TEST +# undef PAREN_UNSET +# undef PARENT_FAKELEX_FLAGS +# undef PARENT_PAD_INDEX +# undef PARNO +# undef PATCHLEVEL +# undef Pause +# undef PBITVAL +# undef PBYTE +# undef PLATFORM_SYS_INIT_ +# undef PLATFORM_SYS_TERM_ +# undef PLUS +# undef PLUS_t8 +# undef PLUS_t8_p8 +# undef PLUS_t8_pb +# undef PLUS_tb +# undef PLUS_tb_p8 +# undef PLUS_tb_pb +# undef PmopSTASH_set +# undef PmopSTASHPV_set +# undef PNf +# undef PNfARG +# undef POISON_SV_HEAD +# undef PoisonPADLIST +# undef POPpconstx +# undef POSIX_CC_COUNT +# undef POSIXA +# undef POSIXA_t8 +# undef POSIXA_t8_p8 +# undef POSIXA_t8_pb +# undef POSIXA_tb +# undef POSIXA_tb_p8 +# undef POSIXA_tb_pb +# undef POSIXD +# undef POSIXD_t8 +# undef POSIXD_t8_p8 +# undef POSIXD_t8_pb +# undef POSIXD_tb +# undef POSIXD_tb_p8 +# undef POSIXD_tb_pb +# undef POSIXL +# undef POSIXL_CLEAR +# undef POSIXL_SET +# undef POSIXL_t8 +# undef POSIXL_t8_p8 +# undef POSIXL_t8_pb +# undef POSIXL_tb +# undef POSIXL_tb_p8 +# undef POSIXL_tb_pb +# undef POSIXL_TEST +# undef POSIXL_ZERO +# undef POSIXU +# undef POSIXU_t8 +# undef POSIXU_t8_p8 +# undef POSIXU_t8_pb +# undef POSIXU_tb +# undef POSIXU_tb_p8 +# undef POSIXU_tb_pb +# undef POSTPONED +# undef PP +# undef PP_wrapped +# undef PREGf_ANCH +# undef PREGf_ANCH_GPOS +# undef PREGf_ANCH_MBOL +# undef PREGf_ANCH_SBOL +# undef PREGf_CUTGROUP_SEEN +# undef PREGf_GPOS_FLOAT +# undef PREGf_GPOS_SEEN +# undef PREGf_IMPLICIT +# undef PREGf_NAUGHTY +# undef PREGf_NOSCAN +# undef PREGf_PESSIMIZE_SEEN +# undef PREGf_RECURSE_SEEN +# undef PREGf_SKIP +# undef PREGf_USE_RE_EVAL +# undef PREGf_VERBARG_SEEN +# undef prepare_SV_for_RV +# undef PRESCAN_VERSION +# undef PREV_RANGE_MATCHES_INVLIST +# undef PRINTF_FORMAT_NULL_OK +# undef PRIVSHIFT +# undef ProgLen +# undef PRUNE +# undef PRUNE_t8 +# undef PRUNE_t8_p8 +# undef PRUNE_t8_pb +# undef PRUNE_tb +# undef PRUNE_tb_p8 +# undef PRUNE_tb_pb +# undef PSEUDO +# undef PSEUDO_t8 +# undef PSEUDO_t8_p8 +# undef PSEUDO_t8_pb +# undef PSEUDO_tb +# undef PSEUDO_tb_p8 +# undef PSEUDO_tb_pb +# undef pthread_addr_t +# undef pthread_attr_init +# undef pthread_create +# undef PTHREAD_GETSPECIFIC_INT +# undef pthread_key_create +# undef pthread_keycreate +# undef pthread_mutexattr_init +# undef pthread_mutexattr_settype +# undef pTHX_1 +# undef pTHX_12 +# undef pTHX_2 +# undef pTHX_3 +# undef pTHX_4 +# undef pTHX_5 +# undef pTHX_6 +# undef pTHX_7 +# undef pTHX_8 +# undef pTHX_9 +# undef pTHX__FORMAT +# undef pTHX__VALUE +# undef pTHX__VALUE_ +# undef pTHX_FORMAT +# undef pTHX_VALUE +# undef pTHX_VALUE_ +# undef pTHXo_ +# undef pTHXx_ +# undef PUSHSTACK_INIT_HWM +# undef QR_PAT_MODS +# undef QUESTION_MARK_CTRL +# undef RANGE_INDICATOR +# undef RE_COMPILE_RECURSION_INIT +# undef RE_COMPILE_RECURSION_LIMIT +# undef RE_DEBUG_COMPILE_DUMP +# undef RE_DEBUG_COMPILE_FLAGS +# undef RE_DEBUG_COMPILE_MASK +# undef RE_DEBUG_COMPILE_OPTIMISE +# undef RE_DEBUG_COMPILE_PARSE +# undef RE_DEBUG_COMPILE_TEST +# undef RE_DEBUG_COMPILE_TRIE +# undef RE_DEBUG_EXECUTE_INTUIT +# undef RE_DEBUG_EXECUTE_MASK +# undef RE_DEBUG_EXECUTE_MATCH +# undef RE_DEBUG_EXECUTE_TRIE +# undef RE_DEBUG_EXTRA_BUFFERS +# undef RE_DEBUG_EXTRA_DUMP_PRE_OPTIMIZE +# undef RE_DEBUG_EXTRA_GPOS +# undef RE_DEBUG_EXTRA_MASK +# undef RE_DEBUG_EXTRA_OPTIMISE +# undef RE_DEBUG_EXTRA_STACK +# undef RE_DEBUG_EXTRA_STATE +# undef RE_DEBUG_EXTRA_TRIE +# undef RE_DEBUG_EXTRA_WILDCARD +# undef RE_DEBUG_FLAG +# undef RE_DEBUG_FLAGS +# undef RE_PV_COLOR_DECL +# undef RE_PV_QUOTED_DECL +# undef RE_SV_DUMPLEN +# undef RE_SV_ESCAPE +# undef RE_SV_TAIL +# undef RE_TRIE_MAXBUF_INIT +# undef RE_TRIE_MAXBUF_NAME +# undef REAL_COP_FEATURE_SIZE +# undef REENABLE_LC_NUMERIC_CHANGES +# undef REENTR_MEMZERO +# undef REENTRANT_PROTO_B_B +# undef REENTRANT_PROTO_B_BI +# undef REENTRANT_PROTO_B_BW +# undef REENTRANT_PROTO_B_CCD +# undef REENTRANT_PROTO_B_CCS +# undef REENTRANT_PROTO_B_IBI +# undef REENTRANT_PROTO_B_IBW +# undef REENTRANT_PROTO_B_SB +# undef REENTRANT_PROTO_B_SBI +# undef REENTRANT_PROTO_I_BI +# undef REENTRANT_PROTO_I_BW +# undef REENTRANT_PROTO_I_CCSBWR +# undef REENTRANT_PROTO_I_CCSD +# undef REENTRANT_PROTO_I_CII +# undef REENTRANT_PROTO_I_CIISD +# undef REENTRANT_PROTO_I_CSBI +# undef REENTRANT_PROTO_I_CSBIR +# undef REENTRANT_PROTO_I_CSBWR +# undef REENTRANT_PROTO_I_CSBWRE +# undef REENTRANT_PROTO_I_CSD +# undef REENTRANT_PROTO_I_CWISBWRE +# undef REENTRANT_PROTO_I_CWISD +# undef REENTRANT_PROTO_I_D +# undef REENTRANT_PROTO_I_H +# undef REENTRANT_PROTO_I_IBI +# undef REENTRANT_PROTO_I_IBW +# undef REENTRANT_PROTO_I_ICBI +# undef REENTRANT_PROTO_I_ICSBWR +# undef REENTRANT_PROTO_I_ICSD +# undef REENTRANT_PROTO_I_ID +# undef REENTRANT_PROTO_I_IISD +# undef REENTRANT_PROTO_I_ISBWR +# undef REENTRANT_PROTO_I_ISD +# undef REENTRANT_PROTO_I_LISBI +# undef REENTRANT_PROTO_I_LISD +# undef REENTRANT_PROTO_I_SB +# undef REENTRANT_PROTO_I_SBI +# undef REENTRANT_PROTO_I_SBIE +# undef REENTRANT_PROTO_I_SBIH +# undef REENTRANT_PROTO_I_SBIR +# undef REENTRANT_PROTO_I_SBWR +# undef REENTRANT_PROTO_I_SBWRE +# undef REENTRANT_PROTO_I_SD +# undef REENTRANT_PROTO_I_TISD +# undef REENTRANT_PROTO_I_TS +# undef REENTRANT_PROTO_I_TSBI +# undef REENTRANT_PROTO_I_TSBIR +# undef REENTRANT_PROTO_I_TSBWR +# undef REENTRANT_PROTO_I_TsISBWRE +# undef REENTRANT_PROTO_I_TSR +# undef REENTRANT_PROTO_I_UISBWRE +# undef REENTRANT_PROTO_I_uISBWRE +# undef REENTRANT_PROTO_S_CBI +# undef REENTRANT_PROTO_S_CCSBI +# undef REENTRANT_PROTO_S_CIISBIE +# undef REENTRANT_PROTO_S_CSBI +# undef REENTRANT_PROTO_S_CSBIE +# undef REENTRANT_PROTO_S_CWISBIE +# undef REENTRANT_PROTO_S_CWISBWIE +# undef REENTRANT_PROTO_S_ICSBI +# undef REENTRANT_PROTO_S_ISBI +# undef REENTRANT_PROTO_S_LISBI +# undef REENTRANT_PROTO_S_SBI +# undef REENTRANT_PROTO_S_SBIE +# undef REENTRANT_PROTO_S_SBW +# undef REENTRANT_PROTO_S_TISBI +# undef REENTRANT_PROTO_S_TS +# undef REENTRANT_PROTO_S_TSBI +# undef REENTRANT_PROTO_S_TSBIE +# undef REENTRANT_PROTO_S_TWISBIE +# undef REENTRANT_PROTO_V_D +# undef REENTRANT_PROTO_V_H +# undef REENTRANT_PROTO_V_ID +# undef REF +# undef ref +# undef REF_HE_KEY +# undef REF_next +# undef REF_next_fail +# undef REF_next_fail_t8 +# undef REF_next_fail_t8_p8 +# undef REF_next_fail_t8_pb +# undef REF_next_fail_tb +# undef REF_next_fail_tb_p8 +# undef REF_next_fail_tb_pb +# undef REF_next_t8 +# undef REF_next_t8_p8 +# undef REF_next_t8_pb +# undef REF_next_tb +# undef REF_next_tb_p8 +# undef REF_next_tb_pb +# undef REF_t8 +# undef REF_t8_p8 +# undef REF_t8_pb +# undef REF_tb +# undef REF_tb_p8 +# undef REF_tb_pb +# undef REFCOUNTED_HE_EXISTS +# undef refcounted_he_fetch_pvs +# undef refcounted_he_new_pvs +# undef REFF +# undef REFF_t8 +# undef REFF_t8_p8 +# undef REFF_t8_pb +# undef REFF_tb +# undef REFF_tb_p8 +# undef REFF_tb_pb +# undef REFFA +# undef REFFA_t8 +# undef REFFA_t8_p8 +# undef REFFA_t8_pb +# undef REFFA_tb +# undef REFFA_tb_p8 +# undef REFFA_tb_pb +# undef REFFAN +# undef REFFAN_t8 +# undef REFFAN_t8_p8 +# undef REFFAN_t8_pb +# undef REFFAN_tb +# undef REFFAN_tb_p8 +# undef REFFAN_tb_pb +# undef REFFL +# undef REFFL_t8 +# undef REFFL_t8_p8 +# undef REFFL_t8_pb +# undef REFFL_tb +# undef REFFL_tb_p8 +# undef REFFL_tb_pb +# undef REFFLN +# undef REFFLN_t8 +# undef REFFLN_t8_p8 +# undef REFFLN_t8_pb +# undef REFFLN_tb +# undef REFFLN_tb_p8 +# undef REFFLN_tb_pb +# undef REFFN +# undef REFFN_t8 +# undef REFFN_t8_p8 +# undef REFFN_t8_pb +# undef REFFN_tb +# undef REFFN_tb_p8 +# undef REFFN_tb_pb +# undef REFFU +# undef REFFU_t8 +# undef REFFU_t8_p8 +# undef REFFU_t8_pb +# undef REFFU_tb +# undef REFFU_tb_p8 +# undef REFFU_tb_pb +# undef REFFUN +# undef REFFUN_t8 +# undef REFFUN_t8_p8 +# undef REFFUN_t8_pb +# undef REFFUN_tb +# undef REFFUN_tb_p8 +# undef REFFUN_tb_pb +# undef REFN +# undef REFN_t8 +# undef REFN_t8_p8 +# undef REFN_t8_pb +# undef REFN_tb +# undef REFN_tb_p8 +# undef REFN_tb_pb +# undef REG_ANY +# undef REG_ANY_t8 +# undef REG_ANY_t8_p8 +# undef REG_ANY_t8_pb +# undef REG_ANY_tb +# undef REG_ANY_tb_p8 +# undef REG_ANY_tb_pb +# undef REG_CUTGROUP_SEEN +# undef REG_EXTFLAGS_NAME_SIZE +# undef REG_GPOS_SEEN +# undef REG_INTFLAGS_NAME_SIZE +# undef REG_LB_SEEN +# undef REG_LOOKBEHIND_SEEN +# undef REG_MAGIC +# undef REG_NODE_NUM +# undef REG_PESSIMIZE_SEEN +# undef REG_RECURSE_SEEN +# undef REG_RUN_ON_COMMENT_SEEN +# undef REG_TOP_LEVEL_BRANCHES_SEEN +# undef REG_UNBOUNDED_QUANTIFIER_SEEN +# undef REG_UNFOLDED_MULTI_SEEN +# undef REG_VERBARG_SEEN +# undef reg_warn_non_literal_string +# undef REG_ZERO_LEN_SEEN +# undef REGEX_SET +# undef REGEX_SET_t8 +# undef REGEX_SET_t8_p8 +# undef REGEX_SET_t8_pb +# undef REGEX_SET_tb +# undef REGEX_SET_tb_p8 +# undef REGEX_SET_tb_pb +# undef RegexLengthToShowInErrorMessages +# undef REGMATCH_STATE_MAX +# undef REGNODE_AFTER +# undef REGNODE_AFTER_opcode +# undef REGNODE_AFTER_PLUS +# undef REGNODE_AFTER_PLUS_DEBUG +# undef REGNODE_AFTER_type +# undef REGNODE_AFTER_varies +# undef REGNODE_ARG_LEN +# undef REGNODE_ARG_LEN_VARIES +# undef REGNODE_BBM_BITMAP_LEN +# undef REGNODE_BEFORE +# undef REGNODE_BEFORE_BASE +# undef REGNODE_BEFORE_BASE_DEBUG +# undef REGNODE_GUTS +# undef REGNODE_MAX +# undef REGNODE_NAME +# undef REGNODE_OFF_BY_ARG +# undef REGNODE_OFFSET +# undef REGNODE_p +# undef REGNODE_SIMPLE +# undef REGNODE_STEP_OVER +# undef REGNODE_TYPE +# undef REGNODE_VARIES +# undef REGTAIL +# undef REGTAIL_STUDY +# undef RENUM +# undef RENUM_t8 +# undef RENUM_t8_p8 +# undef RENUM_t8_pb +# undef RENUM_tb +# undef RENUM_tb_p8 +# undef RENUM_tb_pb +# undef REPORT_LOCATION +# undef REPORT_LOCATION_ARGS +# undef REQUIRE_BRANCHJ +# undef REQUIRE_PARENS_PASS +# undef REQUIRE_UNI_RULES +# undef REQUIRE_UTF8 +# undef ReREFCNT_inc +# undef RESTART_PARSE +# undef RESTORE_WARNINGS +# undef RETPUSHNO +# undef RETPUSHUNDEF +# undef RETPUSHYES +# undef RETSETNO +# undef RETSETTARG +# undef RETSETUNDEF +# undef RETSETYES +# undef RETURN_FAIL_ON_RESTART +# undef RETURN_FAIL_ON_RESTART_FLAGP +# undef RETURN_FAIL_ON_RESTART_OR_FLAGS +# undef RETURNOP +# undef RETURNX +# undef RExC_close_parens +# undef RExC_contains_locale +# undef RExC_copy_start_in_constructed +# undef RExC_copy_start_in_input +# undef RExC_emit +# undef RExC_emit_start +# undef RExC_end +# undef RExC_end_op +# undef RExC_flags +# undef RExC_frame_count +# undef RExC_frame_head +# undef RExC_frame_last +# undef RExC_in_lookaround +# undef RExC_in_multi_char_class +# undef RExC_in_script_run +# undef RExC_lastnum +# undef RExC_lastparse +# undef RExC_latest_warn_offset +# undef RExC_logical_npar +# undef RExC_logical_to_parno +# undef RExC_logical_total_parens +# undef RExC_maxlen +# undef RExC_mysv +# undef RExC_mysv1 +# undef RExC_mysv2 +# undef RExC_naughty +# undef RExC_nestroot +# undef RExC_npar +# undef RExC_open_parens +# undef RExC_orig_utf8 +# undef RExC_paren_name_list +# undef RExC_paren_names +# undef RExC_parens_buf_size +# undef RExC_parno_to_logical +# undef RExC_parno_to_logical_next +# undef RExC_parse +# undef RExC_parse_advance +# undef RExC_parse_inc +# undef RExC_parse_inc_by +# undef RExC_parse_inc_if_char +# undef RExC_parse_inc_safe +# undef RExC_parse_inc_safef +# undef RExC_parse_inc_utf8 +# undef RExC_parse_incf +# undef RExC_parse_set +# undef RExC_pm_flags +# undef RExC_precomp +# undef RExC_precomp_end +# undef RExC_recode_x_to_native +# undef RExC_recurse +# undef RExC_recurse_count +# undef RExC_rx +# undef RExC_rx_sv +# undef RExC_rxi +# undef RExC_save_copy_start_in_constructed +# undef RExC_sawback +# undef RExC_seen +# undef RExC_seen_d_op +# undef RExC_seen_zerolen +# undef RExC_sets_depth +# undef RExC_size +# undef RExC_start +# undef RExC_strict +# undef RExC_study_chunk_recursed +# undef RExC_study_chunk_recursed_bytes +# undef RExC_study_chunk_recursed_count +# undef RExC_study_started +# undef RExC_total_parens +# undef RExC_uni_semantics +# undef RExC_unlexed_names +# undef RExC_use_BRANCHJ +# undef RExC_utf8 +# undef RExC_warn_text +# undef RExC_warned_WARN_EXPERIMENTAL__REGEX_SETS +# undef RExC_warned_WARN_EXPERIMENTAL__VLB +# undef RExC_whilem_seen +# undef REXEC_SCREAM +# undef RMS_DIR +# undef RMS_FAC +# undef RMS_FEX +# undef RMS_FNF +# undef RMS_IFI +# undef RMS_ISI +# undef RMS_PRV +# undef ROTL_UV +# undef ROTR_UV +# undef RsPARA +# undef RsRECORD +# undef RsSIMPLE +# undef RsSNARF +# undef RUNOPS_DEFAULT +# undef RX_ANCHORED_SUBSTR +# undef RX_ANCHORED_UTF8 +# undef RX_CHECK_SUBSTR +# undef RX_FLOAT_SUBSTR +# undef RX_FLOAT_UTF8 +# undef RX_GOFS +# undef RX_INTFLAGS +# undef RX_ISTAINTED +# undef RX_LASTCLOSEPAREN +# undef RX_LASTPAREN +# undef RX_LOGICAL_NPARENS +# undef RX_LOGICAL_TO_PARNO +# undef RX_MATCH_COPIED_off +# undef RX_MATCH_COPIED_on +# undef RX_MATCH_COPIED_set +# undef RX_MATCH_COPY_FREE +# undef RX_MATCH_TAINTED +# undef RX_MATCH_TAINTED_off +# undef RX_MATCH_TAINTED_on +# undef RX_MATCH_TAINTED_set +# undef RX_MATCH_UTF8 +# undef RX_MATCH_UTF8_off +# undef RX_MATCH_UTF8_on +# undef RX_MATCH_UTF8_set +# undef RX_MINLEN +# undef RX_MINLENRET +# undef RX_MOTHER_RE +# undef RX_NPARENS +# undef RX_OFFSp +# undef RX_PARNO_TO_LOGICAL +# undef RX_PARNO_TO_LOGICAL_NEXT +# undef RX_PPRIVATE +# undef RX_PRE_PREFIX +# undef RX_QR_ANONCV +# undef RX_REFCNT +# undef RX_SAVED_COPY +# undef RX_SUBBEG +# undef RX_SUBCOFFSET +# undef RX_SUBLEN +# undef RX_SUBOFFSET +# undef RX_SUBSTRS +# undef RX_TAINT_on +# undef RX_ZERO_LEN +# undef RXf_PMf_SHIFT_COMPILETIME_ +# undef RXi_GET +# undef RXi_GET_DECL +# undef RXi_GET_DECL_NULL +# undef RXi_SET +# undef RXp_GOFS +# undef RXp_INTFLAGS +# undef RXp_ISTAINTED +# undef RXp_LOGICAL_NPARENS +# undef RXp_LOGICAL_TO_PARNO +# undef RXp_MATCH_TAINTED +# undef RXp_MATCH_TAINTED_on +# undef RXp_MINLEN +# undef RXp_MINLENRET +# undef RXp_MOTHER_RE +# undef RXp_NPARENS +# undef RXp_PARNO_TO_LOGICAL +# undef RXp_PARNO_TO_LOGICAL_NEXT +# undef RXp_PPRIVATE +# undef RXp_PRE_PREFIX +# undef RXp_QR_ANONCV +# undef RXp_SUBSTRS +# undef RXp_ZERO_LEN +# undef S_iv_add_may_overflow +# undef S_iv_mul_may_overflow +# undef S_iv_sub_may_overflow +# undef S_PAT_MODS +# undef S_uv_add_overflow +# undef S_uv_mul_overflow +# undef S_uv_sub_overflow +# undef SAFE_TRIE_NODENUM +# undef SANY +# undef SANY_t8 +# undef SANY_t8_p8 +# undef SANY_t8_pb +# undef SANY_tb +# undef SANY_tb_p8 +# undef SANY_tb_pb +# undef SAVE_ERRNO +# undef SAVEADELETE +# undef SAVECLEARSV +# undef SAVECOMPILEWARNINGS +# undef SAVECOPFILE +# undef SAVECOPFILE_FREE +# undef SAVECOPFILE_FREE_x +# undef SAVECOPFILE_x +# undef SAVECOPLINE +# undef SAVECOPSTASH_FREE +# undef SAVECURCOPWARNINGS +# undef SAVEFEATUREBITS +# undef SAVEFREEPADNAME +# undef SAVEGENERICPV +# undef SAVEHDELETE +# undef SAVEPADSVANDMORTALIZE +# undef SAVEPARSER +# undef SAVESETSVFLAGS +# undef SAVESHAREDPV +# undef SAVESWITCHSTACK +# undef SAVEt_ADELETE +# undef SAVEt_AELEM +# undef SAVEt_ALLOC +# undef SAVEt_APTR +# undef SAVEt_AV +# undef SAVEt_BOOL +# undef SAVEt_CLEARPADRANGE +# undef SAVEt_CLEARSV +# undef SAVEt_COMPILE_WARNINGS +# undef SAVEt_CURCOP_WARNINGS +# undef SAVEt_DELETE +# undef SAVEt_DESTRUCTOR +# undef SAVEt_DESTRUCTOR_X +# undef SAVEt_FREEOP +# undef SAVEt_FREEPADNAME +# undef SAVEt_FREERCPV +# undef SAVEt_GENERIC_PVREF +# undef SAVEt_GENERIC_SVREF +# undef SAVEt_GP +# undef SAVEt_GVSLOT +# undef SAVEt_GVSV +# undef SAVEt_HELEM +# undef SAVEt_HINTS +# undef SAVEt_HINTS_HH +# undef SAVEt_HPTR +# undef SAVEt_HV +# undef SAVEt_I16 +# undef SAVEt_I32 +# undef SAVEt_I32_SMALL +# undef SAVEt_I8 +# undef SAVEt_INT_SMALL +# undef SAVEt_ITEM +# undef SAVEt_IV +# undef SAVEt_MORTALIZESV +# undef SAVEt_NSTAB +# undef SAVEt_PADSV_AND_MORTALIZE +# undef SAVEt_PARSER +# undef SAVEt_PPTR +# undef SAVEt_RCPV +# undef SAVEt_READONLY_OFF +# undef SAVEt_SAVESWITCHSTACK +# undef SAVEt_SET_SVFLAGS +# undef SAVEt_SHARED_PVREF +# undef SAVEt_SPTR +# undef SAVEt_STACK_POS +# undef SAVEt_STRLEN +# undef SAVEt_STRLEN_SMALL +# undef SAVEt_SV +# undef SAVEt_SVREF +# undef SAVEt_TMPSFLOOR +# undef SAVEt_VPTR +# undef sb_dstr +# undef sb_iters +# undef sb_m +# undef sb_maxiters +# undef sb_orig +# undef sb_rflags +# undef sb_rx +# undef sb_rxres +# undef sb_rxtainted +# undef sb_s +# undef sb_strend +# undef sb_targ +# undef SBOL +# undef SBOL_t8 +# undef SBOL_t8_p8 +# undef SBOL_t8_pb +# undef SBOL_tb +# undef SBOL_tb_p8 +# undef SBOL_tb_pb +# undef SBOX32_CASE_ +# undef SBOX32_MIX3 +# undef SBOX32_MIX4 +# undef SBOX32_STATE_BITS +# undef SBOX32_STATE_BYTES +# undef SBOX32_WARN2 +# undef SBOX32_WARN3 +# undef SBOX32_WARN4 +# undef SBOX32_WARN5 +# undef SBOX32_WARN6 +# undef sC +# undef SCAN_DEF +# undef SCAN_REPL +# undef SCAN_TR +# undef SCAN_VERSION +# undef SCF_DO_STCLASS +# undef SCF_DO_STCLASS_AND +# undef SCF_DO_STCLASS_OR +# undef SCF_DO_SUBSTR +# undef SCF_IN_DEFINE +# undef SCF_SEEN_ACCEPT +# undef SCF_TRIE_DOING_RESTUDY +# undef SCF_TRIE_RESTUDY +# undef SCF_WHILEM_VISITED_POS +# undef Semctl +# undef semun +# undef SEOL +# undef SEOL_t8 +# undef SEOL_t8_p8 +# undef SEOL_t8_pb +# undef SEOL_tb +# undef SEOL_tb_p8 +# undef SEOL_tb_pb +# undef set_ANYOF_SYNTHETIC +# undef SET_MARK_OFFSET +# undef SET_NUMERIC_STANDARD +# undef SET_NUMERIC_UNDERLYING +# undef SET_recode_x_to_native +# undef SET_SVANY_FOR_BODYLESS_IV +# undef SET_SVANY_FOR_BODYLESS_NV +# undef SET_THREAD_SELF +# undef SETGRENT_R_HAS_FPTR +# undef SETi +# undef SETn +# undef SETp +# undef SetProgLen +# undef SETPWENT_R_HAS_FPTR +# undef setregid +# undef setreuid +# undef setSTR_LEN +# undef SETTARG +# undef SETu +# undef SF_BEFORE_EOL +# undef SF_BEFORE_MEOL +# undef SF_BEFORE_SEOL +# undef SF_HAS_EVAL +# undef SF_HAS_PAR +# undef SF_IN_PAR +# undef SF_IS_INF +# undef share_hek_hek +# undef SHARP_S_SKIP +# undef SHUTDOWN_TERM +# undef SHY_NATIVE +# undef sI +# undef SIMPLE +# undef Simple_vFAIL +# undef Simple_vFAILn +# undef SIPHASH_SEED_STATE +# undef SIPROUND +# undef SIZE_ALIGN +# undef Size_t_MAX +# undef SKIP +# undef SKIP_IF_CHAR +# undef SKIP_next +# undef SKIP_next_fail +# undef SKIP_next_fail_t8 +# undef SKIP_next_fail_t8_p8 +# undef SKIP_next_fail_t8_pb +# undef SKIP_next_fail_tb +# undef SKIP_next_fail_tb_p8 +# undef SKIP_next_fail_tb_pb +# undef SKIP_next_t8 +# undef SKIP_next_t8_p8 +# undef SKIP_next_t8_pb +# undef SKIP_next_tb +# undef SKIP_next_tb_p8 +# undef SKIP_next_tb_pb +# undef SKIP_t8 +# undef SKIP_t8_p8 +# undef SKIP_t8_pb +# undef SKIP_tb +# undef SKIP_tb_p8 +# undef SKIP_tb_pb +# undef SLOPPYDIVIDE +# undef socketpair +# undef SRCLOSE +# undef SRCLOSE_t8 +# undef SRCLOSE_t8_p8 +# undef SRCLOSE_t8_pb +# undef SRCLOSE_tb +# undef SRCLOSE_tb_p8 +# undef SRCLOSE_tb_pb +# undef SROPEN +# undef SROPEN_t8 +# undef SROPEN_t8_p8 +# undef SROPEN_t8_pb +# undef SROPEN_tb +# undef SROPEN_tb_p8 +# undef SROPEN_tb_pb +# undef SS_ACCVIO +# undef SS_ADD_BOOL +# undef SS_ADD_DPTR +# undef SS_ADD_DXPTR +# undef SS_ADD_END +# undef SS_ADD_INT +# undef SS_ADD_IV +# undef SS_ADD_LONG +# undef SS_ADD_PTR +# undef SS_ADD_UV +# undef SS_BUFFEROVF +# undef SS_DEVOFFLINE +# undef SS_IVCHAN +# undef SS_MAXPUSH +# undef SS_NOPRIV +# undef SS_NORMAL +# undef ssc_add_cp +# undef ssc_init_zero +# undef ssc_match_all_cp +# undef SSC_MATCHES_EMPTY_STRING +# undef SSCHECK +# undef SSPOPBOOL +# undef SSPOPDPTR +# undef SSPOPDXPTR +# undef SSPOPIV +# undef SSPOPLONG +# undef SSPOPPTR +# undef SSPUSHBOOL +# undef SSPUSHDPTR +# undef SSPUSHDXPTR +# undef SSPUSHIV +# undef SSPUSHLONG +# undef SSPUSHPTR +# undef STANDARD_C +# undef STAR +# undef STAR_t8 +# undef STAR_t8_p8 +# undef STAR_t8_pb +# undef STAR_tb +# undef STAR_tb_p8 +# undef STAR_tb_pb +# undef StashHANDLER +# undef STATUS_ALL_FAILURE +# undef STATUS_ALL_SUCCESS +# undef STATUS_EXIT_SET +# undef STATUS_NATIVE +# undef STATUS_NATIVE_CHILD_SET +# undef STATUS_UNIX_EXIT_SET +# undef STATUS_UNIX_SET +# undef STORE_LC_NUMERIC_SET_STANDARD +# undef STR_LEN +# undef STR_LEN_U8 +# undef STR_LENl +# undef STR_LENs +# undef STR_SZ +# undef STRING +# undef STRINGl +# undef STRINGs +# undef STRUCT_SV +# undef SUBST_TAINT_BOOLRET +# undef SUBST_TAINT_PAT +# undef SUBST_TAINT_REPL +# undef SUBST_TAINT_RETAINT +# undef SUBST_TAINT_STR +# undef SUBVERSION +# undef SUCCEED +# undef SUCCEED_t8 +# undef SUCCEED_t8_p8 +# undef SUCCEED_t8_pb +# undef SUCCEED_tb +# undef SUCCEED_tb_p8 +# undef SUCCEED_tb_pb +# undef SUSPEND +# undef SUSPEND_t8 +# undef SUSPEND_t8_p8 +# undef SUSPEND_t8_pb +# undef SUSPEND_tb +# undef SUSPEND_tb_p8 +# undef SUSPEND_tb_pb +# undef sv_2bool_nomg +# undef sv_2nv +# undef sv_2pv_nomg +# undef sv_cathek +# undef sv_catpvn_nomg_utf8_upgrade +# undef SV_CONST +# undef SV_CONST_BINMODE +# undef SV_CONST_CLEAR +# undef SV_CONST_CLOSE +# undef SV_CONST_DELETE +# undef SV_CONST_DESTROY +# undef SV_CONST_EOF +# undef SV_CONST_EXISTS +# undef SV_CONST_EXTEND +# undef SV_CONST_FETCH +# undef SV_CONST_FETCHSIZE +# undef SV_CONST_FILENO +# undef SV_CONST_FIRSTKEY +# undef SV_CONST_GETC +# undef SV_CONST_NEXTKEY +# undef SV_CONST_OPEN +# undef SV_CONST_POP +# undef SV_CONST_PRINT +# undef SV_CONST_PRINTF +# undef SV_CONST_READ +# undef SV_CONST_READLINE +# undef SV_CONST_SCALAR +# undef SV_CONST_SEEK +# undef SV_CONST_SHIFT +# undef SV_CONST_SPLICE +# undef SV_CONST_STORE +# undef SV_CONST_STORESIZE +# undef SV_CONST_TELL +# undef SV_CONST_TIEARRAY +# undef SV_CONST_TIEHANDLE +# undef SV_CONST_TIEHASH +# undef SV_CONST_TIESCALAR +# undef SV_CONST_UNSHIFT +# undef SV_CONST_UNTIE +# undef SV_CONST_WRITE +# undef SV_CONSTS_COUNT +# undef SV_COW_OTHER_PVS +# undef SV_COW_SHARED_HASH_KEYS +# undef sv_dup_inc_NN +# undef SV_HEAD_ +# undef SV_HEAD_DEBUG_ +# undef SV_HEAD_UNION_ +# undef SV_MUTABLE_RETURN +# undef sv_or_pv_len_utf8 +# undef sv_pvn_force_nomg +# undef sv_setgid +# undef sv_setuid +# undef SV_UNDEF_RETURNS_NULL +# undef SvARENA_CHAIN +# undef SvARENA_CHAIN_SET +# undef SvCANEXISTDELETE +# undef SvCOMPILED +# undef SvCOMPILED_off +# undef SvCOMPILED_on +# undef SvDESTROYABLE +# undef SvEND_set +# undef SvENDx +# undef SvFAKE +# undef SvFAKE_off +# undef SvFAKE_on +# undef SvGID +# undef SvGMAGICAL_off +# undef SvGMAGICAL_on +# undef SvGROW_mutable +# undef SvIMMORTAL +# undef SvIMMORTAL_INTERP +# undef SvIMMORTAL_TRUE +# undef SvIOK_nog +# undef SvIOK_nogthink +# undef SvIOKp_on +# undef SvIS_FREED +# undef SvIsCOW_off +# undef SvIsCOW_on +# undef SvIsUV_off +# undef SvIV_please_nomg +# undef SvIVXx +# undef SvLENx +# undef SvMAGICAL_off +# undef SvMAGICAL_on +# undef SvNIOK_nog +# undef SvNIOK_nogthink +# undef SvNOK_nog +# undef SvNOK_nogthink +# undef SvNOKp_on +# undef SvNVXx +# undef SvOK_off_exc_UV +# undef SvOKp +# undef SvOOK_on +# undef SvOURSTASH +# undef SvOURSTASH_set +# undef SvPAD_OUR +# undef SvPAD_OUR_on +# undef SvPAD_STATE +# undef SvPAD_STATE_on +# undef SvPAD_TYPED +# undef SvPAD_TYPED_on +# undef SvPADMY_on +# undef SvPADSTALE +# undef SvPADSTALE_off +# undef SvPADSTALE_on +# undef SvPADTMP_off +# undef SvPADTMP_on +# undef SVpav_REIFY +# undef SvPCS_IMPORTED +# undef SvPCS_IMPORTED_off +# undef SvPCS_IMPORTED_on +# undef SVphv_CLONEABLE +# undef SVphv_LAZYDEL +# undef SVphv_SHAREKEYS +# undef SvPOK_byte_nog +# undef SvPOK_byte_nogthink +# undef SvPOK_byte_pure_nogthink +# undef SvPOK_nog +# undef SvPOK_nogthink +# undef SvPOK_or_cached_IV +# undef SvPOK_pure_nogthink +# undef SvPOK_utf8_nog +# undef SvPOK_utf8_nogthink +# undef SvPOK_utf8_pure_nogthink +# undef SvPOKp_on +# undef SVprv_PCS_IMPORTED +# undef SvREFCNT_IMMORTAL +# undef SvRMAGICAL_off +# undef SvRV_const +# undef SvRVx +# undef SvSCREAM +# undef SvSCREAM_off +# undef SvSCREAM_on +# undef SvSetSV_nosteal_and +# undef SvSMAGICAL_off +# undef SvSMAGICAL_on +# undef SVt_FIRST +# undef SVt_PVBM +# undef SvTEMP +# undef SvTEMP_on +# undef SvTRUEx_nomg +# undef SvUID +# undef SvUOK_nog +# undef SvUOK_nogthink +# undef SvWEAKREF_off +# undef SvWEAKREF_on +# undef SWITCHSTACK +# undef SYSTEM_GMTIME_MAX +# undef SYSTEM_GMTIME_MIN +# undef SYSTEM_LOCALTIME_MAX +# undef SYSTEM_LOCALTIME_MIN +# undef TAIL +# undef TAIL_t8 +# undef TAIL_t8_p8 +# undef TAIL_t8_pb +# undef TAIL_tb +# undef TAIL_tb_p8 +# undef TAIL_tb_pb +# undef tC +# undef THREAD_CREATE_NEEDS_STACK +# undef tI +# undef TIED_METHOD_ARGUMENTS_ON_STACK +# undef TIED_METHOD_MORTALIZE_NOT_NEEDED +# undef TIED_METHOD_SAY +# undef TO_INTERNAL_SIZE +# undef TO_OUTPUT_WARNINGS +# undef to_posix_FOLD +# undef toCTRL +# undef TOO_LATE_FOR +# undef TOO_LATE_FOR_ +# undef TOO_NAUGHTY +# undef TOPi +# undef TOPl +# undef TOPm1s +# undef TOPMARK +# undef TOPn +# undef TOPp +# undef TOPp1s +# undef TOPpx +# undef TOPu +# undef TOPul +# undef toU8_FOLD_LC +# undef toUPPER_LATIN1_MOD +# undef toUSE_UNI_CHARSET_NOT_DEPENDS +# undef TR_DELETE +# undef TR_OOB +# undef TR_R_EMPTY +# undef TR_SPECIAL_HANDLING +# undef TR_UNLISTED +# undef TR_UNMAPPED +# undef TRIE +# undef TRIE_BITMAP +# undef TRIE_BITMAP_BYTE +# undef TRIE_BITMAP_CLEAR +# undef TRIE_BITMAP_SET +# undef TRIE_BITMAP_TEST +# undef TRIE_CHARCOUNT +# undef TRIE_next +# undef TRIE_next_fail +# undef TRIE_next_fail_t8 +# undef TRIE_next_fail_t8_p8 +# undef TRIE_next_fail_t8_pb +# undef TRIE_next_fail_tb +# undef TRIE_next_fail_tb_p8 +# undef TRIE_next_fail_tb_pb +# undef TRIE_next_t8 +# undef TRIE_next_t8_p8 +# undef TRIE_next_t8_pb +# undef TRIE_next_tb +# undef TRIE_next_tb_p8 +# undef TRIE_next_tb_pb +# undef TRIE_NODEIDX +# undef TRIE_NODENUM +# undef TRIE_STCLASS +# undef TRIE_STUDY_OPT +# undef TRIE_t8 +# undef TRIE_t8_p8 +# undef TRIE_t8_pb +# undef TRIE_tb +# undef TRIE_tb_p8 +# undef TRIE_tb_pb +# undef TRIE_WORDS_OFFSET +# undef TRIEC +# undef TRIEC_t8 +# undef TRIEC_t8_p8 +# undef TRIEC_t8_pb +# undef TRIEC_tb +# undef TRIEC_tb_p8 +# undef TRIEC_tb_pb +# undef TRYAGAIN +# undef tryAMAGICbin_MG +# undef tryAMAGICun_MG +# undef TS_W32_BROKEN_LOCALECONV +# undef TURN_OFF_WARNINGS_IN_SUBSTITUTE_PARSE +# undef TWO_BYTE_UTF8_TO_UNI +# undef type1_ +# undef TYPE_CHARS +# undef TYPE_DIGITS +# undef U16_MIN +# undef U32_MAX_P1 +# undef U32_MAX_P1_HALF +# undef U32_MIN +# undef U8_MIN +# undef U_I +# undef U_L +# undef U_S +# undef UCHARAT +# undef UINT +# undef UNI_DISPLAY_TR_ +# undef UNI_SEMANTICS +# undef UNICODE_ALLOW_ABOVE_IV_MAX +# undef UNICODE_ALLOW_ANY +# undef UNICODE_ALLOW_SUPER +# undef UNICODE_ALLOW_SURROGATE +# undef UNICODE_BYTE_ORDER_MARK +# undef UNICODE_DOT_DOT_VERSION +# undef UNICODE_DOT_VERSION +# undef UNICODE_GOT_NONCHAR +# undef UNICODE_GOT_SUPER +# undef UNICODE_GOT_SURROGATE +# undef UNICODE_GREEK_CAPITAL_LETTER_SIGMA +# undef UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA +# undef UNICODE_GREEK_SMALL_LETTER_SIGMA +# undef UNICODE_IS_32_CONTIGUOUS_NONCHARS +# undef UNICODE_IS_BYTE_ORDER_MARK +# undef UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER +# undef UNICODE_IS_NONCHAR_GIVEN_NOT_SUPER +# undef UNICODE_SURROGATE_LAST +# undef UNISKIP +# undef UNKNOWN_ERRNO_MSG +# undef UNLESSM +# undef UNLESSM_t8 +# undef UNLESSM_t8_p8 +# undef UNLESSM_t8_pb +# undef UNLESSM_tb +# undef UNLESSM_tb_p8 +# undef UNLESSM_tb_pb +# undef UNLINK +# undef UNLOCK_LC_NUMERIC_STANDARD +# undef UPDATE_WARNINGS_LOC +# undef UPG_VERSION +# undef uproot_SV +# undef USE_ENVIRON_ARRAY +# undef USE_GRENT_BUFFER +# undef USE_GRENT_FPTR +# undef USE_GRENT_PTR +# undef USE_HOSTENT_BUFFER +# undef USE_HOSTENT_ERRNO +# undef USE_HOSTENT_PTR +# undef USE_LEFT +# undef USE_LOCALE +# undef USE_LOCALE_ADDRESS +# undef USE_LOCALE_COLLATE +# undef USE_LOCALE_CTYPE +# undef USE_LOCALE_IDENTIFICATION +# undef USE_LOCALE_MEASUREMENT +# undef USE_LOCALE_MESSAGES +# undef USE_LOCALE_MONETARY +# undef USE_LOCALE_NAME +# undef USE_LOCALE_NUMERIC +# undef USE_LOCALE_PAPER +# undef USE_LOCALE_SYNTAX +# undef USE_LOCALE_TELEPHONE +# undef USE_LOCALE_THREADS +# undef USE_LOCALE_TIME +# undef USE_LOCALE_TOD +# undef USE_NETENT_BUFFER +# undef USE_NETENT_ERRNO +# undef USE_NETENT_PTR +# undef USE_PL_CUR_LC_ALL +# undef USE_PL_CURLOCALES +# undef USE_POSIX_2008_LOCALE +# undef USE_PROTOENT_BUFFER +# undef USE_PROTOENT_PTR +# undef USE_PWENT_BUFFER +# undef USE_PWENT_FPTR +# undef USE_PWENT_PTR +# undef USE_QUERYLOCALE +# undef USE_SERVENT_BUFFER +# undef USE_SERVENT_PTR +# undef USE_SPENT_BUFFER +# undef USE_SPENT_PTR +# undef USE_STAT_RDEV +# undef USE_SYSTEM_GMTIME +# undef USE_SYSTEM_LOCALTIME +# undef USE_THREAD_SAFE_LOCALE +# undef USE_TM64 +# undef USE_UTF8_IN_NAMES +# undef USEMYBINMODE +# undef USER_PROP_MUTEX_INIT +# undef USER_PROP_MUTEX_TERM +# undef UTF +# undef UTF8_ALLOW_FFFF +# undef UTF8_ALLOW_LONG_AND_ITS_VALUE +# undef UTF8_ALLOW_SURROGATE +# undef UTF8_DISALLOW_ABOVE_31_BIT +# undef UTF8_DISALLOW_FE_FF +# undef UTF8_FORCE_WARN_IF_MALFORMED +# undef UTF8_FORCE_WARN_IF_MALFORMED_BIT_POS_ +# undef UTF8_GOT_ABOVE_31_BIT +# undef UTF8_GOT_EMPTY_BIT_POS_ +# undef UTF8_GOT_LONG_WITH_VALUE +# undef UTF8_GOT_LONG_WITH_VALUE_BIT_POS_ +# undef UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC +# undef UTF8_IS_SUPER_NO_CHECK_ +# undef UTF8_TWO_BYTE_HI_nocast +# undef UTF8_TWO_BYTE_LO +# undef UTF8_TWO_BYTE_LO_nocast +# undef UTF8_WARN_ABOVE_31_BIT +# undef UTF8_WARN_FE_FF +# undef UTF_FIRST_CONT_BYTE +# undef UTF_FIRST_CONT_BYTE_110000_ +# undef UTF_START_BYTE_110000_ +# undef UV_DIG +# undef UV_MAX_P1 +# undef UV_MAX_P1_HALF +# undef VCMP +# undef VERB +# undef VERB_t8 +# undef VERB_t8_p8 +# undef VERB_t8_pb +# undef VERB_tb +# undef VERB_tb_p8 +# undef VERB_tb_pb +# undef vFAIL +# undef vFAIL2 +# undef vFAIL2utf8f +# undef vFAIL3 +# undef vFAIL3utf8f +# undef vFAIL4 +# undef VNORMAL +# undef VNUMIFY +# undef VOL +# undef VOLATILE_REF +# undef VSTRINGIFY +# undef VT_NATIVE +# undef vtohl +# undef VTYPECHECK +# undef VUTIL_REPLACE_CORE +# undef VVERIFY +# undef vWARN +# undef vWARN3 +# undef vWARN4 +# undef vWARN5 +# undef vWARN_dep +# undef VXS +# undef VXS_CLASS +# undef VXS_RETURN_M_SV +# undef VXSp +# undef VXSXSDP +# undef WARN_ALLstring +# undef WARN_DEFAULTstring +# undef WARN_HELPER_ +# undef warn_non_literal_string +# undef WARN_NONEstring +# undef WARNshift +# undef WARNsize +# undef WHILEM +# undef WHILEM_A_max +# undef WHILEM_A_max_fail +# undef WHILEM_A_max_fail_t8 +# undef WHILEM_A_max_fail_t8_p8 +# undef WHILEM_A_max_fail_t8_pb +# undef WHILEM_A_max_fail_tb +# undef WHILEM_A_max_fail_tb_p8 +# undef WHILEM_A_max_fail_tb_pb +# undef WHILEM_A_max_t8 +# undef WHILEM_A_max_t8_p8 +# undef WHILEM_A_max_t8_pb +# undef WHILEM_A_max_tb +# undef WHILEM_A_max_tb_p8 +# undef WHILEM_A_max_tb_pb +# undef WHILEM_A_min +# undef WHILEM_A_min_fail +# undef WHILEM_A_min_fail_t8 +# undef WHILEM_A_min_fail_t8_p8 +# undef WHILEM_A_min_fail_t8_pb +# undef WHILEM_A_min_fail_tb +# undef WHILEM_A_min_fail_tb_p8 +# undef WHILEM_A_min_fail_tb_pb +# undef WHILEM_A_min_t8 +# undef WHILEM_A_min_t8_p8 +# undef WHILEM_A_min_t8_pb +# undef WHILEM_A_min_tb +# undef WHILEM_A_min_tb_p8 +# undef WHILEM_A_min_tb_pb +# undef WHILEM_A_pre +# undef WHILEM_A_pre_fail +# undef WHILEM_A_pre_fail_t8 +# undef WHILEM_A_pre_fail_t8_p8 +# undef WHILEM_A_pre_fail_t8_pb +# undef WHILEM_A_pre_fail_tb +# undef WHILEM_A_pre_fail_tb_p8 +# undef WHILEM_A_pre_fail_tb_pb +# undef WHILEM_A_pre_t8 +# undef WHILEM_A_pre_t8_p8 +# undef WHILEM_A_pre_t8_pb +# undef WHILEM_A_pre_tb +# undef WHILEM_A_pre_tb_p8 +# undef WHILEM_A_pre_tb_pb +# undef WHILEM_B_max +# undef WHILEM_B_max_fail +# undef WHILEM_B_max_fail_t8 +# undef WHILEM_B_max_fail_t8_p8 +# undef WHILEM_B_max_fail_t8_pb +# undef WHILEM_B_max_fail_tb +# undef WHILEM_B_max_fail_tb_p8 +# undef WHILEM_B_max_fail_tb_pb +# undef WHILEM_B_max_t8 +# undef WHILEM_B_max_t8_p8 +# undef WHILEM_B_max_t8_pb +# undef WHILEM_B_max_tb +# undef WHILEM_B_max_tb_p8 +# undef WHILEM_B_max_tb_pb +# undef WHILEM_B_min +# undef WHILEM_B_min_fail +# undef WHILEM_B_min_fail_t8 +# undef WHILEM_B_min_fail_t8_p8 +# undef WHILEM_B_min_fail_t8_pb +# undef WHILEM_B_min_fail_tb +# undef WHILEM_B_min_fail_tb_p8 +# undef WHILEM_B_min_fail_tb_pb +# undef WHILEM_B_min_t8 +# undef WHILEM_B_min_t8_p8 +# undef WHILEM_B_min_t8_pb +# undef WHILEM_B_min_tb +# undef WHILEM_B_min_tb_p8 +# undef WHILEM_B_min_tb_pb +# undef WHILEM_t8 +# undef WHILEM_t8_p8 +# undef WHILEM_t8_pb +# undef WHILEM_tb +# undef WHILEM_tb_p8 +# undef WHILEM_tb_pb +# undef WIN32SCK_IS_STDSCK +# undef with_t_UTF8ness +# undef with_tp_UTF8ness +# undef xI +# undef xI_offset +# undef xio_any +# undef xio_dirp +# undef XOPd_xop_class +# undef XOPd_xop_desc +# undef XOPd_xop_dump +# undef XOPd_xop_name +# undef XOPd_xop_peep +# undef XORSHIFT128_set +# undef XPUSHundef +# undef XPV_HEAD_ +# undef XPVCV_COMMON_ +# undef YYEMPTY +# undef YYSTYPE_IS_TRIVIAL +# undef ZAPHOD32_FINALIZE +# undef ZAPHOD32_MIX +# undef ZAPHOD32_SCRAMBLE32 +# undef ZAPHOD32_WARN2 +# undef ZAPHOD32_WARN3 +# undef ZAPHOD32_WARN4 +# undef ZAPHOD32_WARN5 +# undef ZAPHOD32_WARN6 +# if !defined(PERL_EXT) +# undef AMG_CALLun +# undef AMG_CALLunary +# undef AMGf_assign +# undef AMGf_noright +# undef AMGf_unary +# undef ASCTIME_LOCK +# undef ASCTIME_UNLOCK +# undef av_tindex_skip_len_mg +# undef av_top_index_skip_len_mg +# undef BhkENTRY +# undef BHKf_bhk_eval +# undef BHKf_bhk_post_end +# undef BHKf_bhk_pre_end +# undef BHKf_bhk_start +# undef BhkFLAGS +# undef blk_gimme +# undef blk_oldsaveix +# undef BmPREVIOUS +# undef BmRARE +# undef BmUSEFUL +# undef CALLREG_NAMED_BUFF_ALL +# undef CALLREG_NAMED_BUFF_FETCH +# undef CALLREG_NAMED_BUFF_NEXTKEY +# undef CALLREGCOMP_ENG +# undef CALLREGEXEC +# undef CAN_COW_FLAGS +# undef CAN_COW_MASK +# undef CASE_STD_PMMOD_FLAGS_PARSE_SET +# undef CATCH_GET +# undef CATCH_SET +# undef cBINOPx +# undef CC_QUOTEMETA_ +# undef CC_VERTSPACE_ +# undef cCOPo +# undef cCOPx +# undef CHANGE_MULTICALL_FLAGS +# undef CHECK_AND_WARN_PROBLEMATIC_LOCALE_ +# undef ckDEAD +# undef cLISTOPo +# undef cLISTOPx +# undef cLOGOPo +# undef cLOOPo +# undef cLOOPx +# undef cMETHOPo +# undef cMETHOPx +# undef COP_FEATURE_SIZE +# undef CopHINTHASH_get +# undef CowREFCNT +# undef cPMOPo +# undef cPMOPx +# undef cPVOPo +# undef cPVOPx +# undef cSVOPo +# undef cSVOPo_sv +# undef cSVOPx +# undef cSVOPx_sv +# undef cUNOP_AUXo +# undef cUNOP_AUXx +# undef cUNOPo +# undef CvANON +# undef CvANON_off +# undef CvANONCONST +# undef CvANONCONST_off +# undef CvANONCONST_on +# undef CvCLONED +# undef CvCONST +# undef CVf_ANON +# undef CVf_ANONCONST +# undef CVf_AUTOLOAD +# undef CVf_CLONE +# undef CVf_CLONED +# undef CVf_CVGV_RC +# undef CVf_DYNFILE +# undef CVf_EVAL_COMPILED +# undef CVf_HASEVAL +# undef CVf_IsMETHOD +# undef CVf_LEXICAL +# undef CVf_LVALUE +# undef CVf_NAMED +# undef CVf_NODEBUG +# undef CVf_NOWARN_AMBIGUOUS +# undef CVf_REFCOUNTED_ANYSV +# undef CVf_SIGNATURE +# undef CVf_UNIQUE +# undef CVf_WEAKOUTSIDE +# undef CVf_XS_RCSTACK +# undef CvGV_set +# undef CvHSCXT +# undef CvISXSUB_on +# undef CvLVALUE +# undef CvLVALUE_on +# undef CvNAMED +# undef CvREFCOUNTED_ANYSV_on +# undef CvXS_RCSTACK_off +# undef CvXS_RCSTACK_on +# undef CxMULTICALL +# undef CXp_EVALBLOCK +# undef CXp_FINALLY +# undef CXp_FOR_DEF +# undef CXp_FOR_GV +# undef CXp_FOR_LVREF +# undef CXp_FOR_PAD +# undef CXp_HASARGS +# undef CXp_MULTICALL +# undef CXp_ONCE +# undef CXp_REAL +# undef CXp_SUB_RE +# undef CXp_SUB_RE_FAKE +# undef CXp_TRY +# undef CXt_DEFER +# undef DEBUG_BOTH_FLAGS_TEST_ +# undef DEBUG_C +# undef DEBUG_C_FLAG +# undef DEBUG_C_TEST +# undef DEBUG_C_TEST_ +# undef DEBUG_L_FLAG +# undef DEBUG_Lv +# undef DEBUG_Lv_TEST +# undef DEBUG_Lv_TEST_ +# undef DEBUG_r +# undef DEBUG_r_FLAG +# undef DEBUG_X_FLAG +# undef DEBUG_Xv +# undef DEBUG_Xv_TEST +# undef DEBUG_Xv_TEST_ +# undef DEBUG_y_TEST_ +# undef dMY_CXT_INTERP +# undef DOUBLE_HAS_NAN +# undef DPTR2FPTR +# undef ENV_LOCK +# undef ENV_READ_LOCK +# undef ENV_READ_UNLOCK +# undef ENV_UNLOCK +# undef ENVr_LOCALEr_LOCK +# undef ENVr_LOCALEr_UNLOCK +# undef EVAL_INEVAL +# undef EVAL_INREQUIRE +# undef EVAL_KEEPERR +# undef EVAL_NULL +# undef EVAL_RE_REPARSING +# undef EVAL_WARNONLY +# undef FPTR2DPTR +# undef FreeOp +# undef G_FAKINGEVAL +# undef G_NODEBUG +# undef G_RE_REPARSING +# undef G_UNDEF_FILL +# undef G_WRITING_TO_STDERR +# undef GCC_DIAG_IGNORE +# undef GCC_DIAG_IGNORE_STMT +# undef GCC_DIAG_PRAGMA +# undef GCC_DIAG_RESTORE +# undef GCC_DIAG_RESTORE_STMT +# undef generic_LC_invlist_uvchr_ +# undef generic_LC_uvchr_ +# undef GLOBAL_PAT_MOD +# undef GREEK_CAPITAL_LETTER_MU +# undef GREEK_SMALL_LETTER_MU +# undef gv_fetchmethod_flags +# undef GvAVn +# undef GvCVu +# undef GvEGV +# undef GvESTASH +# undef GVf_ASSUMECV +# undef GVf_IMPORTED +# undef GVf_IMPORTED_AV +# undef GVf_IMPORTED_CV +# undef GVf_IMPORTED_HV +# undef GVf_IMPORTED_SV +# undef GVf_INTRO +# undef GVf_ONCE_FATAL +# undef GVf_RESERVED +# undef GvFILE_HEK +# undef GvFILEGV +# undef GvFILEx +# undef GvGPFLAGS +# undef GvHVn +# undef GvLINE +# undef gwENVr_LOCALEr_LOCK +# undef gwENVr_LOCALEr_UNLOCK +# undef hasWARNBIT +# undef HE_ARENA_ROOT_IX +# undef HIGHEST_REGCOMP_DOT_H_SYNC_ +# undef HINT_BLOCK_SCOPE +# undef HINT_INTEGER +# undef HINT_LOCALIZE_HH +# undef HINT_RE_EVAL +# undef HINT_STRICT_REFS +# undef HSf_NOCHK +# undef HSm_INTRPSIZE +# undef HSm_KEY_MATCH +# undef HV_DISABLE_UVAR_XKEY +# undef HvENAME_get +# undef HvENAMELEN_get +# undef HvHasENAME +# undef HvRAND_get +# undef HvRITER +# undef I32_MIN +# undef INT32_MIN +# undef invlist_intersection_ +# undef invlist_subtract_ +# undef invlist_union_ +# undef is_posix_ASCII +# undef is_VERTWS_cp_high +# undef is_VERTWS_high +# undef isALNUM_uni +# undef isALPHA_uni +# undef isALPHANUMERIC_uni +# undef isASCII_uni +# undef isBLANK_uni +# undef isCNTRL_uni +# undef isDIGIT_uni +# undef isGRAPH_uni +# undef isIDCONT_uni +# undef isIDFIRST_uni +# undef isLOWER_uni +# undef isPRINT_uni +# undef isPSXSPC_uni +# undef isPUNCT_uni +# undef isQUOTEMETA +# undef isREGEXP +# undef isSPACE_uni +# undef isU8_ASCII_LC +# undef isUPPER_uni +# undef isUTF8_POSSIBLY_PROBLEMATIC +# undef isVERTWS_uni +# undef isVERTWS_utf8_safe +# undef isVERTWS_uvchr +# undef isWORDCHAR_uni +# undef isXDIGIT_uni +# undef KEYWORD_PLUGIN_EXPR +# undef KEYWORD_PLUGIN_STMT +# undef kUNOP +# undef LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS +# undef LATIN_SMALL_LETTER_SHARP_S +# undef LATIN_SMALL_LETTER_SHARP_S_NATIVE +# undef LATIN_SMALL_LETTER_Y_WITH_DIAERESIS +# undef LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE +# undef LATIN_SMALL_LIGATURE_ST_UTF8 +# undef LC_COLLATE_LOCK +# undef LC_COLLATE_UNLOCK +# undef LC_NUMERIC_UNLOCK +# undef LDBL_DIG +# undef LEAVE_SCOPE +# undef LINE_Tf +# undef LOCALE_LOCK +# undef LOCALE_READ_LOCK +# undef LOCALE_READ_UNLOCK +# undef LOCALE_UNLOCK +# undef LvTARG +# undef LvTARGLEN +# undef LvTARGOFF +# undef LvTYPE +# undef MAX_UNICODE_UTF8_BYTES +# undef MDEREF_ACTION_MASK +# undef MDEREF_AV_gvav_aelem +# undef MDEREF_AV_gvsv_vivify_rv2av_aelem +# undef MDEREF_AV_padav_aelem +# undef MDEREF_AV_padsv_vivify_rv2av_aelem +# undef MDEREF_AV_pop_rv2av_aelem +# undef MDEREF_AV_vivify_rv2av_aelem +# undef MDEREF_FLAG_last +# undef MDEREF_HV_gvhv_helem +# undef MDEREF_HV_gvsv_vivify_rv2hv_helem +# undef MDEREF_HV_padhv_helem +# undef MDEREF_HV_padsv_vivify_rv2hv_helem +# undef MDEREF_HV_pop_rv2hv_helem +# undef MDEREF_HV_vivify_rv2hv_helem +# undef MDEREF_INDEX_const +# undef MDEREF_INDEX_gvsv +# undef MDEREF_INDEX_MASK +# undef MDEREF_INDEX_none +# undef MDEREF_INDEX_padsv +# undef MDEREF_MASK +# undef MDEREF_reload +# undef MDEREF_SHIFT +# undef memBEGINPs +# undef memBEGINs +# undef MGf_REFCOUNTED +# undef MGf_REQUIRE_GV +# undef MICRO_SIGN +# undef MICRO_SIGN_NATIVE +# undef MKTIME_LOCK +# undef MKTIME_UNLOCK +# undef NATIVE_UTF8_TO_I8 +# undef NOT_IN_NUMERIC_UNDERLYING_ +# undef NOT_REACHED +# undef NV_BIG_ENDIAN +# undef NV_BODYLESS_UNION_ +# undef NV_DIG +# undef NV_EPSILON +# undef NV_IMPLICIT_BIT +# undef NV_LITTLE_ENDIAN +# undef NV_MANT_DIG +# undef NV_MAX +# undef NV_MAX_10_EXP +# undef NV_MAX_EXP +# undef NV_MIN +# undef NV_MIN_10_EXP +# undef NV_MIN_EXP +# undef NV_MIX_ENDIAN +# undef NV_NAN_BITS +# undef NV_NAN_IS_QUIET +# undef NV_NAN_IS_SIGNALING +# undef NV_NAN_PAYLOAD_MASK +# undef NV_NAN_PAYLOAD_MASK_IEEE_754_128_BE +# undef NV_NAN_PAYLOAD_MASK_IEEE_754_128_LE +# undef NV_NAN_PAYLOAD_MASK_IEEE_754_64_BE +# undef NV_NAN_PAYLOAD_MASK_IEEE_754_64_LE +# undef NV_NAN_PAYLOAD_MASK_SKIP_EIGHT +# undef NV_NAN_PAYLOAD_PERM +# undef NV_NAN_PAYLOAD_PERM_0_TO_7 +# undef NV_NAN_PAYLOAD_PERM_7_TO_0 +# undef NV_NAN_PAYLOAD_PERM_IEEE_754_128_BE +# undef NV_NAN_PAYLOAD_PERM_IEEE_754_128_LE +# undef NV_NAN_PAYLOAD_PERM_IEEE_754_64_BE +# undef NV_NAN_PAYLOAD_PERM_IEEE_754_64_LE +# undef NV_NAN_PAYLOAD_PERM_SKIP_EIGHT +# undef NV_NAN_QS_BIT +# undef NV_NAN_QS_BIT_OFFSET +# undef NV_NAN_QS_BIT_SHIFT +# undef NV_NAN_QS_BYTE +# undef NV_NAN_QS_BYTE_OFFSET +# undef NV_NAN_QS_QUIET +# undef NV_NAN_QS_SIGNALING +# undef NV_NAN_QS_TEST +# undef NV_NAN_QS_XOR +# undef NV_NAN_SET_QUIET +# undef NV_NAN_SET_SIGNALING +# undef NV_VAX_ENDIAN +# undef NV_WITHIN_IV +# undef NV_WITHIN_UV +# undef NV_X86_80_BIT +# undef OA_AVREF +# undef OA_BASEOP_OR_UNOP +# undef OA_CLASS_MASK +# undef OA_CVREF +# undef OA_DANGEROUS +# undef OA_DEFGV +# undef OA_FILEREF +# undef OA_FILESTATOP +# undef OA_FOLDCONST +# undef OA_HVREF +# undef OA_LIST +# undef OA_LOOPEXOP +# undef OA_MARK +# undef OA_METHOP +# undef OA_OPTIONAL +# undef OA_OTHERINT +# undef OA_RETSCALAR +# undef OA_SCALAR +# undef OA_SCALARREF +# undef OA_TARGET +# undef OA_TARGLEX +# undef OA_UNOP_AUX +# undef OASHIFT +# undef OP_LVALUE_NO_CROAK +# undef op_pmflags +# undef op_pmoffset +# undef OPCODE +# undef OPf_FOLDED +# undef OPf_PARENS +# undef OPf_SPECIAL +# undef OPf_WANT +# undef OPpALLOW_FAKE +# undef OPpARG1_MASK +# undef OPpARG2_MASK +# undef OPpARG3_MASK +# undef OPpARG4_MASK +# undef OPpARG_IF_FALSE +# undef OPpARG_IF_UNDEF +# undef OPpARGELEM_AV +# undef OPpARGELEM_HV +# undef OPpARGELEM_MASK +# undef OPpARGELEM_SV +# undef OPpASSIGN_BACKWARDS +# undef OPpASSIGN_COMMON_AGG +# undef OPpASSIGN_COMMON_RC1 +# undef OPpASSIGN_COMMON_SCALAR +# undef OPpASSIGN_CV_TO_GV +# undef OPpASSIGN_TRUEBOOL +# undef OPpAVHVSWITCH_MASK +# undef OPpCONCAT_NESTED +# undef OPpCONST_BARE +# undef OPpCONST_ENTERED +# undef OPpCONST_NOVER +# undef OPpCONST_SHORTCIRCUIT +# undef OPpCONST_STRICT +# undef OPpCONST_TOKEN_BITS +# undef OPpCONST_TOKEN_FILE +# undef OPpCONST_TOKEN_LINE +# undef OPpCONST_TOKEN_MASK +# undef OPpCONST_TOKEN_PACKAGE +# undef OPpCONST_TOKEN_SHIFT +# undef OPpCOREARGS_DEREF1 +# undef OPpCOREARGS_DEREF2 +# undef OPpCOREARGS_PUSHMARK +# undef OPpCOREARGS_SCALARMOD +# undef OPpDEFER_FINALLY +# undef OPpDEREF +# undef OPpDEREF_AV +# undef OPpDEREF_HV +# undef OPpDEREF_SV +# undef OPpDONT_INIT_GV +# undef OPpEARLY_CV +# undef OPpEMPTYAVHV_IS_HV +# undef OPpENTERSUB_AMPER +# undef OPpENTERSUB_DB +# undef OPpENTERSUB_INARGS +# undef OPpENTERSUB_LVAL_MASK +# undef OPpENTERSUB_NOPAREN +# undef OPpEVAL_BYTES +# undef OPpEVAL_COPHH +# undef OPpEVAL_EVALSV +# undef OPpEVAL_HAS_HH +# undef OPpEVAL_RE_REPARSING +# undef OPpEVAL_UNICODE +# undef OPpEXISTS_SUB +# undef OPpFLIP_LINENUM +# undef OPpFT_ACCESS +# undef OPpFT_AFTER_t +# undef OPpFT_STACKED +# undef OPpFT_STACKING +# undef OPpHELEMEXISTSOR_DELETE +# undef OPpHINT_STRICT_REFS +# undef OPpHUSH_VMSISH +# undef OPpINDEX_BOOLNEG +# undef OPpINITFIELD_AV +# undef OPpINITFIELD_HV +# undef OPpINITFIELDS +# undef OPpITER_DEF +# undef OPpITER_INDEXED +# undef OPpITER_REVERSED +# undef OPpKVSLICE +# undef OPpLIST_GUESSED +# undef OPpLVAL_DEFER +# undef OPpLVAL_INTRO +# undef OPpLVALUE +# undef OPpLVREF_AV +# undef OPpLVREF_CV +# undef OPpLVREF_ELEM +# undef OPpLVREF_HV +# undef OPpLVREF_ITER +# undef OPpLVREF_SV +# undef OPpLVREF_TYPE +# undef OPpMAY_RETURN_CONSTANT +# undef OPpMAYBE_LVSUB +# undef OPpMAYBE_TRUEBOOL +# undef OPpMETH_NO_BAREWORD_IO +# undef OPpMULTICONCAT_APPEND +# undef OPpMULTICONCAT_FAKE +# undef OPpMULTICONCAT_STRINGIFY +# undef OPpMULTIDEREF_DELETE +# undef OPpMULTIDEREF_EXISTS +# undef OPpOFFBYONE +# undef OPpOPEN_IN_CRLF +# undef OPpOPEN_IN_RAW +# undef OPpOPEN_OUT_CRLF +# undef OPpOPEN_OUT_RAW +# undef OPpOUR_INTRO +# undef OPpPAD_STATE +# undef OPpPADHV_ISKEYS +# undef OPpPADRANGE_COUNTMASK +# undef OPpPADRANGE_COUNTSHIFT +# undef OPpPARAM_IF_FALSE +# undef OPpPARAM_IF_UNDEF +# undef OPpPV_IS_UTF8 +# undef OPpREFCOUNTED +# undef OPpREPEAT_DOLIST +# undef OPpREVERSE_INPLACE +# undef OPpRV2HV_ISKEYS +# undef OPpSELF_IN_PAD +# undef OPpSLICE +# undef OPpSLICEWARNING +# undef OPpSORT_DESCEND +# undef OPpSORT_INPLACE +# undef OPpSORT_INTEGER +# undef OPpSORT_NUMERIC +# undef OPpSORT_REVERSE +# undef OPpSPLIT_ASSIGN +# undef OPpSPLIT_IMPLIM +# undef OPpSPLIT_LEX +# undef OPpSUBSTR_REPL_FIRST +# undef OPpTARGET_MY +# undef OPpTRANS_ALL +# undef OPpTRANS_BITS +# undef OPpTRANS_CAN_FORCE_UTF8 +# undef OPpTRANS_COMPLEMENT +# undef OPpTRANS_DELETE +# undef OPpTRANS_FROM_UTF +# undef OPpTRANS_GROWS +# undef OPpTRANS_IDENTICAL +# undef OPpTRANS_MASK +# undef OPpTRANS_ONLY_UTF8_INVARIANTS +# undef OPpTRANS_SHIFT +# undef OPpTRANS_SQUASH +# undef OPpTRANS_TO_UTF +# undef OPpTRANS_USE_SVOP +# undef OPpTRUEBOOL +# undef OPpUNDEF_KEEP_PV +# undef OPpUSEINT +# undef PAD_COMPNAME_FLAGS_isOUR +# undef PAD_COMPNAME_SV +# undef PAD_FAKELEX_ANON +# undef PAD_FAKELEX_MULTI +# undef PAD_SET_CUR_NOSAVE +# undef PAD_SVl +# undef padadd_NO_DUP_CHECK +# undef padadd_STATE +# undef PADNAMEf_FIELD +# undef PADNAMEf_LVALUE +# undef PADNAMEf_OUR +# undef PADNAMEf_STATE +# undef PADNAMEf_TYPED +# undef PadnameFLAGS +# undef PadnameIsOUR +# undef PadnameOUTER +# undef PM_GETRE +# undef PMf_BASE_SHIFT +# undef PMf_CHARSET +# undef PMf_CODELIST_PRIVATE +# undef PMf_CONST +# undef PMf_CONTINUE +# undef PMf_EVAL +# undef PMf_EXTENDED +# undef PMf_EXTENDED_MORE +# undef PMf_FOLD +# undef PMf_GLOBAL +# undef PMf_HAS_CV +# undef PMf_HAS_ERROR +# undef PMf_IS_QR +# undef PMf_KEEP +# undef PMf_KEEPCOPY +# undef PMf_MULTILINE +# undef PMf_NOCAPTURE +# undef PMf_NONDESTRUCT +# undef PMf_ONCE +# undef PMf_RETAINT +# undef PMf_SINGLELINE +# undef PMf_SPLIT +# undef PMf_STRICT +# undef PMf_USE_RE_EVAL +# undef PMf_USED +# undef PMf_WILDCARD +# undef PmopSTASH +# undef PmopSTASHPV +# undef POPSTACK_TO +# undef PUSH_MULTICALL_FLAGS +# undef PUSHSTACK +# undef pWARN_ALL +# undef pWARN_NONE +# undef pWARN_STD +# undef RCPVf_ALLOW_EMPTY +# undef RCPVf_NO_COPY +# undef RCPVf_USE_STRLEN +# undef REFCOUNTED_HE_KEY_UTF8 +# undef RETURN +# undef ROTL64 +# undef ROTR32 +# undef ROTR64 +# undef RV2CVOPCV_FLAG_MASK +# undef RV2CVOPCV_MAYBE_NAME_GV +# undef RV2CVOPCV_RETURN_STUB +# undef RX_COMPFLAGS +# undef RX_ENGINE +# undef RX_EXTFLAGS +# undef RX_PRECOMP +# undef RX_PRELEN +# undef RX_UTF8 +# undef RX_WRAPLEN +# undef RX_WRAPPED +# undef RX_WRAPPED_const +# undef RXf_BASE_SHIFT +# undef RXf_CHECK_ALL +# undef RXf_COPY_DONE +# undef RXf_EVAL_SEEN +# undef RXf_INTUIT_TAIL +# undef RXf_IS_ANCHORED +# undef RXf_MATCH_UTF8 +# undef RXf_PMf_CHARSET +# undef RXf_PMf_CHARSET_SHIFT_ +# undef RXf_PMf_EXTENDED_MORE +# undef RXf_PMf_NOCAPTURE +# undef RXf_PMf_SHIFT_NEXT_ +# undef RXf_PMf_SPLIT +# undef RXf_PMf_STRICT +# undef RXf_TAINTED +# undef RXf_TAINTED_SEEN +# undef RXf_UNBOUNDED_QUANTIFIER_SEEN +# undef RXf_USE_INTUIT_ML +# undef RXf_USE_INTUIT_NOML +# undef RXp_COMPFLAGS +# undef RXp_ENGINE +# undef RXp_EXTFLAGS +# undef SAVEFREECOPHH +# undef SAVEHINTS +# undef SAVEt_FREECOPHH +# undef SAVEt_FREESV +# undef SETs +# undef sharepvn +# undef shifted_octet_ +# undef strBEGINs +# undef SV_POSBYTES +# undef SVf_BREAK +# undef SvIsCOW_static +# undef SvIsUV_on +# undef SvNVx +# undef SvOK_off +# undef SVpad_OUR +# undef SVpad_STATE +# undef SVpad_TYPED +# undef SVppv_STATIC +# undef SvSetSV_and +# undef SvTIED_mg +# undef to_posix_LOWER +# undef to_posix_UPPER +# undef toFOLD_LC +# undef toFOLD_uni +# undef toLOWER_uni +# undef toTITLE_uni +# undef toU8_LOWER_LC +# undef toU8_UPPER_LC +# undef toUPPER_LC +# undef toUPPER_uni +# undef tryAMAGICunDEREF +# undef TZSET_LOCK +# undef TZSET_UNLOCK +# undef U8TO32_LE +# undef U8TO64_LE +# undef UNICODE_SURROGATE_FIRST +# undef UTF8_ACCUMULATE +# undef UTF8_IS_CONTINUED +# undef UTF8_IS_DOWNGRADEABLE_START +# undef UTF8_IS_START +# undef UTF8_IS_START_base +# undef UTF8_MAX_FOLD_CHAR_EXPAND +# undef utf8_to_utf16 +# undef utf8_to_utf16_reversed +# undef UTF_IS_CONTINUATION_MASK +# undef UTF_MIN_ABOVE_LATIN1_BYTE +# undef UTF_MIN_START_BYTE +# undef UTF_START_BYTE +# undef UTF_START_MASK +# undef want_vtbl_bm +# undef want_vtbl_fm +# undef xlv_targoff +# undef XOPf_xop_dump +# undef XOPf_xop_peep +# undef XPUSHTARG +# undef XS_DYNAMIC_FILENAME +# endif /* !defined(PERL_EXT) */ +# if !defined(PERL_EXT_RE_BUILD) +# undef ANGSTROM_SIGN +# undef ASCII_MORE_RESTRICT_PAT_MODS +# undef ASCII_RESTRICT_PAT_MOD +# undef ASCII_RESTRICT_PAT_MODS +# undef CC_CASED_ +# undef CC_CHARNAME_CONT_ +# undef CC_IS_IN_SOME_FOLD_ +# undef CC_MNEMONIC_CNTRL_ +# undef CC_NONLATIN1_FOLD_ +# undef CC_NONLATIN1_SIMPLE_FOLD_ +# undef CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG_ +# undef CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG_ +# undef CONTINUE_PAT_MOD +# undef DEFAULT_PAT_MOD +# undef DEPENDS_PAT_MOD +# undef DEPENDS_PAT_MODS +# undef FBMcf_TAIL +# undef FBMcf_TAIL_DOLLAR +# undef FBMcf_TAIL_DOLLARM +# undef FBMcf_TAIL_Z +# undef FBMcf_TAIL_z +# undef FBMrf_MULTILINE +# undef FOLD_FLAGS_LOCALE +# undef FOLD_FLAGS_NOMIX_ASCII +# undef HAS_NONLATIN1_FOLD_CLOSURE +# undef HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE +# undef I16_MAX +# undef IGNORE_PAT_MOD +# undef IN_UTF8_TURKIC_LOCALE +# undef is_FOLDS_TO_MULTI_utf8 +# undef IS_IN_SOME_FOLD_L1 +# undef is_LNBREAK_latin1_safe +# undef is_LNBREAK_safe +# undef is_LNBREAK_utf8_safe +# undef is_MULTI_CHAR_FOLD_latin1_safe +# undef is_MULTI_CHAR_FOLD_utf8_safe +# undef is_MULTI_CHAR_FOLD_utf8_safe_part0_ +# undef is_MULTI_CHAR_FOLD_utf8_safe_part1_ +# undef is_MULTI_CHAR_FOLD_utf8_safe_part2_ +# undef is_MULTI_CHAR_FOLD_utf8_safe_part3_ +# undef is_PATWS_safe +# undef is_posix_CASED +# undef is_PROBLEMATIC_LOCALE_FOLD_cp +# undef is_PROBLEMATIC_LOCALE_FOLD_utf8 +# undef is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp +# undef is_THREE_CHAR_FOLD_HEAD_latin1_safe +# undef is_THREE_CHAR_FOLD_HEAD_utf8_safe +# undef is_THREE_CHAR_FOLD_latin1_safe +# undef is_THREE_CHAR_FOLD_utf8_safe +# undef isALPHA_FOLD_EQ +# undef isCHARNAME_CONT +# undef isIDFIRST_lazy_if_safe +# undef isMNEMONIC_CNTRL +# undef isPOWER_OF_2 +# undef isU8_CASED_LC +# undef isWARNf_on +# undef KEEPCOPY_PAT_MOD +# undef KELVIN_SIGN +# undef LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE +# undef LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE +# undef LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE +# undef LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_UTF8 +# undef LATIN_CAPITAL_LETTER_SHARP_S +# undef LATIN_SMALL_LETTER_A_WITH_RING_ABOVE +# undef LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE +# undef LATIN_SMALL_LETTER_DOTLESS_I +# undef LATIN_SMALL_LETTER_LONG_S +# undef LATIN_SMALL_LETTER_LONG_S_UTF8 +# undef LATIN_SMALL_LETTER_SHARP_S_UTF8 +# undef LATIN_SMALL_LIGATURE_LONG_S_T +# undef LATIN_SMALL_LIGATURE_ST +# undef LOCALE_PAT_MOD +# undef MAX_CHARSET_NAME_LENGTH +# undef MAX_FOLD_FROMS +# undef MAX_LEGAL_CP +# undef MAX_MATCHES +# undef MAX_PRINT_A +# undef MAX_UTF8_TWO_BYTE +# undef memENDPs +# undef MgBYTEPOS +# undef MgBYTEPOS_set +# undef MGf_BYTES +# undef MICRO_SIGN_UTF8 +# undef MSVC_DIAG_IGNORE_STMT +# undef MULTILINE_PAT_MOD +# undef new_XPVMG +# undef NOCAPTURE_PAT_MOD +# undef NON_OTHER_COUNT +# undef NUM_ANYOF_CODE_POINTS +# undef ONCE_PAT_MOD +# undef OP_REFCNT_LOCK +# undef OP_REFCNT_UNLOCK +# undef OP_TYPE_IS_COP_NN +# undef OP_TYPE_IS_NN +# undef PadnameOURSTASH_set +# undef PM_GETRE_raw +# undef PM_SETRE +# undef PM_SETRE_raw +# undef REG_FETCH_ABSOLUTE +# undef ReREFCNT_dec +# undef REXEC_CHECKED +# undef REXEC_FAIL_ON_UNDERFLOW +# undef REXEC_IGNOREPOS +# undef REXEC_NOT_FIRST +# undef RX_PRECOMP_const +# undef RXf_PMf_COMPILETIME +# undef RXf_PMf_FLAGCOPYMASK +# undef RXf_PMf_STD_PMMOD +# undef RXf_USE_INTUIT +# undef RXp_HAS_CUTGROUP +# undef RXp_LASTCLOSEPAREN +# undef RXp_LASTPAREN +# undef RXp_MATCH_COPIED +# undef RXp_MATCH_COPIED_off +# undef RXp_MATCH_COPIED_on +# undef RXp_MATCH_COPY_FREE +# undef RXp_MATCH_TAINTED_off +# undef RXp_MATCH_UTF8 +# undef RXp_MATCH_UTF8_off +# undef RXp_MATCH_UTF8_on +# undef RXp_MATCH_UTF8_set +# undef RXp_OFFSp +# undef RXp_PAREN_NAMES +# undef RXp_SAVED_COPY +# undef RXp_SUBBEG +# undef RXp_SUBCOFFSET +# undef RXp_SUBLEN +# undef RXp_SUBOFFSET +# undef SAVE_FREE_REXC_STATE +# undef SAVE_MASK +# undef SAVE_TIGHT_SHIFT +# undef SAVECOMPPAD +# undef SAVEt_COMPPAD +# undef SAVEt_FREE_REXC_STATE +# undef SAVEt_REGCONTEXT +# undef SAWAMPERSAND_LEFT +# undef SAWAMPERSAND_MIDDLE +# undef SAWAMPERSAND_RIGHT +# undef SINGLE_PAT_MOD +# undef specialWARN +# undef SSGROW +# undef SSPOPINT +# undef SSPOPUV +# undef SSPUSHINT +# undef SSPUSHUV +# undef STD_PAT_MODS +# undef STD_PMMOD_FLAGS_CLEAR +# undef STRLENs +# undef SV_CONST_PUSH +# undef SV_COW_REFCNT_MAX +# undef SvCANCOW +# undef SvPADTMP +# undef SvPEEK +# undef SvTAIL +# undef SvVALID +# undef TWO_BYTE_UTF8_TO_NATIVE +# undef U16_MAX +# undef U32_MAX +# undef U8_MAX +# undef UNICODE_MAJOR_VERSION +# undef UNICODE_PAT_MOD +# undef UNICODE_PAT_MODS +# undef unpackWARN1 +# undef unpackWARN2 +# undef unpackWARN3 +# undef unpackWARN4 +# undef USER_PROP_MUTEX_LOCK +# undef USER_PROP_MUTEX_UNLOCK +# undef UTF8_ALLOW_ANYUV +# undef UTF8_ALLOW_DEFAULT +# undef UTF8_ALLOW_FE_FF +# undef UTF8_DIE_IF_MALFORMED +# undef UTF8_DIE_IF_MALFORMED_BIT_POS_ +# undef UTF8_IS_NEXT_CHAR_DOWNGRADEABLE +# undef UTF8_MIN_CONTINUATION_BYTE +# undef UTF8_NO_CONFIDENCE_IN_CURLEN_ +# undef UTF8_NO_CONFIDENCE_IN_CURLEN_BIT_POS_ +# undef UTF8_TWO_BYTE_HI +# undef vtohs +# undef what_MULTI_CHAR_FOLD_latin1_safe +# undef what_MULTI_CHAR_FOLD_utf8_safe +# undef what_MULTI_CHAR_FOLD_utf8_safe_part0_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part1_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part2_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part3_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part4_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part5_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part6_ +# undef what_MULTI_CHAR_FOLD_utf8_safe_part7_ +# undef withinCOUNT +# undef XDIGIT_VALUE +# undef XTENDED_PAT_MOD +# undef xV_FROM_REF +# endif /* !defined(PERL_EXT_RE_BUILD) */ +# endif /* !defined(PERL_CORE) */ +#else /* if !defined(PERL_DO_UNDEFS) */ -#if !defined(MULTIPLICITY) -/* undefined symbols, point them back at the usual ones */ -# define Perl_deb_nocontext Perl_deb -# define Perl_form_nocontext Perl_form -# define Perl_load_module_nocontext Perl_load_module -# define Perl_mess_nocontext Perl_mess -# define Perl_newSVpvf_nocontext Perl_newSVpvf -# define Perl_sv_catpvf_nocontext Perl_sv_catpvf -# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg -# define Perl_sv_setpvf_nocontext Perl_sv_setpvf -# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg -# define Perl_warn_nocontext Perl_warn -# define Perl_warner_nocontext Perl_warner -#endif /* !defined(MULTIPLICITY) */ -#if !defined(PERL_CORE) -/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to - * disable them. - */ -# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr)) -# define sv_setptrref(rv,ptr) sv_setref_iv(rv,NULL,PTR2IV(ptr)) -# if !defined(PERL_NOCOMPAT) - -/* Compatibility for this renamed function. */ -# define perl_atexit(a,b) Perl_call_atexit(aTHX_ a,b) - -/* Compatibility for these functions that had a 'perl_' prefix before - * 'Perl_' became the standard */ -# define perl_call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) -# define perl_call_method(a,b) Perl_call_method(aTHX_ a,b) -# define perl_call_pv(a,b) Perl_call_pv(aTHX_ a,b) -# define perl_call_sv(a,b) Perl_call_sv(aTHX_ a,b) -# define perl_eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) -# define perl_eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) -# define perl_get_av(a,b) Perl_get_av(aTHX_ a,b) -# define perl_get_cv(a,b) Perl_get_cv(aTHX_ a,b) -# define perl_get_hv(a,b) Perl_get_hv(aTHX_ a,b) -# define perl_get_sv(a,b) Perl_get_sv(aTHX_ a,b) -# define perl_init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) -# define perl_require_pv(a) Perl_require_pv(aTHX_ a) - -/* Before C99, macros could not wrap varargs functions. This - provides a set of compatibility functions that don't take an - extra argument but grab the context pointer using the macro dTHX. - */ - -# if defined(MULTIPLICITY) && !defined(PERL_NO_SHORT_NAMES) && \ - !defined(PERL_WANT_VARARGS) -# define deb Perl_deb_nocontext -# define form Perl_form_nocontext -# define load_module Perl_load_module_nocontext -# define mess Perl_mess_nocontext -# define newSVpvf Perl_newSVpvf_nocontext -# define sv_catpvf Perl_sv_catpvf_nocontext -# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext -# define sv_setpvf Perl_sv_setpvf_nocontext -# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext -# define warn Perl_warn_nocontext -# define warner Perl_warner_nocontext -# endif /* defined(MULTIPLICITY) && !defined(PERL_NO_SHORT_NAMES) && - !defined(PERL_WANT_VARARGS) */ -# endif /* !defined(PERL_NOCOMPAT) */ -#endif /* !defined(PERL_CORE) */ -#if !defined(PERL_NO_SHORT_NAMES) - -/* Hide global symbols */ +/* Create short name macros that hide any need for thread context */ # define AvFILL_(a) Perl_AvFILL_(aTHX_ a) # define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b) @@ -910,7 +5474,20 @@ # define sv_setpvf_nocontext Perl_sv_setpvf_nocontext # define warn_nocontext Perl_warn_nocontext # define warner_nocontext Perl_warner_nocontext -# endif /* defined(MULTIPLICITY) */ +# else /* if !defined(MULTIPLICITY) */ +/* undefined symbols, point them back at the usual ones */ +# define Perl_deb_nocontext Perl_deb +# define Perl_form_nocontext Perl_form +# define Perl_load_module_nocontext Perl_load_module +# define Perl_mess_nocontext Perl_mess +# define Perl_newSVpvf_nocontext Perl_newSVpvf +# define Perl_sv_catpvf_nocontext Perl_sv_catpvf +# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg +# define Perl_sv_setpvf_nocontext Perl_sv_setpvf +# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg +# define Perl_warn_nocontext Perl_warn +# define Perl_warner_nocontext Perl_warner +# endif /* !defined(MULTIPLICITY) */ # if !defined(MULTIPLICITY) || defined(PERL_CORE) || \ defined(PERL_WANT_VARARGS) # define deb(...) Perl_deb(aTHX_ __VA_ARGS__) @@ -1836,7 +6413,52 @@ # else # define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c) # endif -# endif /* defined(PERL_CORE) */ +# else /* if !defined(PERL_CORE) */ +/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to + * disable them. + */ +# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr)) +# define sv_setptrref(rv,ptr) sv_setref_iv(rv,NULL,PTR2IV(ptr)) +# if !defined(PERL_NOCOMPAT) + +/* Compatibility for this renamed function. */ +# define perl_atexit(a,b) Perl_call_atexit(aTHX_ a,b) + +/* Compatibility for these functions that had a 'perl_' prefix before + * 'Perl_' became the standard */ +# define perl_call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) +# define perl_call_method(a,b) Perl_call_method(aTHX_ a,b) +# define perl_call_pv(a,b) Perl_call_pv(aTHX_ a,b) +# define perl_call_sv(a,b) Perl_call_sv(aTHX_ a,b) +# define perl_eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) +# define perl_eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) +# define perl_get_av(a,b) Perl_get_av(aTHX_ a,b) +# define perl_get_cv(a,b) Perl_get_cv(aTHX_ a,b) +# define perl_get_hv(a,b) Perl_get_hv(aTHX_ a,b) +# define perl_get_sv(a,b) Perl_get_sv(aTHX_ a,b) +# define perl_init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) +# define perl_require_pv(a) Perl_require_pv(aTHX_ a) + +/* Before C99, macros could not wrap varargs functions. This + provides a set of compatibility functions that don't take an + extra argument but grab the context pointer using the macro dTHX. + */ + +# if defined(MULTIPLICITY) && !defined(PERL_WANT_VARARGS) +# define deb Perl_deb_nocontext +# define form Perl_form_nocontext +# define load_module Perl_load_module_nocontext +# define mess Perl_mess_nocontext +# define newSVpvf Perl_newSVpvf_nocontext +# define sv_catpvf Perl_sv_catpvf_nocontext +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# define sv_setpvf Perl_sv_setpvf_nocontext +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +# define warn Perl_warn_nocontext +# define warner Perl_warner_nocontext +# endif /* defined(MULTIPLICITY) && !defined(PERL_WANT_VARARGS) */ +# endif /* !defined(PERL_NOCOMPAT) */ +# endif /* !defined(PERL_CORE) */ # if defined(PERL_CORE) || defined(PERL_EXT) # define append_utf8_from_native_byte Perl_append_utf8_from_native_byte # define av_reify(a) Perl_av_reify(aTHX_ a) @@ -2476,6 +7098,6 @@ # else # define get_context Perl_get_context # endif -#endif /* !defined(PERL_NO_SHORT_NAMES) */ +#endif /* !defined(PERL_DO_UNDEFS) */ /* ex: set ro ft=c: */ diff --git a/perl.h b/perl.h index f63e298a3240..1a55712111f3 100644 --- a/perl.h +++ b/perl.h @@ -9349,6 +9349,16 @@ END_EXTERN_C */ +START_EXTERN_C + +/* #including a second time causes it to #undef any unwanted symbols to avoid + * polluting the user name space */ +# define PERL_DO_UNDEFS +# include "embed.h" +# undef PERL_DO_UNDEFS + +END_EXTERN_C + #endif /* Include guard */ /* diff --git a/regen/embed.pl b/regen/embed.pl index 130c4f248261..4b82a91b846b 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -16,6 +16,16 @@ # Accepts the standard regen_lib -q and -v args. # # This script is normally invoked from regen.pl. +# +# We strive to not pollute the namespace of XS modules. To that end, embed.h +# (in cooperation with perl.h) keeps all macro names out of that namespace +# that this program thinks shouldn't be in it. The way that works is that +# perl.h #includes embed.h twice. The first time is to #define everything +# needed. And the second time, to #undef those elements that aren't needed +# for the #including file. For the perl core, everything is retained; for +# perl extensions, much is retained; for the rest, only expected things are +# retained. The #undef'ing is done after any inline functions are processed, +# so they always have access to everything. require 5.004; # keep this compatible, an old perl is all we may have before # we build the new one @@ -59,7 +69,1675 @@ BEGIN $has_compat_macro{$_} = 1 for @have_compatibility_macros; my %perl_compats; # Have 'perl_' prefix +# This program inspects various top-level header files, except those on this +# list. +my %skip_files; +$skip_files{$_} = 1 for qw( + charclass_invlists.inc + config.h + embed.h + fakesdio.h + nostdio.h + perl_langinfo.h + perlio.h + proto.h + XSUB.h + ); + +# Items that are marked as being in the API are, by definition, not namespace +# pollutants. To find those, this program looks for API declarations. These +# are in embed.fnc, any top-level dot c file, and certain pod files. In order +# to save a bit of run time, this static list are the pod files known to have +# such defintions. It is not expected this will change often. +my @pod_list = qw( + INSTALL + pod/perlguts.pod + pod/perlinterp.pod + pod/perlapio.pod + pod/perlhacktips.pod + pod/perlcall.pod + pod/perlreguts.pod + pod/perlmroapi.pod + pod/perlembed.pod + dist/ExtUtils-ParseXS/lib/perlxs.pod + pod/perliol.pod + pod/perlreapi.pod + ); + +# This is a list of symbols that are not documented to be available for +# modules to use, but are nevertheless known to be used by at least one module +# that is not a Perl extension. +# +# Strive to make this list empty. +# +# The list does not include symbols that we have documented as being reserved +# for perl's use, namely those that begin with 'PL_' or contain qr/perl/i. +# There are two parts of the list; the second part contains the symbols which +# have a trailing underscore; the first part those without. # +# For all modules that aren't deliberating using particular names, all the +# other symbols on it are namespace pollutants. + +my @unexpectedly_used_outside_core = qw( + ASCII_PLATFORM_UTF8_MAXBYTES + ASCTIME_LOCK + ASCTIME_UNLOCK + ASSERT_IS_LITERAL + ASSERT_IS_PTR + assert_not_glob + ASSERT_NOT_PTR + assert_not_ROK + AvMAX + AvREAL + AvREAL_off + blk_oldcop + blk_sub + CALLRUNOPS + CAN_PROTOTYPE + CLANG_DIAG_IGNORE + CLANG_DIAG_IGNORE_DECL + CLANG_DIAG_IGNORE_STMT + CLANG_DIAG_PRAGMA + CLANG_DIAG_RESTORE + CLANG_DIAG_RESTORE_DECL + CLANG_DIAG_RESTORE_STMT + cLOGOPx + CLONEf_CLONE_HOST + CLONEf_COPY_STACKS + CLONEf_JOIN_IN + CLONEf_KEEP_PTR_TABLE + CopHINTS_get + CTIME_LOCK + CTIME_UNLOCK + cUNOPx + CvCONST_off + CvCONST_on + CVf_CONST + CVf_ISXSUB + CvFLAGS + CvISXSUB + CvXSUB + CvXSUBANY + CxTYPE + CXTYPEMASK + DEBUG_l + DEBUG_l_FLAG + DEBUG_l_TEST + DEBUG_s + DEBUG_SCOPE + DEBUG_s_FLAG + DEBUG_s_TEST + DEBUG_v + DEBUG_v_FLAG + DEBUG_v_TEST + dJMPENV + DOSISH + dSAVE_ERRNO + dTARG + EIGHT_BIT_UTF8_TO_NATIVE + ENV_LOCK + ENV_READ_LOCK + ENV_READ_UNLOCK + ENVr_LOCALEr_LOCK + ENVr_LOCALEr_UNLOCK + ENV_UNLOCK + ESC_NATIVE + EXPECT + EXTEND_HWM_SET + FALSE + FILTER_DATA + FILTER_READ + FITS_IN_8_BITS + FOLD_FLAGS_FULL + G_ARRAY + GETENV_LOCK + GETENV_UNLOCK + GETHOSTBYADDR_LOCK + GETHOSTBYADDR_UNLOCK + GETHOSTBYNAME_LOCK + GETHOSTBYNAME_UNLOCK + GETNETBYADDR_LOCK + GETNETBYADDR_UNLOCK + GETNETBYNAME_LOCK + GETNETBYNAME_UNLOCK + GETPROTOBYNAME_LOCK + GETPROTOBYNAME_UNLOCK + GETPROTOBYNUMBER_LOCK + GETPROTOBYNUMBER_UNLOCK + GETPROTOENT_LOCK + GETPROTOENT_UNLOCK + GETPWNAM_LOCK + GETPWNAM_UNLOCK + GETPWUID_LOCK + GETPWUID_UNLOCK + GETSERVBYNAME_LOCK + GETSERVBYNAME_UNLOCK + GETSERVBYPORT_LOCK + GETSERVBYPORT_UNLOCK + GETSERVENT_LOCK + GETSERVENT_UNLOCK + GETSPNAM_LOCK + GETSPNAM_UNLOCK + GMTIME_LOCK + GMTIME_UNLOCK + Gv_AMG + GvCVGEN + GVf_MULTI + GvGP + GvIO + GvIOp + GvNAME + GvNAME_get + GvNAME_HEK + GvNAMELEN + GvNAMELEN_get + GvNAMEUTF8 + GvSTASH + GvXPVGV + G_WANT + G_WARN_ON + gwENVr_LOCALEr_LOCK + gwENVr_LOCALEr_UNLOCK + gwLOCALE_LOCK + gwLOCALEr_LOCK + gwLOCALEr_UNLOCK + gwLOCALE_UNLOCK + HAS_PASSWD + HeKEY_hek + HeKEY_sv + HEKfARG + HEK_FLAGS + HEK_HASH + HEK_KEY + HEK_LEN + HeKUTF8 + HEK_UTF8 + HEK_WASUTF8 + HeNEXT + HINT_BYTES + HINT_LOCALE + HINTS_REFCNT_LOCK + HINTS_REFCNT_UNLOCK + HS_APIVERLEN_MAX + HS_CXT + HSf_IMP_CXT + HSf_POPMARK + HSf_SETXSUBFN + HS_KEY + HS_KEYp + HSm_APIVERLEN + HS_XSVERLEN_MAX + HvAMAGIC + HvAMAGIC_off + HvARRAY + HvAUX + HV_DELETE + HvEITER_get + HvEITER_set + HvENAME_HEK + HvENAME_HEK_NN + HV_FETCH_ISEXISTS + HV_FETCH_ISSTORE + HV_FETCH_JUST_SV + HV_FETCH_LVALUE + HvHasENAME_HEK + HvHASKFLAGS + HvHasNAME + HVhek_PLACEHOLD + HVhek_UTF8 + HVhek_WASUTF8 + HvMAX + HvNAME_HEK_NN + HvPLACEHOLDERS + HvPLACEHOLDERS_get + HvRITER_get + HvRITER_set + HvTOTALKEYS + HvUSEDKEYS + I32_MAX + I8_TO_NATIVE_UTF8 + IN_BYTES + inRANGE + IN_SOME_LOCALE_FORM_COMPILETIME + IN_SOME_LOCALE_FORM_RUNTIME + IN_UTF8_CTYPE_LOCALE + IOf_FAKE_DIRP + isGV + is_HORIZWS_cp_high + is_HORIZWS_high + is_posix_ALPHA + is_posix_ALPHANUMERIC + is_posix_BLANK + is_posix_CNTRL + is_posix_DIGIT + is_posix_GRAPH + is_posix_IDFIRST + is_posix_LOWER + is_posix_PRINT + is_posix_PUNCT + is_posix_SPACE + is_posix_UPPER + is_posix_WORDCHAR + is_posix_XDIGIT + IS_SAFE_SYSCALL + isU8_ALPHA_LC + isU8_ALPHANUMERIC_LC + isU8_BLANK_LC + isU8_CNTRL_LC + isU8_DIGIT_LC + isU8_GRAPH_LC + isU8_IDFIRST_LC + isU8_LOWER_LC + isU8_PRINT_LC + isU8_PUNCT_LC + isU8_SPACE_LC + isU8_UPPER_LC + isU8_WORDCHAR_LC + isU8_XDIGIT_LC + is_XDIGIT_cp_high + is_XDIGIT_high + JE_OLD_STACK_HWM_restore + JE_OLD_STACK_HWM_save + JMPENV_POP + KEY_abs + KEY_accept + KEY_ADJUST + KEY_alarm + KEY_all + KEY_and + KEY_any + KEY_atan2 + KEY_AUTOLOAD + KEY_BEGIN + KEY_bind + KEY_binmode + KEY_bless + KEY_break + KEY_caller + KEY_catch + KEY_chdir + KEY_CHECK + KEY_chmod + KEY_chomp + KEY_chop + KEY_chown + KEY_chr + KEY_chroot + KEY_class + KEY_close + KEY_closedir + KEY_cmp + KEY_connect + KEY_continue + KEY_cos + KEY_crypt + KEY_dbmclose + KEY_dbmopen + KEY_default + KEY_defer + KEY_defined + KEY_delete + KEY_DESTROY + KEY_die + KEY_do + KEY_dump + KEY_each + KEY_else + KEY_elsif + KEY_END + KEY_endgrent + KEY_endhostent + KEY_endnetent + KEY_endprotoent + KEY_endpwent + KEY_endservent + KEY_eof + KEY_eq + KEY_eval + KEY_evalbytes + KEY_exec + KEY_exists + KEY_exit + KEY_exp + KEY_fc + KEY_fcntl + KEY_field + KEY_fileno + KEY_finally + KEY_flock + KEY_for + KEY_foreach + KEY_fork + KEY_format + KEY_formline + KEY_ge + KEY_getc + KEY_getgrent + KEY_getgrgid + KEY_getgrnam + KEY_gethostbyaddr + KEY_gethostbyname + KEY_gethostent + KEY_getlogin + KEY_getnetbyaddr + KEY_getnetbyname + KEY_getnetent + KEY_getpeername + KEY_getpgrp + KEY_getppid + KEY_getpriority + KEY_getprotobyname + KEY_getprotobynumber + KEY_getprotoent + KEY_getpwent + KEY_getpwnam + KEY_getpwuid + KEY_getservbyname + KEY_getservbyport + KEY_getservent + KEY_getsockname + KEY_getsockopt + KEY_getspnam + KEY_given + KEY_glob + KEY_gmtime + KEY_goto + KEY_grep + KEY_gt + KEY_hex + KEY_if + KEY_index + KEY_INIT + KEY_int + KEY_ioctl + KEY_isa + KEY_join + KEY_keys + KEY_kill + KEY_last + KEY_lc + KEY_lcfirst + KEY_le + KEY_length + KEY_link + KEY_listen + KEY_local + KEY_localtime + KEY_lock + KEY_log + KEY_lstat + KEY_lt + KEY_m + KEY_map + KEY_method + KEY_mkdir + KEY_msgctl + KEY_msgget + KEY_msgrcv + KEY_msgsnd + KEY_my + KEY_ne + KEY_next + KEY_no + KEY_not + KEY_NULL + KEY_oct + KEY_open + KEY_opendir + KEY_or + KEY_ord + KEY_our + KEY_pack + KEY_package + KEY_pipe + KEY_pop + KEY_pos + KEY_print + KEY_printf + KEY_prototype + KEY_push + KEY_q + KEY_qq + KEY_qr + KEY_quotemeta + KEY_qw + KEY_qx + KEY_rand + KEY_read + KEY_readdir + KEY_readline + KEY_readlink + KEY_readpipe + KEY_recv + KEY_redo + KEY_ref + KEY_rename + KEY_require + KEY_reset + KEY_return + KEY_reverse + KEY_rewinddir + KEY_rindex + KEY_rmdir + KEY_s + KEY_say + KEY_scalar + KEY_seek + KEY_seekdir + KEY_select + KEY_semctl + KEY_semget + KEY_semop + KEY_send + KEY_setgrent + KEY_sethostent + KEY_setnetent + KEY_setpgrp + KEY_setpriority + KEY_setprotoent + KEY_setpwent + KEY_setservent + KEY_setsockopt + KEY_shift + KEY_shmctl + KEY_shmget + KEY_shmread + KEY_shmwrite + KEY_shutdown + KEY_sigvar + KEY_sin + KEY_sleep + KEY_socket + KEY_socketpair + KEY_sort + KEY_splice + KEY_split + KEY_sprintf + KEY_sqrt + KEY_srand + KEY_stat + KEY_state + KEY_study + KEY_sub + KEY_substr + KEY_symlink + KEY_syscall + KEY_sysopen + KEY_sysread + KEY_sysseek + KEY_system + KEY_syswrite + KEY_tell + KEY_telldir + KEY_tie + KEY_tied + KEY_time + KEY_times + KEY_tr + KEY_truncate + KEY_try + KEY_uc + KEY_ucfirst + KEY_umask + KEY_undef + KEY_UNITCHECK + KEY_unless + KEY_unlink + KEY_unpack + KEY_unshift + KEY_untie + KEY_until + KEY_use + KEY_utime + KEY_values + KEY_vec + KEY_wait + KEY_waitpid + KEY_wantarray + KEY_warn + KEY_when + KEY_while + KEYWORD_PLUGIN_MUTEX_LOCK + KEYWORD_PLUGIN_MUTEX_UNLOCK + LC_COLLATE_LOCK + LC_COLLATE_UNLOCK + LC_NUMERIC_UNLOCK + LOCALE_LOCK + LOCALE_READ_LOCK + LOCALE_READ_UNLOCK + LOCALE_UNLOCK + LOCALTIME_LOCK + LOCALTIME_UNLOCK + MALFORMED_UTF8_DIE + MAXO + MEM_SIZE + MEM_SIZE_MAX + MEM_WRAP_CHECK + MIN_OFFUNI_VARIANT_CP + MKTIME_LOCK + MKTIME_UNLOCK + msbit_pos + MY_CXT_INDEX + MY_CXT_INIT_ARG + nBIT_MASK + nBIT_UMAX + New + Newc + NewOp + Newz + newRV_inc + NEWSV + NORMAL + Null + OCSHIFT + OFFUNI_IS_INVARIANT + OFFUNISKIP + ONE_IF_EBCDIC_ZERO_IF_NOT + OP_CHECK_MUTEX_LOCK + OP_CHECK_MUTEX_UNLOCK + OPf_MOD + OPf_REF + OPf_STACKED + OPf_WANT_LIST + OPf_WANT_SCALAR + OPf_WANT_VOID + OPpENTERSUB_HASTARG + OP_REFCNT_LOCK + OP_REFCNT_UNLOCK + PAD_SV + POPMARK + POPSTACK + POSIX_SETLOCALE_LOCK + POSIX_SETLOCALE_UNLOCK + pthread_condattr_default + PTHREAD_GETSPECIFIC + pthread_mutexattr_default + PUSHSTACKi + PUSHTARG + RESTORE_ERRNO + safefree + SAVEOP + SAVEt_FREEPV + SAVEt_OP + SAVEVPTR + S_IWOTH + S_IXOTH + SSize_t_MAX + Stack_off_t_MAX + Stat + Stat_t + STATUS_CURRENT + STATUS_EXIT + STATUS_UNIX + Strerror + STRFMON_LOCK + STRFMON_UNLOCK + STRFTIME_LOCK + STRFTIME_UNLOCK + STRUCT_OFFSET + SvANY + SV_CONST_RETURN + SVf_AMAGIC + SVf_FAKE + SVf_IOK + SVf_IsCOW + SVf_IVisUV + SvFLAGS + SVf_NOK + SVf_OK + SVf_OOK + SVf_POK + SVf_PROTECT + SVf_READONLY + SVf_ROK + SVf_THINKFIRST + SvGMAGICAL + Sv_Grow + SvIsUV + SvIV_please + SvIVx + SvMAGIC + SvMAGICAL + SvOBJECT + SvOBJECT_off + SvOBJECT_on + SvPADMY + SVpav_REAL + SVpgv_GP + SVphv_HasAUX + SVphv_HASKFLAGS + SVp_IOK + SVp_NOK + SVp_POK + SVprv_WEAKREF + SVp_SCREAM + SvPV_flags_const_nolen + SvRMAGICAL + SvRMAGICAL_on + SVs_GMG + SvSHARED_HEK_FROM_PV + SvSMAGICAL + SVs_OBJECT + SVs_RMG + SVs_SMG + SvTEMP_off + SvTHINKFIRST + SVt_MASK + SVt_RV + SVTYPEMASK + SvUVx + SvWEAKREF + TARGi + TARGn + TARGu + TRUE + tTHX + TZSET_LOCK + TZSET_UNLOCK + UNI_IS_INVARIANT + UNOP_AUX_item_sv + USER_PROP_MUTEX_LOCK + USER_PROP_MUTEX_UNLOCK + UTF8_ALLOW_ANY + UTF8_EIGHT_BIT_HI + UTF8_EIGHT_BIT_LO + UTF8_IS_ABOVE_LATIN1 + UTF8_IS_ABOVE_LATIN1_START + UTF8_IS_CONTINUATION + UTF8_MAXLEN + UTF_ACCUMULATION_SHIFT + UTF_CONTINUATION_BYTE_INFO_BITS + UTF_CONTINUATION_MARK + UTF_CONTINUATION_MASK + UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS + UTF_MIN_CONTINUATION_BYTE + UTF_START_MARK + UTF_TO_NATIVE + vTHX + WSETLOCALE_LOCK + WSETLOCALE_UNLOCK + xiv_iv + XOPf_xop_class + XOPf_xop_desc + XOPf_xop_name + xpv_len + xuv_uv + BASE_TWO_BYTE_HI_ + BASE_TWO_BYTE_LO_ + CC_ALPHA_ + CC_ALPHANUMERIC_ + CC_ASCII_ + CC_BINDIGIT_ + CC_BLANK_ + CC_CNTRL_ + CC_DIGIT_ + CC_GRAPH_ + CC_IDFIRST_ + CC_LOWER_ + CC_mask_ + CC_mask_A_ + CC_OCTDIGIT_ + CC_PRINT_ + CC_PUNCT_ + CC_SPACE_ + CC_UPPER_ + CC_WORDCHAR_ + CC_XDIGIT_ + DEBUG__ + DEBUG_l_TEST_ + DEBUG_s_TEST_ + DEBUG_v_TEST_ + EXTEND_NEEDS_GROW_ + EXTEND_SAFE_N_ + generic_func_utf8_safe_ + generic_invlist_utf8_safe_ + generic_invlist_uvchr_ + generic_isCC_ + generic_isCC_A_ + generic_LC_ + generic_LC_base_ + generic_LC_func_utf8_safe_ + generic_LC_invlist_utf8_safe_ + generic_LC_non_invlist_utf8_safe_ + generic_LC_utf8_safe_ + generic_non_invlist_utf8_safe_ + generic_utf8_safe_ + generic_utf8_safe_no_upper_latin1_ + generic_uvchr_ + inRANGE_helper_ + KEY___CLASS__ + KEY___DATA__ + KEY___END__ + KEY___FILE__ + KEY___LINE__ + KEY___PACKAGE__ + KEY___SUB__ + LOCALE_LOCK_ + LOCALE_UNLOCK_ + MBLEN_LOCK_ + MBLEN_UNLOCK_ + MBRLEN_LOCK_ + MBRLEN_UNLOCK_ + MBRTOWC_LOCK_ + MBRTOWC_UNLOCK_ + MBTOWC_LOCK_ + MBTOWC_UNLOCK_ + MEM_WRAP_CHECK_ + MEM_WRAP_NEEDS_RUNTIME_CHECK_ + MEM_WRAP_WILL_WRAP_ + OFFUNISKIP_helper_ + SAFE_FUNCTION__ + STATIC_ASSERT_STRUCT_BODY_ + STATIC_ASSERT_STRUCT_NAME_ + toFOLD_utf8_flags_ + toLOWER_utf8_flags_ + toTITLE_utf8_flags_ + toUPPER_utf8_flags_ + UNISKIP_BY_MSB_ + UTF8_CHECK_ONLY_BIT_POS_ + UTF8_GOT_CONTINUATION_BIT_POS_ + UTF8_GOT_LONG_BIT_POS_ + UTF8_GOT_NONCHAR_BIT_POS_ + UTF8_GOT_NON_CONTINUATION_BIT_POS_ + UTF8_GOT_OVERFLOW_BIT_POS_ + UTF8_GOT_SHORT_BIT_POS_ + UTF8_GOT_SUPER_BIT_POS_ + UTF8_GOT_SURROGATE_BIT_POS_ + utf8_safe_assert_ + UTF8_WARN_NONCHAR_BIT_POS_ + UTF8_WARN_SUPER_BIT_POS_ + UTF8_WARN_SURROGATE_BIT_POS_ + WCRTOMB_LOCK_ + WCRTOMB_UNLOCK_ + WCTOMB_LOCK_ + WCTOMB_UNLOCK_ + withinCOUNT_KNOWN_VALID_ + WRAP_U8_LC_ +); + +# This is a list of symbols that are used by the OS and which perl may need to +# define or redefine, and which aren't otherwise currently detectable by this +# program's algorithms as being such. They are not namespace pollutants +my @system_symbols = qw( + O_CREAT + O_RDWR + O_WRONLY + S_IWGRP + S_IWUSR + S_IXGRP + S_IXUSR + __setfdccsid + __attribute__format__null_ok__ +); + +# This is a list of symbols that are needed by the ext/re module, and are not +# documented. They become undefined for any other modules. +my @needed_by_ext_re = qw( + ANGSTROM_SIGN + ASCII_MORE_RESTRICT_PAT_MODS + ASCII_RESTRICT_PAT_MOD + ASCII_RESTRICT_PAT_MODS + CC_CASED_ + CC_CHARNAME_CONT_ + CC_IS_IN_SOME_FOLD_ + CC_MNEMONIC_CNTRL_ + CC_NONLATIN1_FOLD_ + CC_NONLATIN1_SIMPLE_FOLD_ + CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG_ + CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG_ + CONTINUE_PAT_MOD + DEFAULT_PAT_MOD + DEPENDS_PAT_MOD + DEPENDS_PAT_MODS + FBMcf_TAIL + FBMcf_TAIL_DOLLAR + FBMcf_TAIL_DOLLARM + FBMcf_TAIL_z + FBMcf_TAIL_Z + FBMrf_MULTILINE + FOLD_FLAGS_LOCALE + FOLD_FLAGS_NOMIX_ASCII + HAS_NONLATIN1_FOLD_CLOSURE + HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE + I16_MAX + IGNORE_PAT_MOD + IN_UTF8_TURKIC_LOCALE + isALPHA_FOLD_EQ + isCHARNAME_CONT + is_FOLDS_TO_MULTI_utf8 + isIDFIRST_lazy_if_safe + IS_IN_SOME_FOLD_L1 + is_LNBREAK_latin1_safe + is_LNBREAK_safe + is_LNBREAK_utf8_safe + isMNEMONIC_CNTRL + is_MULTI_CHAR_FOLD_latin1_safe + is_MULTI_CHAR_FOLD_utf8_safe + is_MULTI_CHAR_FOLD_utf8_safe_part0_ + is_MULTI_CHAR_FOLD_utf8_safe_part1_ + is_MULTI_CHAR_FOLD_utf8_safe_part2_ + is_MULTI_CHAR_FOLD_utf8_safe_part3_ + is_PATWS_safe + is_posix_CASED + isPOWER_OF_2 + is_PROBLEMATIC_LOCALE_FOLD_cp + is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp + is_PROBLEMATIC_LOCALE_FOLD_utf8 + is_THREE_CHAR_FOLD_HEAD_latin1_safe + is_THREE_CHAR_FOLD_HEAD_utf8_safe + is_THREE_CHAR_FOLD_latin1_safe + is_THREE_CHAR_FOLD_utf8_safe + isU8_CASED_LC + isWARNf_on + KEEPCOPY_PAT_MOD + KELVIN_SIGN + LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE + LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE + LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE + LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_UTF8 + LATIN_CAPITAL_LETTER_SHARP_S + LATIN_SMALL_LETTER_A_WITH_RING_ABOVE + LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE + LATIN_SMALL_LETTER_DOTLESS_I + LATIN_SMALL_LETTER_LONG_S + LATIN_SMALL_LETTER_LONG_S_UTF8 + LATIN_SMALL_LETTER_SHARP_S_UTF8 + LATIN_SMALL_LIGATURE_LONG_S_T + LATIN_SMALL_LIGATURE_ST + LOCALE_PAT_MOD + MAX_CHARSET_NAME_LENGTH + MAX_FOLD_FROMS + MAX_LEGAL_CP + MAX_MATCHES + MAX_PRINT_A + MAX_UTF8_TWO_BYTE + memENDPs + MgBYTEPOS + MgBYTEPOS_set + MGf_BYTES + MICRO_SIGN_UTF8 + MSVC_DIAG_IGNORE_STMT + MULTILINE_PAT_MOD + new_XPVMG + NOCAPTURE_PAT_MOD + NON_OTHER_COUNT + NUM_ANYOF_CODE_POINTS + ONCE_PAT_MOD + OP_REFCNT_LOCK + OP_REFCNT_UNLOCK + OP_TYPE_IS_COP_NN + OP_TYPE_IS_NN + PadnameOURSTASH_set + PM_GETRE_raw + PM_SETRE + PM_SETRE_raw + REG_FETCH_ABSOLUTE + ReREFCNT_dec + REXEC_CHECKED + REXEC_FAIL_ON_UNDERFLOW + REXEC_IGNOREPOS + REXEC_NOT_FIRST + RXf_PMf_COMPILETIME + RXf_PMf_FLAGCOPYMASK + RXf_PMf_STD_PMMOD + RXf_USE_INTUIT + RXp_HAS_CUTGROUP + RXp_LASTCLOSEPAREN + RXp_LASTPAREN + RXp_MATCH_COPIED + RXp_MATCH_COPIED_off + RXp_MATCH_COPIED_on + RXp_MATCH_COPY_FREE + RXp_MATCH_TAINTED_off + RXp_MATCH_UTF8 + RXp_MATCH_UTF8_off + RXp_MATCH_UTF8_on + RXp_MATCH_UTF8_set + RXp_OFFSp + RXp_PAREN_NAMES + RX_PRECOMP_const + RXp_SAVED_COPY + RXp_SUBBEG + RXp_SUBCOFFSET + RXp_SUBLEN + RXp_SUBOFFSET + SAVECOMPPAD + SAVE_FREE_REXC_STATE + SAVE_MASK + SAVEt_COMPPAD + SAVEt_FREE_REXC_STATE + SAVE_TIGHT_SHIFT + SAVEt_REGCONTEXT + SAWAMPERSAND_LEFT + SAWAMPERSAND_MIDDLE + SAWAMPERSAND_RIGHT + SINGLE_PAT_MOD + specialWARN + SSGROW + SSPOPINT + SSPOPUV + SSPUSHINT + SSPUSHUV + STD_PAT_MODS + STD_PMMOD_FLAGS_CLEAR + STRLENs + SvCANCOW + SV_CONST_PUSH + SV_COW_REFCNT_MAX + SvPADTMP + SvPEEK + SvTAIL + SvVALID + TWO_BYTE_UTF8_TO_NATIVE + U16_MAX + U32_MAX + U8_MAX + UNICODE_MAJOR_VERSION + UNICODE_PAT_MOD + UNICODE_PAT_MODS + unpackWARN1 + unpackWARN2 + unpackWARN3 + unpackWARN4 + USER_PROP_MUTEX_LOCK + USER_PROP_MUTEX_UNLOCK + UTF8_ALLOW_ANYUV + UTF8_ALLOW_DEFAULT + UTF8_ALLOW_FE_FF + UTF8_DIE_IF_MALFORMED + UTF8_DIE_IF_MALFORMED_BIT_POS_ + UTF8_IS_NEXT_CHAR_DOWNGRADEABLE + UTF8_MIN_CONTINUATION_BYTE + UTF8_NO_CONFIDENCE_IN_CURLEN_ + UTF8_NO_CONFIDENCE_IN_CURLEN_BIT_POS_ + UTF8_TWO_BYTE_HI + vtohs + what_MULTI_CHAR_FOLD_latin1_safe + what_MULTI_CHAR_FOLD_utf8_safe + what_MULTI_CHAR_FOLD_utf8_safe_part0_ + what_MULTI_CHAR_FOLD_utf8_safe_part1_ + what_MULTI_CHAR_FOLD_utf8_safe_part2_ + what_MULTI_CHAR_FOLD_utf8_safe_part3_ + what_MULTI_CHAR_FOLD_utf8_safe_part4_ + what_MULTI_CHAR_FOLD_utf8_safe_part5_ + what_MULTI_CHAR_FOLD_utf8_safe_part6_ + what_MULTI_CHAR_FOLD_utf8_safe_part7_ + withinCOUNT + XDIGIT_VALUE + XTENDED_PAT_MOD + xV_FROM_REF +); + +# This is a list of symbols that are needed by various ext/ modules, and are +# not documented. They become undefined for any other modules. +my @needed_by_ext = qw( + AMG_CALLun + AMG_CALLunary + AMGf_assign + AMGf_noright + AMGf_unary + ASCTIME_LOCK + ASCTIME_UNLOCK + av_tindex_skip_len_mg + av_top_index_skip_len_mg + BhkENTRY + BHKf_bhk_eval + BHKf_bhk_post_end + BHKf_bhk_pre_end + BHKf_bhk_start + BhkFLAGS + blk_gimme + blk_oldsaveix + BmPREVIOUS + BmRARE + BmUSEFUL + CALLREGCOMP_ENG + CALLREGEXEC + CALLREG_NAMED_BUFF_ALL + CALLREG_NAMED_BUFF_FETCH + CALLREG_NAMED_BUFF_NEXTKEY + CAN_COW_FLAGS + CAN_COW_MASK + CASE_STD_PMMOD_FLAGS_PARSE_SET + CATCH_GET + CATCH_SET + cBINOPx + cCOPo + cCOPx + CC_QUOTEMETA_ + CC_VERTSPACE_ + CHANGE_MULTICALL_FLAGS + CHECK_AND_WARN_PROBLEMATIC_LOCALE_ + ckDEAD + cLISTOPo + cLISTOPx + cLOGOPo + cLOOPo + cLOOPx + cMETHOPo + cMETHOPx + COP_FEATURE_SIZE + CopHINTHASH_get + CowREFCNT + cPMOPo + cPMOPx + cPVOPo + cPVOPx + cSVOPo + cSVOPo_sv + cSVOPx + cSVOPx_sv + cUNOP_AUXo + cUNOP_AUXx + cUNOPo + CvANON + CvANONCONST + CvANONCONST_off + CvANONCONST_on + CvANON_off + CvCLONED + CvCONST + CVf_ANON + CVf_ANONCONST + CVf_AUTOLOAD + CVf_CLONE + CVf_CLONED + CVf_CVGV_RC + CVf_DYNFILE + CVf_EVAL_COMPILED + CVf_HASEVAL + CVf_IsMETHOD + CVf_LEXICAL + CVf_LVALUE + CVf_NAMED + CVf_NODEBUG + CVf_NOWARN_AMBIGUOUS + CVf_REFCOUNTED_ANYSV + CVf_SIGNATURE + CVf_UNIQUE + CVf_WEAKOUTSIDE + CVf_XS_RCSTACK + CvGV_set + CvHSCXT + CvISXSUB_on + CvLVALUE + CvLVALUE_on + CvNAMED + CvREFCOUNTED_ANYSV_on + CvXS_RCSTACK_off + CvXS_RCSTACK_on + CxMULTICALL + CXp_EVALBLOCK + CXp_FINALLY + CXp_FOR_DEF + CXp_FOR_GV + CXp_FOR_LVREF + CXp_FOR_PAD + CXp_HASARGS + CXp_MULTICALL + CXp_ONCE + CXp_REAL + CXp_SUB_RE + CXp_SUB_RE_FAKE + CXp_TRY + CXt_DEFER + DEBUG_BOTH_FLAGS_TEST_ + DEBUG_C + DEBUG_C_FLAG + DEBUG_C_TEST + DEBUG_C_TEST_ + DEBUG_L_FLAG + DEBUG_Lv + DEBUG_Lv_TEST + DEBUG_Lv_TEST_ + DEBUG_r + DEBUG_r_FLAG + DEBUG_X_FLAG + DEBUG_Xv + DEBUG_Xv_TEST + DEBUG_Xv_TEST_ + DEBUG_y_TEST_ + dMY_CXT_INTERP + DOUBLE_HAS_NAN + DPTR2FPTR + ENV_LOCK + ENV_READ_LOCK + ENV_READ_UNLOCK + ENVr_LOCALEr_LOCK + ENVr_LOCALEr_UNLOCK + ENV_UNLOCK + EVAL_INEVAL + EVAL_INREQUIRE + EVAL_KEEPERR + EVAL_NULL + EVAL_RE_REPARSING + EVAL_WARNONLY + FPTR2DPTR + FreeOp + GCC_DIAG_IGNORE + GCC_DIAG_IGNORE_STMT + GCC_DIAG_PRAGMA + GCC_DIAG_RESTORE + GCC_DIAG_RESTORE_STMT + generic_LC_invlist_uvchr_ + generic_LC_uvchr_ + G_FAKINGEVAL + GLOBAL_PAT_MOD + G_NODEBUG + GREEK_CAPITAL_LETTER_MU + GREEK_SMALL_LETTER_MU + G_RE_REPARSING + G_UNDEF_FILL + GvAVn + GvCVu + GvEGV + GvESTASH + GVf_ASSUMECV + gv_fetchmethod_flags + GvFILEGV + GvFILE_HEK + GvFILEx + GVf_IMPORTED + GVf_IMPORTED_AV + GVf_IMPORTED_CV + GVf_IMPORTED_HV + GVf_IMPORTED_SV + GVf_INTRO + GVf_ONCE_FATAL + GVf_RESERVED + GvGPFLAGS + GvHVn + GvLINE + gwENVr_LOCALEr_LOCK + gwENVr_LOCALEr_UNLOCK + G_WRITING_TO_STDERR + hasWARNBIT + HE_ARENA_ROOT_IX + HIGHEST_REGCOMP_DOT_H_SYNC_ + HINT_BLOCK_SCOPE + HINT_INTEGER + HINT_LOCALIZE_HH + HINT_RE_EVAL + HINT_STRICT_REFS + HSf_NOCHK + HSm_INTRPSIZE + HSm_KEY_MATCH + HV_DISABLE_UVAR_XKEY + HvENAME_get + HvENAMELEN_get + HvHasENAME + HvRAND_get + HvRITER + I32_MIN + INT32_MIN + isALNUM_uni + isALPHANUMERIC_uni + isALPHA_uni + isASCII_uni + isBLANK_uni + isCNTRL_uni + isDIGIT_uni + isGRAPH_uni + isIDCONT_uni + isIDFIRST_uni + isLOWER_uni + is_posix_ASCII + isPRINT_uni + isPSXSPC_uni + isPUNCT_uni + isQUOTEMETA + isREGEXP + isSPACE_uni + isU8_ASCII_LC + isUPPER_uni + isUTF8_POSSIBLY_PROBLEMATIC + is_VERTWS_cp_high + is_VERTWS_high + isVERTWS_uni + isVERTWS_utf8_safe + isVERTWS_uvchr + isWORDCHAR_uni + isXDIGIT_uni + KEYWORD_PLUGIN_EXPR + KEYWORD_PLUGIN_STMT + kUNOP + LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS + LATIN_SMALL_LETTER_SHARP_S + LATIN_SMALL_LETTER_SHARP_S_NATIVE + LATIN_SMALL_LETTER_Y_WITH_DIAERESIS + LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE + LATIN_SMALL_LIGATURE_ST_UTF8 + LC_COLLATE_LOCK + LC_COLLATE_UNLOCK + LC_NUMERIC_UNLOCK + LDBL_DIG + LEAVE_SCOPE + LINE_Tf + LOCALE_LOCK + LOCALE_READ_LOCK + LOCALE_READ_UNLOCK + LOCALE_UNLOCK + LvTARG + LvTARGLEN + LvTARGOFF + LvTYPE + MAX_UNICODE_UTF8_BYTES + MDEREF_ACTION_MASK + MDEREF_AV_gvav_aelem + MDEREF_AV_gvsv_vivify_rv2av_aelem + MDEREF_AV_padav_aelem + MDEREF_AV_padsv_vivify_rv2av_aelem + MDEREF_AV_pop_rv2av_aelem + MDEREF_AV_vivify_rv2av_aelem + MDEREF_FLAG_last + MDEREF_HV_gvhv_helem + MDEREF_HV_gvsv_vivify_rv2hv_helem + MDEREF_HV_padhv_helem + MDEREF_HV_padsv_vivify_rv2hv_helem + MDEREF_HV_pop_rv2hv_helem + MDEREF_HV_vivify_rv2hv_helem + MDEREF_INDEX_const + MDEREF_INDEX_gvsv + MDEREF_INDEX_MASK + MDEREF_INDEX_none + MDEREF_INDEX_padsv + MDEREF_MASK + MDEREF_reload + MDEREF_SHIFT + memBEGINPs + memBEGINs + MGf_REFCOUNTED + MGf_REQUIRE_GV + MICRO_SIGN + MICRO_SIGN_NATIVE + MKTIME_LOCK + MKTIME_UNLOCK + NATIVE_UTF8_TO_I8 + NOT_IN_NUMERIC_UNDERLYING_ + NOT_REACHED + NV_BIG_ENDIAN + NV_BODYLESS_UNION_ + NV_DIG + NV_EPSILON + NV_IMPLICIT_BIT + NV_LITTLE_ENDIAN + NV_MANT_DIG + NV_MAX + NV_MAX_10_EXP + NV_MAX_EXP + NV_MIN + NV_MIN_10_EXP + NV_MIN_EXP + NV_MIX_ENDIAN + NV_NAN_BITS + NV_NAN_IS_QUIET + NV_NAN_IS_SIGNALING + NV_NAN_PAYLOAD_MASK + NV_NAN_PAYLOAD_MASK_IEEE_754_128_BE + NV_NAN_PAYLOAD_MASK_IEEE_754_128_LE + NV_NAN_PAYLOAD_MASK_IEEE_754_64_BE + NV_NAN_PAYLOAD_MASK_IEEE_754_64_LE + NV_NAN_PAYLOAD_MASK_SKIP_EIGHT + NV_NAN_PAYLOAD_PERM + NV_NAN_PAYLOAD_PERM_0_TO_7 + NV_NAN_PAYLOAD_PERM_7_TO_0 + NV_NAN_PAYLOAD_PERM_IEEE_754_128_BE + NV_NAN_PAYLOAD_PERM_IEEE_754_128_LE + NV_NAN_PAYLOAD_PERM_IEEE_754_64_BE + NV_NAN_PAYLOAD_PERM_IEEE_754_64_LE + NV_NAN_PAYLOAD_PERM_SKIP_EIGHT + NV_NAN_QS_BIT + NV_NAN_QS_BIT_OFFSET + NV_NAN_QS_BIT_SHIFT + NV_NAN_QS_BYTE + NV_NAN_QS_BYTE_OFFSET + NV_NAN_QS_QUIET + NV_NAN_QS_SIGNALING + NV_NAN_QS_TEST + NV_NAN_QS_XOR + NV_NAN_SET_QUIET + NV_NAN_SET_SIGNALING + NV_VAX_ENDIAN + NV_WITHIN_IV + NV_WITHIN_UV + NV_X86_80_BIT + OA_AVREF + OA_BASEOP_OR_UNOP + OA_CLASS_MASK + OA_CVREF + OA_DANGEROUS + OA_DEFGV + OA_FILEREF + OA_FILESTATOP + OA_FOLDCONST + OA_HVREF + OA_LIST + OA_LOOPEXOP + OA_MARK + OA_METHOP + OA_OPTIONAL + OA_OTHERINT + OA_RETSCALAR + OA_SCALAR + OA_SCALARREF + OASHIFT + OA_TARGET + OA_TARGLEX + OA_UNOP_AUX + OPCODE + OPf_FOLDED + OPf_PARENS + OPf_SPECIAL + OPf_WANT + OP_LVALUE_NO_CROAK + OPpALLOW_FAKE + OPpARG1_MASK + OPpARG2_MASK + OPpARG3_MASK + OPpARG4_MASK + OPpARGELEM_AV + OPpARGELEM_HV + OPpARGELEM_MASK + OPpARGELEM_SV + OPpARG_IF_FALSE + OPpARG_IF_UNDEF + OPpASSIGN_BACKWARDS + OPpASSIGN_COMMON_AGG + OPpASSIGN_COMMON_RC1 + OPpASSIGN_COMMON_SCALAR + OPpASSIGN_CV_TO_GV + OPpASSIGN_TRUEBOOL + OPpAVHVSWITCH_MASK + OPpCONCAT_NESTED + OPpCONST_BARE + OPpCONST_ENTERED + OPpCONST_NOVER + OPpCONST_SHORTCIRCUIT + OPpCONST_STRICT + OPpCONST_TOKEN_BITS + OPpCONST_TOKEN_FILE + OPpCONST_TOKEN_LINE + OPpCONST_TOKEN_MASK + OPpCONST_TOKEN_PACKAGE + OPpCONST_TOKEN_SHIFT + OPpCOREARGS_DEREF1 + OPpCOREARGS_DEREF2 + OPpCOREARGS_PUSHMARK + OPpCOREARGS_SCALARMOD + OPpDEFER_FINALLY + OPpDEREF + OPpDEREF_AV + OPpDEREF_HV + OPpDEREF_SV + OPpDONT_INIT_GV + OPpEARLY_CV + OPpEMPTYAVHV_IS_HV + OPpENTERSUB_AMPER + OPpENTERSUB_DB + OPpENTERSUB_INARGS + OPpENTERSUB_LVAL_MASK + OPpENTERSUB_NOPAREN + OPpEVAL_BYTES + OPpEVAL_COPHH + OPpEVAL_EVALSV + OPpEVAL_HAS_HH + OPpEVAL_RE_REPARSING + OPpEVAL_UNICODE + OPpEXISTS_SUB + OPpFLIP_LINENUM + OPpFT_ACCESS + OPpFT_AFTER_t + OPpFT_STACKED + OPpFT_STACKING + OPpHELEMEXISTSOR_DELETE + OPpHINT_STRICT_REFS + OPpHUSH_VMSISH + OPpINDEX_BOOLNEG + OPpINITFIELD_AV + OPpINITFIELD_HV + OPpINITFIELDS + OPpITER_DEF + OPpITER_INDEXED + OPpITER_REVERSED + OPpKVSLICE + OPpLIST_GUESSED + OPpLVAL_DEFER + OPpLVAL_INTRO + OPpLVALUE + OPpLVREF_AV + OPpLVREF_CV + OPpLVREF_ELEM + OPpLVREF_HV + OPpLVREF_ITER + OPpLVREF_SV + OPpLVREF_TYPE + OPpMAYBE_LVSUB + OPpMAYBE_TRUEBOOL + OPpMAY_RETURN_CONSTANT + OPpMETH_NO_BAREWORD_IO + op_pmflags + op_pmoffset + OPpMULTICONCAT_APPEND + OPpMULTICONCAT_FAKE + OPpMULTICONCAT_STRINGIFY + OPpMULTIDEREF_DELETE + OPpMULTIDEREF_EXISTS + OPpOFFBYONE + OPpOPEN_IN_CRLF + OPpOPEN_IN_RAW + OPpOPEN_OUT_CRLF + OPpOPEN_OUT_RAW + OPpOUR_INTRO + OPpPADHV_ISKEYS + OPpPADRANGE_COUNTMASK + OPpPADRANGE_COUNTSHIFT + OPpPAD_STATE + OPpPARAM_IF_FALSE + OPpPARAM_IF_UNDEF + OPpPV_IS_UTF8 + OPpREFCOUNTED + OPpREPEAT_DOLIST + OPpREVERSE_INPLACE + OPpRV2HV_ISKEYS + OPpSELF_IN_PAD + OPpSLICE + OPpSLICEWARNING + OPpSORT_DESCEND + OPpSORT_INPLACE + OPpSORT_INTEGER + OPpSORT_NUMERIC + OPpSORT_REVERSE + OPpSPLIT_ASSIGN + OPpSPLIT_IMPLIM + OPpSPLIT_LEX + OPpSUBSTR_REPL_FIRST + OPpTARGET_MY + OPpTRANS_ALL + OPpTRANS_BITS + OPpTRANS_CAN_FORCE_UTF8 + OPpTRANS_COMPLEMENT + OPpTRANS_DELETE + OPpTRANS_FROM_UTF + OPpTRANS_GROWS + OPpTRANS_IDENTICAL + OPpTRANS_MASK + OPpTRANS_ONLY_UTF8_INVARIANTS + OPpTRANS_SHIFT + OPpTRANS_SQUASH + OPpTRANS_TO_UTF + OPpTRANS_USE_SVOP + OPpTRUEBOOL + OPpUNDEF_KEEP_PV + OPpUSEINT + padadd_NO_DUP_CHECK + padadd_STATE + PAD_COMPNAME_FLAGS_isOUR + PAD_COMPNAME_SV + PAD_FAKELEX_ANON + PAD_FAKELEX_MULTI + PADNAMEf_FIELD + PadnameFLAGS + PADNAMEf_LVALUE + PADNAMEf_OUR + PADNAMEf_STATE + PADNAMEf_TYPED + PadnameIsOUR + PadnameOUTER + PAD_SET_CUR_NOSAVE + PAD_SVl + PMf_BASE_SHIFT + PMf_CHARSET + PMf_CODELIST_PRIVATE + PMf_CONST + PMf_CONTINUE + PMf_EVAL + PMf_EXTENDED + PMf_EXTENDED_MORE + PMf_FOLD + PMf_GLOBAL + PMf_HAS_CV + PMf_HAS_ERROR + PMf_IS_QR + PMf_KEEP + PMf_KEEPCOPY + PMf_MULTILINE + PMf_NOCAPTURE + PMf_NONDESTRUCT + PMf_ONCE + PMf_RETAINT + PMf_SINGLELINE + PMf_SPLIT + PMf_STRICT + PMf_USED + PMf_USE_RE_EVAL + PMf_WILDCARD + PM_GETRE + PmopSTASH + PmopSTASHPV + POPSTACK_TO + PUSH_MULTICALL_FLAGS + PUSHSTACK + pWARN_ALL + pWARN_NONE + pWARN_STD + RCPVf_ALLOW_EMPTY + RCPVf_NO_COPY + RCPVf_USE_STRLEN + REFCOUNTED_HE_KEY_UTF8 + RETURN + ROTL64 + ROTR32 + ROTR64 + RV2CVOPCV_FLAG_MASK + RV2CVOPCV_MAYBE_NAME_GV + RV2CVOPCV_RETURN_STUB + RX_COMPFLAGS + RX_ENGINE + RX_EXTFLAGS + RXf_BASE_SHIFT + RXf_CHECK_ALL + RXf_COPY_DONE + RXf_EVAL_SEEN + RXf_INTUIT_TAIL + RXf_IS_ANCHORED + RXf_MATCH_UTF8 + RXf_PMf_CHARSET + RXf_PMf_CHARSET_SHIFT_ + RXf_PMf_EXTENDED_MORE + RXf_PMf_NOCAPTURE + RXf_PMf_SHIFT_NEXT_ + RXf_PMf_SPLIT + RXf_PMf_STRICT + RXf_TAINTED + RXf_TAINTED_SEEN + RXf_UNBOUNDED_QUANTIFIER_SEEN + RXf_USE_INTUIT_ML + RXf_USE_INTUIT_NOML + RXp_COMPFLAGS + RXp_ENGINE + RXp_EXTFLAGS + RX_PRECOMP + RX_PRELEN + RX_UTF8 + RX_WRAPLEN + RX_WRAPPED + RX_WRAPPED_const + SAVEFREECOPHH + SAVEHINTS + SAVEt_FREECOPHH + SAVEt_FREESV + SETs + sharepvn + shifted_octet_ + strBEGINs + SVf_BREAK + SvIsCOW_static + SvIsUV_on + SvNVx + SvOK_off + SVpad_OUR + SVpad_STATE + SVpad_TYPED + SV_POSBYTES + SVppv_STATIC + SvSetSV_and + SvTIED_mg + toFOLD_LC + toFOLD_uni + toLOWER_uni + to_posix_LOWER + to_posix_UPPER + toTITLE_uni + toU8_LOWER_LC + toU8_UPPER_LC + toUPPER_LC + toUPPER_uni + tryAMAGICunDEREF + TZSET_LOCK + TZSET_UNLOCK + U8TO32_LE + U8TO64_LE + UNICODE_SURROGATE_FIRST + UTF8_ACCUMULATE + UTF8_IS_CONTINUED + UTF8_IS_DOWNGRADEABLE_START + UTF8_IS_START + UTF8_IS_START_base + UTF8_MAX_FOLD_CHAR_EXPAND + utf8_to_utf16 + utf8_to_utf16_reversed + UTF_IS_CONTINUATION_MASK + UTF_MIN_ABOVE_LATIN1_BYTE + UTF_MIN_START_BYTE + UTF_START_BYTE + UTF_START_MASK + want_vtbl_bm + want_vtbl_fm + xlv_targoff + XOPf_xop_dump + XOPf_xop_peep + XPUSHTARG + XS_DYNAMIC_FILENAME +); + +my %unexpectedly_used_outside_core; +$unexpectedly_used_outside_core{$_} = 1 for @unexpectedly_used_outside_core; + +my %system_symbols; +$system_symbols{$_} = 1 for @system_symbols; + +my %needed_by_ext_re; +$needed_by_ext_re{$_} = 1 for @needed_by_ext_re; + +my %needed_by_ext; +$needed_by_ext{$_} = 1 for @needed_by_ext; + +# Keep lists of symbols to undef under various conditions. We can initialize +# the two ones for perl extensions with the lists above. +my %always_undefs; +my %non_ext_re_undefs = %needed_by_ext_re; +my %non_ext_undefs = %needed_by_ext; + # See database of global and static function prototypes in embed.fnc # This is used to generate prototype headers under various configurations, # export symbols lists for different platforms, and macros to provide an @@ -778,6 +2456,15 @@ sub embed_h { my $embed= $_->{embed} or next; my ($flags,$retval,$func,$args) = @{$embed}{qw(flags return_type name args)}; + if ($flags =~ /m/ && $flags !~ /p/) { + if ($flags !~ /[ACE]/) { # No external visibility + $always_undefs{$func} = 1; + } + elsif ($flags =~ /E/) { # Visible to perl extensions + $non_ext_undefs{$func} = 1; + } + } + my $full_name = full_name($func, $flags); next if $full_name eq $func; # Don't output a no-op. @@ -910,15 +2597,11 @@ sub generate_embed_h { print $em <<~'END'; /* (Doing namespace management portably in C is really gross.) */ - /* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms - * (like warn instead of Perl_warn) for the API are not defined. - * Not defining the short forms is a good thing for cleaner embedding. - * BEWARE that a bunch of macros don't have long names, so either must be - * added or don't use them if you define this symbol */ - - #ifndef PERL_NO_SHORT_NAMES + /* When this symbol is defined, we undef various symbols we have defined + * before when this file was #included with the symbol undefined */ + #if ! defined(PERL_DO_UNDEFS) - /* Hide global symbols */ + /* Create short name macros that hide any need for thread context */ END @@ -928,8 +2611,6 @@ sub generate_embed_h { print $em <<~'END'; - #endif /* #ifndef PERL_NO_SHORT_NAMES */ - #if !defined(PERL_CORE) /* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to * disable them. @@ -956,9 +2637,7 @@ sub generate_embed_h { provides a set of compatibility functions that don't take an extra argument but grab the context pointer using the macro dTHX. */ - #if defined(MULTIPLICITY) \ - && !defined(PERL_NO_SHORT_NAMES) \ - && !defined(PERL_WANT_VARARGS) + #if defined(MULTIPLICITY) && !defined(PERL_WANT_VARARGS) END foreach (@have_compatibility_macros) { @@ -978,7 +2657,35 @@ sub generate_embed_h { print $em indent_define("Perl_${_}_nocontext", "Perl_$_", " "); } + print $em <<~EOT; + #endif /* !defined(MULTIPLICITY) */ + #elif ! defined(PERL_CORE) + EOT + + # We undefine all elements on the list of symbol names to keep from user + # name space if PERL_NO_SHORT_NAMES is in effect (which requests this), + # but override it if are compiling the core. + for my $i ( + [ "", \%always_undefs ], + [ '#ifndef PERL_EXT_RE_BUILD', \%non_ext_re_undefs ], + [ '#ifndef PERL_EXT', \%non_ext_undefs ], + ) + { + my $ifdef = $i->[0]; + my $hash = $i->[1]; + + print $em $ifdef, "\n" if $ifdef; + for my $name ( sort { lc $a cmp lc $b + or $a cmp $b + } keys %{$hash}) + { + print $em "#undef $name\n"; + } + print $em "#endif\n" if $ifdef; + } + print $em "#endif\n"; + close $em; normalize_and_print('embed.h',$embed_buffer) @@ -1016,11 +2723,203 @@ sub generate_embedvar_h { unless $error_count; } +sub recurse_conds { + + # Look through the list of conditionals that HeaderParser generates, + # looking for occurrences of the regex $pattern, returning true if found; + # false otherwise. + + my $status = 0; + my ($pattern, @conds) = @_; + for my $this_cond (@conds) { + + # Recurse if necessary + if (ref $this_cond eq 'ARRAY') { + $status |= recurse_conds($pattern, $this_cond->@*); + return $status if $status; # Early return if found + } + else { + $status |= $this_cond =~ $pattern; + return $status if $status; # Early return if found + } + } + + return 0; +} + +my %visibility; + +sub process_apidoc_lines { + + # Look through the input array of lines for ones that can declare the + # visibility of a symbol, and add those that are visible externally to + # that list; and those that are visible to perl extensions to that list + + my $group_flags; + for my $individual_line (@_) { + next unless $individual_line =~ + m/ ^=for \s+ apidoc (\b | _defn | _item) \s* (.+) /x; + my $type = $1; + + # A full-blown declaration has all these fields + my ($flags, $return_type, $name, @rest) = split /\s*\|\s*/, $2; + + # But some lines look like '=for apidoc foo' where the rest of the + # data comes from elsewhere. For these, shift. + if (! defined $return_type) { + $name = $flags; + $flags = ""; + } + + # These declarations may come in groups with the first line being + # 'apidoc', and the remaining ones 'apidoc_item'. The flags parameter + # of the 'apidoc' line applies to the rest, though those may add flags + # individually. + if ($type ne "_item" ) { + $group_flags = $flags; + } + elsif ($flags) { + $flags .= $group_flags; + } + else { + $flags = $group_flags; + } + + # If no flag indicates any external visibility, we are done with this + # one. + $flags =~ s/[^ACE]//g; + next unless $flags; + + #next if defined $needed_by_ext{$name}; + #next if defined $needed_by_ext_re{$name}; + + #die_at_end "${name}'s visibility is declared more than once" + #if defined $visibility{$name}; + $visibility{$name} = $flags; + } +} + +sub find_undefs { + + # Find all the #defines that are visible to modules and which aren't + # marked as such nor whose names indicate they are reserved for Perl's + # use. + # + # First examine the passed in data from embed.fnc; + my $all = shift; + foreach my $entry ($all->@*) { + next unless $entry->embed; + my $flags = $entry->embed->{flags}; + $flags =~ s/[^ACE]//g; + next unless $flags; # No visibility + $visibility{$entry->embed->{name}} = $flags; + } + + # Then examine every top-level header. And we also examine the top + # level dot c files looking for symbols that are supposed to be visible. + my @header_list; + my @c_list; + open my $mf, "<", "MANIFEST" or die "Can't open MANIFEST: $!"; + while (defined (my $file = <$mf>)) { + chomp $file;; + $file =~ s/ \s .* //x; + next if $file =~ m,/,; + next if defined $skip_files{$file}; + + push @header_list, $file if $file =~ / ( \.h | \.inc ) \b /x; + push @c_list, $file if $file =~ / \.c \b /x; + } + close $mf or die "Can't close MANIFEST: $!"; + + # There are a few cases where we redefine a system function to use the + # 64-bit equivalent one that has a different name. They currenty all look + # like this. These symbols would show up as #defines that shouldn't have + # external visibility. + my $has_64_pattern = qr / ( HAS | USE ) _ \w* 64 /x; + + foreach my $hdr (@header_list) { + + # Parse the header + my $lines = HeaderParser->new()->read_file($hdr)->lines(); + foreach my $line ($lines->@*) { + + # We are here looking only for #defines and visibility + # declarations + next unless $line->{type} eq 'content'; + + # First, for #defines. + if ($line->{sub_type} eq '#define') { + + # HeaderParser stripped of most everything. + my $flat = $line->{flat}; + + # Just the symbol and its definition + $flat =~ s/ ^ \s* \# \s* define \s+ //x; + + # Just the symbol, no arglist nor definition + $flat =~ s/ (?: \s | \( ) .* //x; + + # These are reserved for Perl's use, so not a problem. + next if $flat =~ / ^ PL_ /x; + next if $flat =~ /perl/i; + + # Presume that we are to keep this out of the user's namespace + $always_undefs{$flat} = 1; + + # Often perl has code to make sure various symbols that are + # always expected by the system to be defined, in fact are. + # These don't constitute namespace pollution. So, if perl + # defines a symbol only if it already isn't defined, we add it + # to the list of system symbols + my $pattern = qr/ ! \s* defined\($flat\)/x; + if ( recurse_conds($pattern, $line->{cond}->@*) + || recurse_conds($has_64_pattern, $line->{cond}->@*)) + { + $system_symbols{$flat} = 1; + } + } + else { + + # Otherwise check for a visibility declaration. + next unless $line->{sub_type} eq 'text'; + + # Only comments have apidoc lines. + next unless $line->{flat} eq ""; + + next unless $line->{line} =~ / ^ =for \s+ apidoc /mx; + process_apidoc_lines(split /\n/, $line->{line}); + } + } + } # Done with headrs + + # Now look through the C and pod files + foreach my $pod (@c_list, @pod_list) { + open my $pfh, "<", $pod or die "Can't open $pod: $!"; + process_apidoc_lines(<$pfh>); + close $pfh or die "Can't close $pod: $!"; + } + + # Here, have found all the externally visible macro definitions. We will + # undef all of them that aren't expected to be visible and aren't + # otherwise needed to be visible. + foreach my $entry (keys %system_symbols, + %needed_by_ext, + %needed_by_ext_re, + %visibility, + %unexpectedly_used_outside_core + ) + { + delete $always_undefs{$entry}; + } + +} + sub update_headers { my ($all, $api, $ext, $core) = setup_embed(); # see regen/embed_lib.pl generate_proto_h($all); die_at_end "$unflagged_pointers pointer arguments to clean up\n" if $unflagged_pointers; + find_undefs($all); generate_embed_h($all, $api, $ext, $core); generate_embedvar_h(); die "$error_count errors found" if $error_count;