New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PATCH] fix -DNO_MATHOMS build, mathomed syms were not removed from perldll.def #16502
Comments
From @bulk88Created by @bulk88See attached patch. This probably should go into 5.28 but I'm not 100% See also Perl Info
|
From @bulk880001-fix-DNO_MATHOMS-build-mathomed-syms-were-not-removed.patchFrom 73c42cf023b73b93bf69d2e2238507f345049dba Mon Sep 17 00:00:00 2001
From: Daniel Dragan <bulk88@hotmail.com>
Date: Wed, 11 Apr 2018 02:15:18 -0400
Subject: [PATCH] fix -DNO_MATHOMS build, mathomed syms were not removed from
perldll.def
Commit 3f1866a8f6 assumed "A" flag means a function can't be mathomed. Not
true. Many funcs were listed in embed.fnc as "A" yet were in mathoms.c.
This caused a missing symbol link failure on Win32 with -DNO_MATHOMS,
since the "A" mathomed funcs were now put into perlldll.def while
previously they were parsed out of mathoms.c by makedef.pl. Revise the
logic so "b" means instant removal from the export list on a no mathoms
build.
embed.fnc "b" flag adds were generated from a missing symbol list from my
linker, some funcs not in my build/platform config might need to be "b"
flagged in future. Some funcs like ASCII_TO_NEED were already marked "b"
but still being by mistake exported because they were also "A".
sv_2bool, sv_eq and sv_collxfrm also needed a "p" flag or a Perl_-less
symbol was declared in proto.h. sv_2bool and sv_collxfrm also failed
porting/args_assert.t so add those macros to mathoms.c
---
embed.fnc | 170 ++++++++++++++++++++++++++++-----------------------------
embed.h | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
makedef.pl | 4 +-
mathoms.c | 2 +
proto.h | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
5 files changed, 430 insertions(+), 90 deletions(-)
diff --git a/embed.fnc b/embed.fnc
index f8e3414..63f8ae0 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -358,8 +358,8 @@ Afnp |void |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|...
Afnp |void |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|...
Afnp |void |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
Afnp |void |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
-Afnp |int |printf_nocontext|NN const char *format|...
+Abfnp |int |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
+Abfnp |int |printf_nocontext|NN const char *format|...
#endif
: Used in pp.c
p |SV * |core_prototype |NULLOK SV *sv|NN const char *name \
@@ -418,7 +418,7 @@ Ap |void |dounwind |I32 cxix
pmb |bool|do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp
: Used in pp_sys.c
p |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
-Ap |int |do_binmode |NN PerlIO *fp|int iotype|int mode
+Abp |int |do_binmode |NN PerlIO *fp|int iotype|int mode
: Used in pp.c
Ap |bool |do_close |NULLOK GV* gv|bool not_implicit
: Defined in doio.c, used only in pp_sys.c
@@ -462,7 +462,7 @@ Ap |void |do_join |NN SV *sv|NN SV *delim|NN SV **mark|NN SV **sp
pR |I32 |do_ncmp |NN SV *const left|NN SV *const right
Apmb |bool |do_open |NN GV* gv|NN const char* name|I32 len|int as_raw \
|int rawmode|int rawperm|NULLOK PerlIO* supplied_fp
-Ap |bool |do_open9 |NN GV *gv|NN const char *name|I32 len|int as_raw \
+Abp |bool |do_open9 |NN GV *gv|NN const char *name|I32 len|int as_raw \
|int rawmode|int rawperm|NULLOK PerlIO *supplied_fp \
|NN SV *svs|I32 num
pn |void |setfd_cloexec|int fd
@@ -589,7 +589,7 @@ ApR |GV* |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \
ApR |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \
|STRLEN len|U32 flags
Ap |void |gv_check |NN HV* stash
-Ap |void |gv_efullname |NN SV* sv|NN const GV* gv
+Abp |void |gv_efullname |NN SV* sv|NN const GV* gv
Apmb |void |gv_efullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
Ap |GV* |gv_fetchfile |NN const char* name
@@ -619,7 +619,7 @@ ApM |GV* |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
ApM |GV* |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
|const STRLEN len|U32 flags
Ap |GV* |gv_fetchpv |NN const char *nambeg|I32 add|const svtype sv_type
-Ap |void |gv_fullname |NN SV* sv|NN const GV* gv
+Abp |void |gv_fullname |NN SV* sv|NN const GV* gv
Apmb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
: Used in scope.c
@@ -745,28 +745,28 @@ ApR |I32 |is_lvalue_sub
: Used in cop.h
XopR |I32 |was_lvalue_sub
ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-ADMpR |U32 |to_uni_upper_lc|U32 c
-ADMpR |U32 |to_uni_title_lc|U32 c
-ADMpR |U32 |to_uni_lower_lc|U32 c
-ADMpR |bool |is_uni_alnum |UV c
-ADMpR |bool |is_uni_alnumc |UV c
-ADMpR |bool |is_uni_idfirst |UV c
-ADMpR |bool |is_uni_alpha |UV c
-ADMpPR |bool |is_uni_ascii |UV c
-ADMpPR |bool |is_uni_blank |UV c
-ADMpPR |bool |is_uni_space |UV c
-ADMpPR |bool |is_uni_cntrl |UV c
-ADMpR |bool |is_uni_graph |UV c
-ADMpR |bool |is_uni_digit |UV c
-ADMpR |bool |is_uni_upper |UV c
-ADMpR |bool |is_uni_lower |UV c
-ADMpR |bool |is_uni_print |UV c
-ADMpR |bool |is_uni_punct |UV c
-ADMpPR |bool |is_uni_xdigit |UV c
+AbDMpR |U32 |to_uni_upper_lc|U32 c
+AbDMpR |U32 |to_uni_title_lc|U32 c
+AbDMpR |U32 |to_uni_lower_lc|U32 c
+AbDMpR |bool |is_uni_alnum |UV c
+AbDMpR |bool |is_uni_alnumc |UV c
+AbDMpR |bool |is_uni_idfirst |UV c
+AbDMpR |bool |is_uni_alpha |UV c
+AbDMpPR |bool |is_uni_ascii |UV c
+AbDMpPR |bool |is_uni_blank |UV c
+AbDMpPR |bool |is_uni_space |UV c
+AbDMpPR |bool |is_uni_cntrl |UV c
+AbDMpR |bool |is_uni_graph |UV c
+AbDMpR |bool |is_uni_digit |UV c
+AbDMpR |bool |is_uni_upper |UV c
+AbDMpR |bool |is_uni_lower |UV c
+AbDMpR |bool |is_uni_print |UV c
+AbDMpR |bool |is_uni_punct |UV c
+AbDMpPR |bool |is_uni_xdigit |UV c
AMp |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp
AMp |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp
-ADMpR |bool |isIDFIRST_lazy |NN const char* p
-ADMpR |bool |isALNUM_lazy |NN const char* p
+AbDMpR |bool |isIDFIRST_lazy |NN const char* p
+AbDMpR |bool |isALNUM_lazy |NN const char* p
#ifdef PERL_IN_UTF8_C
snR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp \
|const char dummy
@@ -785,23 +785,23 @@ p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_o
AMp |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp
AMmp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp
AMp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-ADMpR |bool |is_uni_alnum_lc|UV c
-ADMpR |bool |is_uni_alnumc_lc|UV c
-ADMpR |bool |is_uni_idfirst_lc|UV c
+AbDMpR |bool |is_uni_alnum_lc|UV c
+AbDMpR |bool |is_uni_alnumc_lc|UV c
+AbDMpR |bool |is_uni_idfirst_lc|UV c
AMpR |bool |_is_uni_perl_idcont|UV c
AMpR |bool |_is_uni_perl_idstart|UV c
-ADMpR |bool |is_uni_alpha_lc|UV c
-ADMpPR |bool |is_uni_ascii_lc|UV c
-ADMpPR |bool |is_uni_space_lc|UV c
-ADMpPR |bool |is_uni_blank_lc|UV c
-ADMpPR |bool |is_uni_cntrl_lc|UV c
-ADMpR |bool |is_uni_graph_lc|UV c
-ADMpR |bool |is_uni_digit_lc|UV c
-ADMpR |bool |is_uni_upper_lc|UV c
-ADMpR |bool |is_uni_lower_lc|UV c
-ADMpR |bool |is_uni_print_lc|UV c
-ADMpR |bool |is_uni_punct_lc|UV c
-ADMpPR |bool |is_uni_xdigit_lc|UV c
+AbDMpR |bool |is_uni_alpha_lc|UV c
+AbDMpPR |bool |is_uni_ascii_lc|UV c
+AbDMpPR |bool |is_uni_space_lc|UV c
+AbDMpPR |bool |is_uni_blank_lc|UV c
+AbDMpPR |bool |is_uni_cntrl_lc|UV c
+AbDMpR |bool |is_uni_graph_lc|UV c
+AbDMpR |bool |is_uni_digit_lc|UV c
+AbDMpR |bool |is_uni_upper_lc|UV c
+AbDMpR |bool |is_uni_lower_lc|UV c
+AbDMpR |bool |is_uni_print_lc|UV c
+AbDMpR |bool |is_uni_punct_lc|UV c
+AbDMpPR |bool |is_uni_xdigit_lc|UV c
AndmoR |bool |is_utf8_invariant_string|NN const U8* const s \
|STRLEN len
AnidR |bool |is_utf8_invariant_string_loc|NN const U8* const s \
@@ -820,7 +820,7 @@ AmnpdRP |bool |is_invariant_string|NN const U8* const s|STRLEN len
EXnidR |bool |is_utf8_non_invariant_string|NN const U8* const s \
|STRLEN len
#endif
-AnpdD |STRLEN |is_utf8_char |NN const U8 *s
+AbnpdD |STRLEN |is_utf8_char |NN const U8 *s
Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
AnmdpR |bool |is_utf8_string |NN const U8 *s|STRLEN len
AnidR |bool |is_utf8_string_flags \
@@ -868,10 +868,10 @@ AMpR |bool |_is_utf8_FOO|U8 classnum|NN const U8 * const p \
|NN const char * const file|const unsigned line
AMpR |bool |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p \
|NN const U8 * const e
-ADMpR |bool |is_utf8_alnum |NN const U8 *p
-ADMpR |bool |is_utf8_alnumc |NN const U8 *p
-ADMpR |bool |is_utf8_idfirst|NN const U8 *p
-ADMpR |bool |is_utf8_xidfirst|NN const U8 *p
+AbDMpR |bool |is_utf8_alnum |NN const U8 *p
+AbDMpR |bool |is_utf8_alnumc |NN const U8 *p
+AbDMpR |bool |is_utf8_idfirst|NN const U8 *p
+AbDMpR |bool |is_utf8_xidfirst|NN const U8 *p
AMpR |bool |_is_utf8_idcont|NN const U8 *p
AMpR |bool |_is_utf8_idstart|NN const U8 *p
AMpR |bool |_is_utf8_xidcont|NN const U8 *p
@@ -880,25 +880,25 @@ AMpR |bool |_is_utf8_perl_idcont_with_len|NN const U8 *p \
|NN const U8 * const e
AMpR |bool |_is_utf8_perl_idstart_with_len|NN const U8 *p \
|NN const U8 * const e
-ADMpR |bool |is_utf8_idcont |NN const U8 *p
-ADMpR |bool |is_utf8_xidcont |NN const U8 *p
-ADMpR |bool |is_utf8_alpha |NN const U8 *p
-ADMpR |bool |is_utf8_ascii |NN const U8 *p
-ADMpR |bool |is_utf8_blank |NN const U8 *p
-ADMpR |bool |is_utf8_space |NN const U8 *p
-ADMpR |bool |is_utf8_perl_space |NN const U8 *p
-ADMpR |bool |is_utf8_perl_word |NN const U8 *p
-ADMpR |bool |is_utf8_cntrl |NN const U8 *p
-ADMpR |bool |is_utf8_digit |NN const U8 *p
-ADMpR |bool |is_utf8_posix_digit |NN const U8 *p
-ADMpR |bool |is_utf8_graph |NN const U8 *p
-ADMpR |bool |is_utf8_upper |NN const U8 *p
-ADMpR |bool |is_utf8_lower |NN const U8 *p
-ADMpR |bool |is_utf8_print |NN const U8 *p
-ADMpR |bool |is_utf8_punct |NN const U8 *p
-ADMpR |bool |is_utf8_xdigit |NN const U8 *p
+AbDMpR |bool |is_utf8_idcont |NN const U8 *p
+AbDMpR |bool |is_utf8_xidcont |NN const U8 *p
+AbDMpR |bool |is_utf8_alpha |NN const U8 *p
+AbDMpR |bool |is_utf8_ascii |NN const U8 *p
+AbDMpR |bool |is_utf8_blank |NN const U8 *p
+AbDMpR |bool |is_utf8_space |NN const U8 *p
+AbDMpR |bool |is_utf8_perl_space |NN const U8 *p
+AbDMpR |bool |is_utf8_perl_word |NN const U8 *p
+AbDMpR |bool |is_utf8_cntrl |NN const U8 *p
+AbDMpR |bool |is_utf8_digit |NN const U8 *p
+AbDMpR |bool |is_utf8_posix_digit |NN const U8 *p
+AbDMpR |bool |is_utf8_graph |NN const U8 *p
+AbDMpR |bool |is_utf8_upper |NN const U8 *p
+AbDMpR |bool |is_utf8_lower |NN const U8 *p
+AbDMpR |bool |is_utf8_print |NN const U8 *p
+AbDMpR |bool |is_utf8_punct |NN const U8 *p
+AbDMpR |bool |is_utf8_xdigit |NN const U8 *p
AMpR |bool |_is_utf8_mark |NN const U8 *p
-ADMpR |bool |is_utf8_mark |NN const U8 *p
+AbDMpR |bool |is_utf8_mark |NN const U8 *p
#if defined(PERL_CORE) || defined(PERL_EXT)
EXdpR |bool |isSCRIPT_RUN |NN const U8 *s|NN const U8 *send \
|const bool utf8_target
@@ -1306,7 +1306,7 @@ Ando |const char*|Perl_langinfo|const nl_item item
Ando |const char*|Perl_langinfo|const int item
#endif
ApOM |int |init_i18nl10n |int printwarn
-ApOM |int |init_i18nl14n |int printwarn
+AbpOM |int |init_i18nl14n |int printwarn
p |char* |my_strerror |const int errnum
Xpn |void |_warn_problematic_locale
Xp |void |set_numeric_underlying
@@ -1317,7 +1317,7 @@ Apdn |bool |sync_locale
ApMn |void |thread_locale_init
ApMn |void |thread_locale_term
ApdO |void |require_pv |NN const char* pv
-Apd |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \
+Abpd |void |pack_cat |NN SV *cat|NN const char *pat|NN const char *patend \
|NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags
Apd |void |packlist |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist
#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
@@ -1459,10 +1459,10 @@ Ap |void |save_I8 |NN I8* bytep
Ap |void |save_int |NN int* intp
Ap |void |save_item |NN SV* item
Ap |void |save_iv |NN IV *ivp
-Ap |void |save_list |NN SV** sarg|I32 maxsarg
-Ap |void |save_long |NN long* longp
+Abp |void |save_list |NN SV** sarg|I32 maxsarg
+Abp |void |save_long |NN long* longp
Apmb |void |save_mortalizesv|NN SV* sv
-Ap |void |save_nogv |NN GV* gv
+Abp |void |save_nogv |NN GV* gv
: Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
Apmb |void |save_op
Ap |SV* |save_scalar |NN GV* gv
@@ -1516,7 +1516,7 @@ Ap |I32 |start_subparse |I32 is_format|U32 flags
Xp |void |init_named_cv |NN CV *cv|NN OP *nameop
: Used in pp_ctl.c
p |void |sub_crush_depth|NN CV* cv
-Amd |bool |sv_2bool |NN SV *const sv
+Apbmd |bool |sv_2bool |NN SV *const sv
Apd |bool |sv_2bool_flags |NN SV *sv|I32 flags
Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
|const I32 lref
@@ -1534,15 +1534,15 @@ Apmb |char* |sv_2pv |NN SV *sv|NULLOK STRLEN *lp
Apd |char* |sv_2pv_flags |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
Apd |char* |sv_2pvutf8 |NN SV *sv|NULLOK STRLEN *const lp
Apd |char* |sv_2pvbyte |NN SV *sv|NULLOK STRLEN *const lp
-Ap |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp
+Abp |char* |sv_pvn_nomg |NN SV* sv|NULLOK STRLEN* lp
Apmb |UV |sv_2uv |NN SV *sv
Apd |UV |sv_2uv_flags |NN SV *const sv|const I32 flags
-Apd |IV |sv_iv |NN SV* sv
-Apd |UV |sv_uv |NN SV* sv
-Apd |NV |sv_nv |NN SV* sv
-Apd |char* |sv_pvn |NN SV *sv|NN STRLEN *lp
-Apd |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp
-Apd |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp
+Abpd |IV |sv_iv |NN SV* sv
+Abpd |UV |sv_uv |NN SV* sv
+Abpd |NV |sv_nv |NN SV* sv
+Abpd |char* |sv_pvn |NN SV *sv|NN STRLEN *lp
+Abpd |char* |sv_pvutf8n |NN SV *sv|NN STRLEN *lp
+Abpd |char* |sv_pvbyten |NN SV *sv|NN STRLEN *lp
Apd |I32 |sv_true |NULLOK SV *const sv
#if defined(PERL_IN_SV_C)
sd |void |sv_add_arena |NN char *const ptr|const U32 size \
@@ -1578,7 +1578,7 @@ Aopd |I32 |sv_cmp_locale |NULLOK SV *const sv1|NULLOK SV *const sv2
Apd |I32 |sv_cmp_locale_flags |NULLOK SV *const sv1 \
|NULLOK SV *const sv2|const U32 flags
#if defined(USE_LOCALE_COLLATE)
-Amd |char* |sv_collxfrm |NN SV *const sv|NN STRLEN *const nxp
+Apbmd |char* |sv_collxfrm |NN SV *const sv|NN STRLEN *const nxp
Apd |char* |sv_collxfrm_flags |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
#endif
Apd |int |getcwd_sv |NN SV* sv
@@ -1595,7 +1595,7 @@ ApdR |bool |sv_does_sv |NN SV* sv|NN SV* namesv|U32 flags
ApdR |bool |sv_does_pv |NN SV* sv|NN const char *const name|U32 flags
ApdR |bool |sv_does_pvn |NN SV* sv|NN const char *const name|const STRLEN len \
|U32 flags
-Amd |I32 |sv_eq |NULLOK SV* sv1|NULLOK SV* sv2
+Apbmd |I32 |sv_eq |NULLOK SV* sv1|NULLOK SV* sv2
Apd |I32 |sv_eq_flags |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
Apd |void |sv_free |NULLOK SV *const sv
poMX |void |sv_free2 |NN SV *const sv|const U32 refcnt
@@ -1826,7 +1826,7 @@ pn |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
#if defined(UNLINK_ALL_VERSIONS)
Ap |I32 |unlnk |NN const char* f
#endif
-Apd |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \
+Abpd |SSize_t|unpack_str |NN const char *pat|NN const char *patend|NN const char *s \
|NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \
|I32 ocnt|U32 flags
Apd |SSize_t|unpackstring |NN const char *pat|NN const char *patend|NN const char *s \
@@ -1856,9 +1856,9 @@ AMnp |U8* |bytes_from_utf8_loc|NN const U8 *s \
|NN bool *is_utf8p \
|NULLOK const U8 ** first_unconverted
ApMd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *lenp
-ApdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
-ApdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
-ApMD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
+AbpdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen
+AbpdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
+AbpMD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen
Aopd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
ApdD |UV |utf8_to_uvuni_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
pM |bool |check_utf8_print |NN const U8 *s|const STRLEN len
@@ -2095,8 +2095,8 @@ Ap |void |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
#endif
Amop |const XOP * |custom_op_xop |NN const OP *o
-ApR |const char * |custom_op_name |NN const OP *o
-ApR |const char * |custom_op_desc |NN const OP *o
+AbpR |const char * |custom_op_name |NN const OP *o
+AbpR |const char * |custom_op_desc |NN const OP *o
pRX |XOPRETANY |custom_op_get_field |NN const OP *o|const xop_flags_enum field
Aop |void |custom_op_register |NN Perl_ppaddr_t ppaddr \
|NN const XOP *xop
diff --git a/embed.h b/embed.h
index a44df43..b13344e 100644
--- a/embed.h
+++ b/embed.h
@@ -98,8 +98,12 @@
#define croak_no_modify Perl_croak_no_modify
#define croak_sv(a) Perl_croak_sv(aTHX_ a)
#define croak_xs_usage Perl_croak_xs_usage
+#ifndef NO_MATHOMS
#define custom_op_desc(a) Perl_custom_op_desc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define custom_op_name(a) Perl_custom_op_name(aTHX_ a)
+#endif
#define cv_clone(a) Perl_cv_clone(aTHX_ a)
#define cv_const_sv Perl_cv_const_sv
#define cv_get_call_checker(a,b,c) Perl_cv_get_call_checker(aTHX_ a,b,c)
@@ -123,7 +127,9 @@
#define die Perl_die
#endif
#define die_sv(a) Perl_die_sv(aTHX_ a)
+#ifndef NO_MATHOMS
#define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c)
+#endif
#define do_close(a,b) Perl_do_close(aTHX_ a,b)
#define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d)
#define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d)
@@ -131,7 +137,9 @@
#define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d)
#define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g)
#define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define do_open9(a,b,c,d,e,f,g,h,i) Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i)
+#endif
#define do_openn(a,b,c,d,e,f,g,h,i) Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i)
#define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c)
#define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c)
@@ -193,7 +201,9 @@
#define gv_check(a) Perl_gv_check(aTHX_ a)
#define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a)
#define gv_dump(a) Perl_gv_dump(aTHX_ a)
+#ifndef NO_MATHOMS
#define gv_efullname(a,b) Perl_gv_efullname(aTHX_ a,b)
+#endif
#define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d)
#define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a)
#define gv_fetchfile_flags(a,b,c) Perl_gv_fetchfile_flags(aTHX_ a,b,c)
@@ -210,7 +220,9 @@
#define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c)
#define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d)
#define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define gv_fullname(a,b) Perl_gv_fullname(aTHX_ a,b)
+#endif
#define gv_fullname4(a,b,c,d) Perl_gv_fullname4(aTHX_ a,b,c,d)
#define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b)
#define gv_init_pv(a,b,c,d) Perl_gv_init_pv(aTHX_ a,b,c,d)
@@ -239,75 +251,187 @@
#define hv_rand_set(a,b) Perl_hv_rand_set(aTHX_ a,b)
#define hv_scalar(a) Perl_hv_scalar(aTHX_ a)
#define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a)
+#ifndef NO_MATHOMS
#define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a)
+#endif
#define init_stacks() Perl_init_stacks(aTHX)
#define init_tm(a) Perl_init_tm(aTHX_ a)
#define intro_my() Perl_intro_my(aTHX)
+#ifndef NO_MATHOMS
#define isALNUM_lazy(a) Perl_isALNUM_lazy(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define isIDFIRST_lazy(a) Perl_isIDFIRST_lazy(aTHX_ a)
+#endif
#define is_c9strict_utf8_string_loclen S_is_c9strict_utf8_string_loclen
#define is_lvalue_sub() Perl_is_lvalue_sub(aTHX)
#define is_safe_syscall(a,b,c,d) S_is_safe_syscall(aTHX_ a,b,c,d)
#define is_strict_utf8_string_loclen S_is_strict_utf8_string_loclen
+#ifndef NO_MATHOMS
#define is_uni_alnum(a) Perl_is_uni_alnum(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_alnumc(a) Perl_is_uni_alnumc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_alnumc_lc(a) Perl_is_uni_alnumc_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_alpha(a) Perl_is_uni_alpha(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_alpha_lc(a) Perl_is_uni_alpha_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_ascii(a) Perl_is_uni_ascii(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_ascii_lc(a) Perl_is_uni_ascii_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_blank(a) Perl_is_uni_blank(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_blank_lc(a) Perl_is_uni_blank_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_cntrl(a) Perl_is_uni_cntrl(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_cntrl_lc(a) Perl_is_uni_cntrl_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_digit(a) Perl_is_uni_digit(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_digit_lc(a) Perl_is_uni_digit_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_graph(a) Perl_is_uni_graph(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_graph_lc(a) Perl_is_uni_graph_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_idfirst(a) Perl_is_uni_idfirst(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_idfirst_lc(a) Perl_is_uni_idfirst_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_lower(a) Perl_is_uni_lower(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_lower_lc(a) Perl_is_uni_lower_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_print(a) Perl_is_uni_print(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_print_lc(a) Perl_is_uni_print_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_punct(a) Perl_is_uni_punct(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_punct_lc(a) Perl_is_uni_punct_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_space(a) Perl_is_uni_space(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_space_lc(a) Perl_is_uni_space_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_upper(a) Perl_is_uni_upper(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_upper_lc(a) Perl_is_uni_upper_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_xdigit(a) Perl_is_uni_xdigit(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_uni_xdigit_lc(a) Perl_is_uni_xdigit_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_alnum(a) Perl_is_utf8_alnum(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_alnumc(a) Perl_is_utf8_alnumc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_alpha(a) Perl_is_utf8_alpha(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_ascii(a) Perl_is_utf8_ascii(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_blank(a) Perl_is_utf8_blank(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_char Perl_is_utf8_char
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_cntrl(a) Perl_is_utf8_cntrl(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_digit(a) Perl_is_utf8_digit(aTHX_ a)
+#endif
#define is_utf8_fixed_width_buf_loclen_flags S_is_utf8_fixed_width_buf_loclen_flags
+#ifndef NO_MATHOMS
#define is_utf8_graph(a) Perl_is_utf8_graph(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_idcont(a) Perl_is_utf8_idcont(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a)
+#endif
#define is_utf8_invariant_string_loc S_is_utf8_invariant_string_loc
+#ifndef NO_MATHOMS
#define is_utf8_lower(a) Perl_is_utf8_lower(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_perl_space(a) Perl_is_utf8_perl_space(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_perl_word(a) Perl_is_utf8_perl_word(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_posix_digit(a) Perl_is_utf8_posix_digit(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_print(a) Perl_is_utf8_print(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_punct(a) Perl_is_utf8_punct(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a)
+#endif
#define is_utf8_string_flags S_is_utf8_string_flags
#define is_utf8_string_loclen Perl_is_utf8_string_loclen
#define is_utf8_string_loclen_flags S_is_utf8_string_loclen_flags
+#ifndef NO_MATHOMS
#define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a)
+#endif
#define is_utf8_valid_partial_char_flags S_is_utf8_valid_partial_char_flags
+#ifndef NO_MATHOMS
#define is_utf8_xdigit(a) Perl_is_utf8_xdigit(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_xidcont(a) Perl_is_utf8_xidcont(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define is_utf8_xidfirst(a) Perl_is_utf8_xidfirst(aTHX_ a)
+#endif
#define isinfnan Perl_isinfnan
#define leave_adjust_stacks(a,b,c,d) Perl_leave_adjust_stacks(aTHX_ a,b,c,d)
#define leave_scope(a) Perl_leave_scope(aTHX_ a)
@@ -442,7 +566,9 @@
#define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX)
#define op_scope(a) Perl_op_scope(aTHX_ a)
#define op_sibling_splice Perl_op_sibling_splice
+#ifndef NO_MATHOMS
#define pack_cat(a,b,c,d,e,f,g) Perl_pack_cat(aTHX_ a,b,c,d,e,f,g)
+#endif
#define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e)
#define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b)
#define pad_add_name_pv(a,b,c,d) Perl_pad_add_name_pv(aTHX_ a,b,c,d)
@@ -541,9 +667,15 @@
#define save_int(a) Perl_save_int(aTHX_ a)
#define save_item(a) Perl_save_item(aTHX_ a)
#define save_iv(a) Perl_save_iv(aTHX_ a)
+#ifndef NO_MATHOMS
#define save_list(a,b) Perl_save_list(aTHX_ a,b)
+#endif
+#ifndef NO_MATHOMS
#define save_long(a) Perl_save_long(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define save_nogv(a) Perl_save_nogv(aTHX_ a)
+#endif
#define save_padsv_and_mortalize(a) Perl_save_padsv_and_mortalize(aTHX_ a)
#define save_pptr(a) Perl_save_pptr(aTHX_ a)
#define save_pushi32ptr(a,b,c) Perl_save_pushi32ptr(aTHX_ a,b,c)
@@ -629,7 +761,9 @@
#define sv_insert_flags(a,b,c,d,e,f) Perl_sv_insert_flags(aTHX_ a,b,c,d,e,f)
#define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b)
#define sv_isobject(a) Perl_sv_isobject(aTHX_ a)
+#ifndef NO_MATHOMS
#define sv_iv(a) Perl_sv_iv(aTHX_ a)
+#endif
#define sv_len(a) Perl_sv_len(aTHX_ a)
#define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a)
#define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e)
@@ -640,18 +774,28 @@
#ifndef NO_MATHOMS
#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a)
#endif
+#ifndef NO_MATHOMS
#define sv_nv(a) Perl_sv_nv(aTHX_ a)
+#endif
#define sv_peek(a) Perl_sv_peek(aTHX_ a)
#define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b)
#define sv_pos_b2u_flags(a,b,c) Perl_sv_pos_b2u_flags(aTHX_ a,b,c)
#define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c)
#define sv_pos_u2b_flags(a,b,c,d) Perl_sv_pos_u2b_flags(aTHX_ a,b,c,d)
+#ifndef NO_MATHOMS
#define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b)
+#endif
#define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b)
+#ifndef NO_MATHOMS
#define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b)
+#endif
#define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define sv_pvn_nomg(a,b) Perl_sv_pvn_nomg(aTHX_ a,b)
+#endif
+#ifndef NO_MATHOMS
#define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b)
+#endif
#define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b)
#define sv_recode_to_utf8(a,b) Perl_sv_recode_to_utf8(aTHX_ a,b)
#define sv_ref(a,b,c) Perl_sv_ref(aTHX_ a,b,c)
@@ -704,7 +848,9 @@
#define sv_utf8_downgrade(a,b) Perl_sv_utf8_downgrade(aTHX_ a,b)
#define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a)
#define sv_utf8_upgrade_flags_grow(a,b,c) Perl_sv_utf8_upgrade_flags_grow(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define sv_uv(a) Perl_sv_uv(aTHX_ a)
+#endif
#define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c)
#define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c)
#define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g)
@@ -719,12 +865,20 @@
#define thread_locale_init Perl_thread_locale_init
#define thread_locale_term Perl_thread_locale_term
#define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define to_uni_lower_lc(a) Perl_to_uni_lower_lc(aTHX_ a)
+#endif
#define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define to_uni_title_lc(a) Perl_to_uni_title_lc(aTHX_ a)
+#endif
#define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c)
+#ifndef NO_MATHOMS
#define to_uni_upper_lc(a) Perl_to_uni_upper_lc(aTHX_ a)
+#endif
+#ifndef NO_MATHOMS
#define unpack_str(a,b,c,d,e,f,g,h) Perl_unpack_str(aTHX_ a,b,c,d,e,f,g,h)
+#endif
#define unpackstring(a,b,c,d,e) Perl_unpackstring(aTHX_ a,b,c,d,e)
#define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c)
#define upg_version(a,b) Perl_upg_version(aTHX_ a,b)
@@ -735,8 +889,12 @@
#define utf8_hop_safe Perl_utf8_hop_safe
#define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b)
#define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b)
+#ifndef NO_MATHOMS
#define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b)
+#endif
+#ifndef NO_MATHOMS
#define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b)
+#endif
#define utf8_to_uvuni_buf(a,b,c) Perl_utf8_to_uvuni_buf(aTHX_ a,b,c)
#define utf8n_to_uvchr_msgs(a,b,c,d,e,f) Perl_utf8n_to_uvchr_msgs(aTHX_ a,b,c,d,e,f)
#define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d)
@@ -744,7 +902,9 @@
#define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b)
#define uvuni_to_utf8_flags(a,b,c) Perl_uvuni_to_utf8_flags(aTHX_ a,b,c)
#define valid_utf8_to_uvchr Perl_valid_utf8_to_uvchr
+#ifndef NO_MATHOMS
#define valid_utf8_to_uvuni(a,b) Perl_valid_utf8_to_uvuni(aTHX_ a,b)
+#endif
#define vcmp(a,b) Perl_vcmp(aTHX_ a,b)
#define vcroak(a,b) Perl_vcroak(aTHX_ a,b)
#define vdeb(a,b) Perl_vdeb(aTHX_ a,b)
@@ -834,11 +994,15 @@
#define deb_nocontext Perl_deb_nocontext
#define die_nocontext Perl_die_nocontext
#define form_nocontext Perl_form_nocontext
+#ifndef NO_MATHOMS
#define fprintf_nocontext Perl_fprintf_nocontext
+#endif
#define load_module_nocontext Perl_load_module_nocontext
#define mess_nocontext Perl_mess_nocontext
#define newSVpvf_nocontext Perl_newSVpvf_nocontext
+#ifndef NO_MATHOMS
#define printf_nocontext Perl_printf_nocontext
+#endif
#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext
#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
diff --git a/makedef.pl b/makedef.pl
index f2beb94..daf6b40 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -731,12 +731,12 @@ unless ($define{'USE_QUADMATH'}) {
{
my %seen;
my ($embed) = setup_embed($ARGS{TARG_DIR});
+ my $excludedre = $define{'NO_MATHOMS'} ? qr/[xmib]/ : qr/[xmi]/;
foreach (@$embed) {
my ($flags, $retval, $func, @args) = @$_;
next unless $func;
- if ( ($flags =~ /[AX]/ && $flags !~ /[xmi]/)
- || ($flags =~ /b/ && ! $define{'NO_MATHOMS'}))
+ if ($flags =~ /[AX]/ && $flags !~ $excludedre)
{
# public API, so export
diff --git a/mathoms.c b/mathoms.c
index 295d8c4..ab8fffd 100644
--- a/mathoms.c
+++ b/mathoms.c
@@ -1081,6 +1081,7 @@ Perl_sv_eq(pTHX_ SV *sv1, SV *sv2)
char *
Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp)
{
+ PERL_ARGS_ASSERT_SV_COLLXFRM;
return sv_collxfrm_flags(sv, nxp, SV_GMAGIC);
}
@@ -1100,6 +1101,7 @@ Perl_mem_collxfrm(pTHX_ const char *input_string, STRLEN len, STRLEN *xlen)
bool
Perl_sv_2bool(pTHX_ SV *const sv)
{
+ PERL_ARGS_ASSERT_SV_2BOOL;
return sv_2bool_flags(sv, SV_GMAGIC);
}
diff --git a/proto.h b/proto.h
index 8ec63d7..4f76e60 100644
--- a/proto.h
+++ b/proto.h
@@ -639,20 +639,24 @@ PERL_CALLCONV_NO_RET void Perl_croak_xs_usage(const CV *const cv, const char *co
assert(cv); assert(params)
PERL_CALLCONV regexp_engine const * Perl_current_re_engine(pTHX);
+#ifndef NO_MATHOMS
PERL_CALLCONV const char * Perl_custom_op_desc(pTHX_ const OP *o)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_DESC \
assert(o)
+#endif
PERL_CALLCONV XOPRETANY Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD \
assert(o)
+#ifndef NO_MATHOMS
PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o)
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CUSTOM_OP_NAME \
assert(o)
+#endif
PERL_CALLCONV void Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \
@@ -757,9 +761,11 @@ 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);
#define PERL_ARGS_ASSERT_DO_AEXEC5 \
assert(mark); assert(sp)
+#ifndef NO_MATHOMS
PERL_CALLCONV int Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode);
#define PERL_ARGS_ASSERT_DO_BINMODE \
assert(fp)
+#endif
PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit);
PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full);
#define PERL_ARGS_ASSERT_DO_DUMP_PAD \
@@ -798,9 +804,11 @@ PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_
PERL_CALLCONV bool Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num);
#define PERL_ARGS_ASSERT_DO_OPEN6 \
assert(gv); assert(oname)
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num);
#define PERL_ARGS_ASSERT_DO_OPEN9 \
assert(gv); assert(name); assert(svs)
+#endif
PERL_CALLCONV bool Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp);
#define PERL_ARGS_ASSERT_DO_OPEN_RAW \
assert(gv); assert(oname)
@@ -1080,9 +1088,11 @@ PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv)
assert(gv)
PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv);
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv);
#define PERL_ARGS_ASSERT_GV_EFULLNAME \
assert(sv); assert(gv)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
#define PERL_ARGS_ASSERT_GV_EFULLNAME3 \
@@ -1143,9 +1153,11 @@ PERL_CALLCONV GV* Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32
PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type);
#define PERL_ARGS_ASSERT_GV_FETCHSV \
assert(name)
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_gv_fullname(pTHX_ SV* sv, const GV* gv);
#define PERL_ARGS_ASSERT_GV_FULLNAME \
assert(sv); assert(gv)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
#define PERL_ARGS_ASSERT_GV_FULLNAME3 \
@@ -1369,7 +1381,9 @@ PERL_CALLCONV void Perl_init_constants(pTHX);
PERL_CALLCONV void Perl_init_dbargs(pTHX);
PERL_CALLCONV void Perl_init_debugger(pTHX);
PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn);
+#ifndef NO_MATHOMS
PERL_CALLCONV int Perl_init_i18nl14n(pTHX_ int printwarn);
+#endif
PERL_CALLCONV void Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
#define PERL_ARGS_ASSERT_INIT_NAMED_CV \
assert(cv); assert(nameop)
@@ -1392,17 +1406,21 @@ PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd)
PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, GV *gv, bool not_implicit, bool warn_on_fail);
#define PERL_ARGS_ASSERT_IO_CLOSE \
assert(io)
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_isALNUM_lazy(pTHX_ const char* p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISALNUM_LAZY \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_isIDFIRST_lazy(pTHX_ const char* p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_ISIDFIRST_LAZY \
assert(p)
+#endif
/* PERL_CALLCONV bool Perl_is_ascii_string(const U8* const s, STRLEN len)
__attribute__warn_unused_result__
@@ -1440,187 +1458,263 @@ PERL_STATIC_INLINE bool S_is_strict_utf8_string_loclen(const U8 *s, STRLEN len,
#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN \
assert(s)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alnumc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alnumc_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_ascii(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_ascii_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_blank(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_blank_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_cntrl(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_digit(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ UV c)
__attribute__deprecated__
__attribute__warn_unused_result__
__attribute__pure__;
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_ALNUM \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_alnumc(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_ALNUMC \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_alpha(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_ALPHA \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_ascii(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_ASCII \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_blank(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_BLANK \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s)
__attribute__deprecated__;
#define PERL_ARGS_ASSERT_IS_UTF8_CHAR \
assert(s)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV STRLEN Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF \
assert(buf); assert(buf_end)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_CNTRL \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_DIGIT \
assert(p)
+#endif
/* PERL_CALLCONV bool is_utf8_fixed_width_buf_flags(const U8 * const s, STRLEN len, const U32 flags); */
/* PERL_CALLCONV bool is_utf8_fixed_width_buf_loc_flags(const U8 * const s, STRLEN len, const U8 **ep, const U32 flags); */
@@ -1629,23 +1723,29 @@ PERL_STATIC_INLINE bool S_is_utf8_fixed_width_buf_loclen_flags(const U8 * const
#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS \
assert(s)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_GRAPH \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_idcont(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_IDCONT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_IDFIRST \
assert(p)
+#endif
/* PERL_CALLCONV bool is_utf8_invariant_string(const U8* const s, STRLEN len)
__attribute__warn_unused_result__; */
@@ -1657,53 +1757,69 @@ PERL_STATIC_INLINE bool S_is_utf8_invariant_string_loc(const U8* const s, STRLEN
assert(s)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_lower(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_LOWER \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_MARK \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_perl_space(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_PERL_SPACE \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_perl_word(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_PERL_WORD \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_posix_digit(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_POSIX_DIGIT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_print(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_PRINT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_punct(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_PUNCT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_SPACE \
assert(p)
+#endif
/* PERL_CALLCONV bool Perl_is_utf8_string(const U8 *s, STRLEN len)
__attribute__warn_unused_result__; */
@@ -1731,11 +1847,13 @@ PERL_STATIC_INLINE bool S_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, c
#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS \
assert(s)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_upper(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_UPPER \
assert(p)
+#endif
/* PERL_CALLCONV bool is_utf8_valid_partial_char(const U8 * const s, const U8 * const e)
__attribute__warn_unused_result__
@@ -1748,23 +1866,29 @@ PERL_STATIC_INLINE bool S_is_utf8_valid_partial_char_flags(const U8 * const s, c
assert(s); assert(e)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_xdigit(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_XDIGIT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_xidcont(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_XIDCONT \
assert(p)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV bool Perl_is_utf8_xidfirst(pTHX_ const U8 *p)
__attribute__deprecated__
__attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST \
assert(p)
+#endif
PERL_CALLCONV bool Perl_isinfnan(NV nv)
__attribute__warn_unused_result__
@@ -2465,9 +2589,11 @@ PERL_CALLCONV OP* Perl_op_unscope(pTHX_ OP* o);
PERL_CALLCONV void Perl_optimize_optree(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE \
assert(o)
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags);
#define PERL_ARGS_ASSERT_PACK_CAT \
assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist); assert(next_in_list)
+#endif
PERL_CALLCONV void Perl_package(pTHX_ OP* o);
#define PERL_ARGS_ASSERT_PACKAGE \
assert(o)
@@ -2844,20 +2970,26 @@ PERL_CALLCONV void Perl_save_item(pTHX_ SV* item);
PERL_CALLCONV void Perl_save_iv(pTHX_ IV *ivp);
#define PERL_ARGS_ASSERT_SAVE_IV \
assert(ivp)
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_save_list(pTHX_ SV** sarg, I32 maxsarg);
#define PERL_ARGS_ASSERT_SAVE_LIST \
assert(sarg)
+#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_save_long(pTHX_ long* longp);
#define PERL_ARGS_ASSERT_SAVE_LONG \
assert(longp)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SAVE_MORTALIZESV \
assert(sv)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv);
#define PERL_ARGS_ASSERT_SAVE_NOGV \
assert(gv)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_save_op(pTHX);
#endif
@@ -2983,7 +3115,11 @@ PERL_CALLCONV NV Perl_str_to_version(pTHX_ SV *sv)
PERL_CALLCONV void Perl_sub_crush_depth(pTHX_ CV* cv);
#define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH \
assert(cv)
-/* PERL_CALLCONV bool sv_2bool(pTHX_ SV *const sv); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv);
+#define PERL_ARGS_ASSERT_SV_2BOOL \
+ assert(sv)
+#endif
PERL_CALLCONV bool Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags);
#define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS \
assert(sv)
@@ -3173,7 +3309,9 @@ PERL_CALLCONV bool Perl_sv_does_sv(pTHX_ SV* sv, SV* namesv, U32 flags)
assert(sv); assert(namesv)
PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv);
-/* PERL_CALLCONV I32 sv_eq(pTHX_ SV* sv1, SV* sv2); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
+#endif
PERL_CALLCONV I32 Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv);
@@ -3211,9 +3349,11 @@ PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name);
#define PERL_ARGS_ASSERT_SV_ISA \
assert(name)
PERL_CALLCONV int Perl_sv_isobject(pTHX_ SV* sv);
+#ifndef NO_MATHOMS
PERL_CALLCONV IV Perl_sv_iv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_IV \
assert(sv)
+#endif
PERL_CALLCONV STRLEN Perl_sv_len(pTHX_ SV *const sv);
PERL_CALLCONV STRLEN Perl_sv_len_utf8(pTHX_ SV *const sv);
PERL_CALLCONV STRLEN Perl_sv_len_utf8_nomg(pTHX_ SV *const sv);
@@ -3247,9 +3387,11 @@ PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv);
#ifndef NO_MATHOMS
PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv);
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_NV \
assert(sv)
+#endif
#ifndef PERL_NO_INLINE_FUNCTIONS
PERL_STATIC_INLINE bool S_sv_only_taint_gmagic(SV *sv);
#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \
@@ -3282,15 +3424,19 @@ PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv)
assert(sv)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp);
#define PERL_ARGS_ASSERT_SV_PVBYTEN \
assert(sv); assert(lp)
+#endif
PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \
assert(sv)
+#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp);
#define PERL_ARGS_ASSERT_SV_PVN \
assert(sv); assert(lp)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
#define PERL_ARGS_ASSERT_SV_PVN_FORCE \
@@ -3299,9 +3445,11 @@ PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags);
#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \
assert(sv)
+#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp);
#define PERL_ARGS_ASSERT_SV_PVN_NOMG \
assert(sv)
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv)
__attribute__warn_unused_result__;
@@ -3309,9 +3457,11 @@ PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv)
assert(sv)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp);
#define PERL_ARGS_ASSERT_SV_PVUTF8N \
assert(sv); assert(lp)
+#endif
PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp);
#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \
assert(sv)
@@ -3494,9 +3644,11 @@ PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I
#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \
assert(sv)
/* PERL_CALLCONV STRLEN sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
+#ifndef NO_MATHOMS
PERL_CALLCONV UV Perl_sv_uv(pTHX_ SV* sv);
#define PERL_ARGS_ASSERT_SV_UV \
assert(sv)
+#endif
PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
#define PERL_ARGS_ASSERT_SV_VCATPVF \
assert(sv); assert(pat)
@@ -3549,23 +3701,29 @@ PERL_CALLCONV SSize_t Perl_tmps_grow_p(pTHX_ SSize_t ix);
PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_LOWER \
assert(p); assert(lenp)
+#ifndef NO_MATHOMS
PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_TITLE \
assert(p); assert(lenp)
+#ifndef NO_MATHOMS
PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
#define PERL_ARGS_ASSERT_TO_UNI_UPPER \
assert(p); assert(lenp)
+#ifndef NO_MATHOMS
PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c)
__attribute__deprecated__
__attribute__warn_unused_result__;
+#endif
#ifndef NO_MATHOMS
PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
@@ -3597,9 +3755,11 @@ PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp)
PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags);
PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags);
+#ifndef NO_MATHOMS
PERL_CALLCONV SSize_t Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags);
#define PERL_ARGS_ASSERT_UNPACK_STR \
assert(pat); assert(patend); assert(s); assert(strend)
+#endif
PERL_CALLCONV SSize_t Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
#define PERL_ARGS_ASSERT_UNPACKSTRING \
assert(pat); assert(patend); assert(s); assert(strend)
@@ -3657,18 +3817,22 @@ PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e)
PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *lenp);
#define PERL_ARGS_ASSERT_UTF8_TO_BYTES \
assert(s); assert(lenp)
+#ifndef NO_MATHOMS
PERL_CALLCONV UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR \
assert(s)
+#endif
PERL_CALLCONV UV Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF \
assert(s); assert(send)
+#ifndef NO_MATHOMS
PERL_CALLCONV UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
__attribute__deprecated__;
#define PERL_ARGS_ASSERT_UTF8_TO_UVUNI \
assert(s)
+#endif
PERL_CALLCONV UV Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
__attribute__deprecated__;
@@ -3712,10 +3876,12 @@ PERL_STATIC_INLINE UV Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
assert(s)
#endif
+#ifndef NO_MATHOMS
PERL_CALLCONV UV Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
__attribute__deprecated__;
#define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI \
assert(s)
+#endif
PERL_CALLCONV bool Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
#define PERL_ARGS_ASSERT_VALIDATE_PROTO \
@@ -4480,10 +4646,12 @@ PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...)
#define PERL_ARGS_ASSERT_FORM_NOCONTEXT \
assert(pat)
+#ifndef NO_MATHOMS
PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
__attribute__format__(__printf__,2,3);
#define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT \
assert(stream); assert(format)
+#endif
PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...);
#define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \
@@ -4498,10 +4666,12 @@ PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...)
#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \
assert(pat)
+#ifndef NO_MATHOMS
PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...)
__attribute__format__(__printf__,1,2);
#define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT \
assert(format)
+#endif
PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
__attribute__format__(__printf__,2,3);
@@ -6236,7 +6406,11 @@ PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len
#define PERL_ARGS_ASSERT_MEM_COLLXFRM \
assert(input_string); assert(xlen)
#endif
-/* PERL_CALLCONV char* sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp); */
+#ifndef NO_MATHOMS
+PERL_CALLCONV char* Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp);
+#define PERL_ARGS_ASSERT_SV_COLLXFRM \
+ assert(sv); assert(nxp)
+#endif
PERL_CALLCONV char* Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags);
#define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS \
assert(sv); assert(nxp)
--
2.5.0.windows.1
|
From @khwilliamsonOn 04/11/2018 12:31 AM, bulk88 (via RT) wrote:
My default mode of compiling is -DNO_MATHOMS, so that I would find any AIX has long had warnings like this: which I never thought was high enough priority to investigate. But this I tried your patch on Linux, and surprisingly to me, it generated test # Failed test 1 in t/pv_tools.t at line 54 which I haven't investigated. |
The RT System itself - Status changed from 'new' to 'open' |
From @bulk88On Wed, 11 Apr 2018 21:02:03 -0700, public@khwilliamson.com wrote:
I also get test failures in ../dist/Devel-PPPort/t/pv_tools.t C:\perl521\srcnew\win32>cd ..\t & perl harness -v ../dist/Devel-PPPort/t/pv_to ok 3 Test Summary Report ../dist/Devel-PPPort/t/pv_tools.t (Wstat: 0 Tests: 13 Failed: 3) C:\perl521\srcnew\win32> -- |
From @bulk88First test failure, void my $uni = &Devel::PPPort::pv_escape_can_unicode(); # sanity check Since CPP macro utf8_to_uvchr is now undefined because of -DNO_MATHOMS and embed.h, while before I think the macro was defined to the Perl_utf8_to_uvchr, but nothing ever in core referenced the C symbol so it all linked together even tho the func isn't defined anywhere. So thats the first test fail. utf8_to_uvchr was moved to mathoms.c in 5.21.1 https://perl5.git.perl.org/perl.git/commitdiff/f2645549e6a4bfca055b5fd1932da462df424921 utf8_to_uvchr was supposedly added in 5.7.1. ppport uses utf8_to_uvchr as part of its pv_escape replacement https://perl5.git.perl.org/perl.git/blob/5f6af817add6d2df3603e0e94b6eb27ba5fb3970:/dist/Devel-PPPort/parts/inc/pv_tools#l74 but native pv_escape was added in 5.9.4 supposedly, so 5.21.1 and up that deprecated/removed utf8_to_uvchr() in -DNO_MATHOMS will never run into a link failure because they will always use native pv_escape and not the ppport.h fill in. The native pv_escape uses utf8_to_uvchr_buf() instead of utf8_to_uvchr() https://perl5.git.perl.org/perl.git/blob/5f6af817add6d2df3603e0e94b6eb27ba5fb3970:/dump.c#l166 since https://perl5.git.perl.org/perl.git/commitdiff/4b88fb76efce8c436e63b907c9842345d4fa77c7 in 5.15.9 If I add a ! op to dist/Devel-PPPort/t/pv_tools.t my $uni = &Devel::PPPort::pv_escape_can_unicode(); # sanity check the rest of the tests pass. So who is at fault? ppport or p5p for deprecating utf8_to_uvchr()? We cud stick an #ifndef utf8_to_uvchr to counteract #ifndef NO_MATHOMS in the perl headers somewhere, or change void -- |
From @khwilliamsonI think its best to add safety as far back as possible, so I would want to define utf8_to_uvchr_buf in ppport.h in terms of plain utf8_to_uvchr, as they differ mainly in that the _buf version has better malformation checking. But alas, I could not get ppport stuff to work. So doing that change has to be deferred. So, in the meantime, I merely moved utf8_to_uvchr() away from mathoms.c, so it will always be defined. Commit 7723e00 did that. Then the patch for this ticket works, and was pushed as |
@khwilliamson - Status changed from 'open' to 'pending release' |
From @khwilliamsonThank you for filing this report. You have helped make Perl better. With the release yesterday of Perl 5.28.0, this and 185 other issues have been Perl 5.28.0 may be downloaded via: If you find that the problem persists, feel free to reopen this ticket. |
@khwilliamson - Status changed from 'pending release' to 'resolved' |
Migrated from rt.perl.org#133098 (status was 'resolved')
Searchable as RT133098$
The text was updated successfully, but these errors were encountered: