diff options
-rw-r--r-- | Cross/Makefile-cross-SH | 11 | ||||
-rw-r--r-- | MANIFEST | 3 | ||||
-rwxr-xr-x | Makefile.SH | 11 | ||||
-rw-r--r-- | NetWare/Makefile | 2 | ||||
-rwxr-xr-x | Porting/makerel | 1 | ||||
-rw-r--r-- | Porting/pumpkin.pod | 16 | ||||
-rw-r--r-- | embed.fnc | 10 | ||||
-rw-r--r-- | global.sym | 907 | ||||
-rw-r--r-- | globvar.sym | 1 | ||||
-rw-r--r-- | makedef.pl | 28 | ||||
-rwxr-xr-x | regen/embed.pl | 21 | ||||
-rw-r--r-- | t/porting/regen.t | 2 | ||||
-rw-r--r-- | util.c | 2 | ||||
-rw-r--r-- | vms/descrip_mms.template | 3 | ||||
-rw-r--r-- | win32/Makefile | 2 | ||||
-rw-r--r-- | win32/Makefile.ce | 2 | ||||
-rw-r--r-- | win32/makefile.mk | 2 |
17 files changed, 55 insertions, 969 deletions
diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH index 0ee2cb0542..bb6752f9d4 100644 --- a/Cross/Makefile-cross-SH +++ b/Cross/Makefile-cross-SH @@ -836,15 +836,14 @@ perly.c: perly.y perly.h: perly.y -@sh -c true -SYM = global.sym globvar.sym perlio.sym +SYM = globvar.sym perlio.sym SYMH = perlvars.h intrpvar.h CHMOD_W = chmod +w # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h global.sym -# perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm @@ -855,10 +854,8 @@ CHMOD_W = chmod +w # with your existing copy of perl # (make regen_headers is kept for backwards compatibility) -AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h \ - embed.h embedvar.h global.sym \ - perlapi.h perlapi.c regnodes.h \ - warnings.h lib/warnings.pm +AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h embed.h embedvar.h \ + perlapi.h perlapi.c regnodes.h warnings.h lib/warnings.pm .PHONY: regen_headers regen_all @@ -3807,7 +3807,6 @@ form.h Public declarations for formats generate_uudmap.c Generate uudmap.h, the uuencode decoding map genpacksizetables.pl Generate the size tables for pack/unpack globals.c File to declare global symbols (for shared library) -global.sym Symbols that need hiding when embedded globvar.sym Global variables that need hiding when embedded gv.c Glob value code gv.h Glob value header @@ -4635,7 +4634,7 @@ regcomp.c Regular expression compiler regcomp.h Private declarations for above regcomp.sym Data for regnodes.h regen/embed_lib.pl Reads embed.fnc and regen/opcodes -regen/embed.pl Produces {embed,embedvar,proto}.h, global.sym +regen/embed.pl Produces {embed,embedvar,proto}.h regen/keywords.pl Program to write keywords.h regen/mg_vtable.pl generate mg_vtable.h regen/mk_PL_charclass.pl Populate the PL_charclass table diff --git a/Makefile.SH b/Makefile.SH index f16bd19053..3119f617b2 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -1120,15 +1120,14 @@ perly.c: perly.y perly.h: perly.y -@sh -c true -SYM = global.sym globvar.sym perlio.sym +SYM = globvar.sym perlio.sym SYMH = perlvars.h intrpvar.h CHMOD_W = chmod +w # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h global.sym -# perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm @@ -1139,10 +1138,8 @@ CHMOD_W = chmod +w # with your existing copy of perl # (make regen_headers is kept for backwards compatibility) -AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h \ - embed.h embedvar.h global.sym \ - perlapi.h perlapi.c regnodes.h \ - warnings.h lib/warnings.pm +AUTOGEN_FILES = opcode.h opnames.h pp_proto.h proto.h embed.h embedvar.h \ + perlapi.h perlapi.c regnodes.h warnings.h lib/warnings.pm .PHONY: regen_headers regen_all diff --git a/NetWare/Makefile b/NetWare/Makefile index 43ed97868d..90747871ad 100644 --- a/NetWare/Makefile +++ b/NetWare/Makefile @@ -1061,7 +1061,7 @@ $(PERLIMPLIB): perllib.imp # $(XCOPY) $(PERLIMPLIB) $(COREDIR) # @echo $(PERLIMPLIB) Done -perllib.imp : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl +perllib.imp : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl # $(MINIPERL) -w ..\makedef.pl PLATFORM=netware FILETYPE=def $(ADD_BUILDOPT) \ # CCTYPE=$(CCTYPE) TARG_DIR=..\ > perllib.def @echo (Perl) > perl.imp diff --git a/Porting/makerel b/Porting/makerel index 13bcf4a44e..0f94b8878c 100755 --- a/Porting/makerel +++ b/Porting/makerel @@ -139,7 +139,6 @@ my @writables = qw( proto.h embed.h embedvar.h - global.sym overload.c overload.h mg_vtable.h diff --git a/Porting/pumpkin.pod b/Porting/pumpkin.pod index 69fce6b88b..269311a29c 100644 --- a/Porting/pumpkin.pod +++ b/Porting/pumpkin.pod @@ -450,14 +450,14 @@ and effort by manually running C<make regen_headers> myself rather than answering all the questions and complaints about the failing command. -=head2 global.sym, and perlio.sym +=head2 globvar.sym, and perlio.sym Make sure these files are up-to-date. Read the comments in these files and in F<perl_exp.SH> to see what to do. =head2 Binary compatibility -If you do change F<global.sym> think carefully about +If you do change F<embed.fnc> think carefully about what you are doing. To the extent reasonable, we'd like to maintain source and binary compatibility with older releases of perl. That way, extensions built under one version of perl will continue to work with @@ -814,8 +814,8 @@ conflicting needs of dynamic loading and namespace protection. For dynamic loading to work on AIX (and VMS) we need to provide a list of symbols to be exported. This is done by the script F<perl_exp.SH>, -which reads F<global.sym>. Thus, the C<pause> -symbol would have to be added to F<global.sym> So far, so good. +which reads F<embed.fnc>. Thus, the C<pause> +symbol would have to be added to F<embed.fnc> So far, so good. On the other hand, one of the goals of Perl5 is to make it easy to either extend or embed perl and link it with other libraries. This @@ -823,9 +823,9 @@ means we have to be careful to keep the visible namespace "clean". That is, we don't want perl's global variables to conflict with those in the other application library. Although this work is still in progress, the way it is currently done is via the F<embed.h> file. -This file is built from the F<global.sym> file, +This file is built from the F<embed.fnc> file, since those files already list the globally visible symbols. If we -had added C<pause> to global.sym, then F<embed.h> would contain the +had added C<pause> to F<embed.fnc>, then F<embed.h> would contain the line #define pause Perl_pause @@ -872,7 +872,7 @@ My explanatory comment in patch 5.003_05 said: applies to SCO. This shows the perils of having internal functions with the same name as external library functions :-). -Now, we can safely put C<my_chsize> in F<global.sym>, export it, and +Now, we can safely put C<my_chsize> in C<embed.fnc>, export it, and hide it with F<embed.h>. To be consistent with what I did for C<pause>, I probably should have @@ -942,7 +942,7 @@ then in some file (e.g. F<util.c> or F<doio.c>) do #endif Alternatively, we could just always use C<chsize> everywhere and move -C<chsize> from F<global.sym> to the end of F<perl_exp.SH>. That would +C<chsize> from F<embed.fnc> to the end of F<perl_exp.SH>. That would probably be fine as long as our C<chsize> function agreed with all the C<chsize> function prototypes in the various systems we'll be using. As long as the prototypes in actual use don't vary that much, this is @@ -12,7 +12,7 @@ : : A Member of public API: : -: add entry to global.sym (unless x or m); +: add entry to the list of exported symbols (unless x or m); : any doc entry goes in perlapi.pod rather than perlintern.pod : makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT : @@ -23,7 +23,7 @@ : b Binary backward compatibility; function is a macro : but has also Perl_ implementation (which is exported): : -: add entry to global.sym; +: add entry to the list of exported symbols; : don't define PERL_ARGS_ASSERT_FOO : : D Function is deprecated: @@ -59,7 +59,7 @@ : m Implemented as a macro: : : suppress proto.h entry -: suppress global.sym entry +: suppress entry in the list of exported symbols : suppress embed.h entry : : n Has no implicit interpreter/thread context argument: @@ -107,11 +107,11 @@ : : X Explicitly exported: : -: add entry to global.sym, unless x or m +: add entry to the list of exported symbols, unless x or m : : x Not exported : -: suppress entry in global.sym +: suppress entry in the list of exported symbols : : (see also L<perlguts/Internal Functions> for those flags.) : diff --git a/global.sym b/global.sym deleted file mode 100644 index 0a27f2982f..0000000000 --- a/global.sym +++ /dev/null @@ -1,907 +0,0 @@ -# -*- buffer-read-only: t -*- -# -# global.sym -# -# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others -# -# You may distribute under the terms of either the GNU General Public -# License or the Artistic License, as specified in the README file. -# -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by regen/embed.pl from data in embed.fnc, -# regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h. -# Any changes made here will be lost! -# -# Edit those files and run 'make regen_headers' to effect changes. - -Perl_Gv_AMupdate -Perl_PerlIO_context_layers -Perl__to_uni_fold_flags -Perl__to_utf8_fold_flags -Perl_amagic_call -Perl_amagic_deref_call -Perl_apply_attrs_string -Perl_atfork_lock -Perl_atfork_unlock -Perl_av_arylen_p -Perl_av_clear -Perl_av_delete -Perl_av_exists -Perl_av_extend -Perl_av_fetch -Perl_av_fill -Perl_av_iter_p -Perl_av_len -Perl_av_make -Perl_av_pop -Perl_av_push -Perl_av_reify -Perl_av_shift -Perl_av_store -Perl_av_undef -Perl_av_unshift -Perl_block_gimme -Perl_blockhook_register -Perl_bytes_cmp_utf8 -Perl_bytes_from_utf8 -Perl_bytes_to_utf8 -Perl_call_argv -Perl_call_atexit -Perl_call_list -Perl_call_method -Perl_call_pv -Perl_call_sv -Perl_caller_cx -Perl_calloc -Perl_cast_i32 -Perl_cast_iv -Perl_cast_ulong -Perl_cast_uv -Perl_ck_entersub_args_list -Perl_ck_entersub_args_proto -Perl_ck_entersub_args_proto_or_list -Perl_ck_warner -Perl_ck_warner_d -Perl_ckwarn -Perl_ckwarn_d -Perl_cop_fetch_label -Perl_cop_store_label -Perl_croak -Perl_croak_no_modify -Perl_croak_sv -Perl_croak_xs_usage -Perl_custom_op_desc -Perl_custom_op_name -Perl_custom_op_register -Perl_custom_op_xop -Perl_cv_clone -Perl_cv_const_sv -Perl_cv_get_call_checker -Perl_cv_set_call_checker -Perl_cv_undef -Perl_cvgv_set -Perl_cvstash_set -Perl_cx_dump -Perl_cxinc -Perl_deb -Perl_debop -Perl_debprofdump -Perl_debstack -Perl_debstackptrs -Perl_delimcpy -Perl_despatch_signals -Perl_die -Perl_die_sv -Perl_do_aexec -Perl_do_binmode -Perl_do_close -Perl_do_gv_dump -Perl_do_gvgv_dump -Perl_do_hv_dump -Perl_do_join -Perl_do_magic_dump -Perl_do_op_dump -Perl_do_open -Perl_do_open9 -Perl_do_openn -Perl_do_pmop_dump -Perl_do_sprintf -Perl_do_sv_dump -Perl_doing_taint -Perl_doref -Perl_dounwind -Perl_dowantarray -Perl_dump_all -Perl_dump_eval -Perl_dump_form -Perl_dump_indent -Perl_dump_packsubs -Perl_dump_sub -Perl_dump_vindent -Perl_emulate_cop_io -Perl_eval_pv -Perl_eval_sv -Perl_fbm_compile -Perl_fbm_instr -Perl_filter_add -Perl_filter_del -Perl_filter_read -Perl_find_runcv -Perl_find_rundefsv -Perl_find_rundefsvoffset -Perl_foldEQ -Perl_foldEQ_latin1 -Perl_foldEQ_locale -Perl_foldEQ_utf8_flags -Perl_form -Perl_free_tmps -Perl_get_av -Perl_get_context -Perl_get_cv -Perl_get_cvn_flags -Perl_get_hv -Perl_get_op_descs -Perl_get_op_names -Perl_get_ppaddr -Perl_get_re_arg -Perl_get_sv -Perl_get_vtbl -Perl_getcwd_sv -Perl_gp_free -Perl_gp_ref -Perl_grok_bin -Perl_grok_hex -Perl_grok_number -Perl_grok_numeric_radix -Perl_grok_oct -Perl_gv_AVadd -Perl_gv_HVadd -Perl_gv_IOadd -Perl_gv_add_by_type -Perl_gv_autoload4 -Perl_gv_check -Perl_gv_const_sv -Perl_gv_dump -Perl_gv_efullname -Perl_gv_efullname3 -Perl_gv_efullname4 -Perl_gv_fetchfile -Perl_gv_fetchfile_flags -Perl_gv_fetchmeth -Perl_gv_fetchmeth_autoload -Perl_gv_fetchmethod -Perl_gv_fetchmethod_autoload -Perl_gv_fetchmethod_flags -Perl_gv_fetchpv -Perl_gv_fetchpvn_flags -Perl_gv_fetchsv -Perl_gv_fullname -Perl_gv_fullname3 -Perl_gv_fullname4 -Perl_gv_handler -Perl_gv_init -Perl_gv_name_set -Perl_gv_stashpv -Perl_gv_stashpvn -Perl_gv_stashsv -Perl_gv_try_downgrade -Perl_hv_clear -Perl_hv_clear_placeholders -Perl_hv_common -Perl_hv_common_key_len -Perl_hv_copy_hints_hv -Perl_hv_delayfree_ent -Perl_hv_delete -Perl_hv_delete_ent -Perl_hv_eiter_p -Perl_hv_eiter_set -Perl_hv_exists -Perl_hv_exists_ent -Perl_hv_fetch -Perl_hv_fetch_ent -Perl_hv_fill -Perl_hv_free_ent -Perl_hv_iterinit -Perl_hv_iterkey -Perl_hv_iterkeysv -Perl_hv_iternext -Perl_hv_iternext_flags -Perl_hv_iternextsv -Perl_hv_iterval -Perl_hv_ksplit -Perl_hv_magic -Perl_hv_name_set -Perl_hv_placeholders_get -Perl_hv_placeholders_p -Perl_hv_placeholders_set -Perl_hv_riter_p -Perl_hv_riter_set -Perl_hv_scalar -Perl_hv_store -Perl_hv_store_ent -Perl_hv_store_flags -Perl_hv_undef_flags -Perl_init_i18nl10n -Perl_init_i18nl14n -Perl_init_stacks -Perl_init_tm -Perl_instr -Perl_is_ascii_string -Perl_is_lvalue_sub -Perl_is_uni_alnum -Perl_is_uni_alnum_lc -Perl_is_uni_alpha -Perl_is_uni_alpha_lc -Perl_is_uni_ascii -Perl_is_uni_ascii_lc -Perl_is_uni_cntrl -Perl_is_uni_cntrl_lc -Perl_is_uni_digit -Perl_is_uni_digit_lc -Perl_is_uni_graph -Perl_is_uni_graph_lc -Perl_is_uni_idfirst -Perl_is_uni_idfirst_lc -Perl_is_uni_lower -Perl_is_uni_lower_lc -Perl_is_uni_print -Perl_is_uni_print_lc -Perl_is_uni_punct -Perl_is_uni_punct_lc -Perl_is_uni_space -Perl_is_uni_space_lc -Perl_is_uni_upper -Perl_is_uni_upper_lc -Perl_is_uni_xdigit -Perl_is_uni_xdigit_lc -Perl_is_utf8_X_L -Perl_is_utf8_X_LV -Perl_is_utf8_X_LVT -Perl_is_utf8_X_LV_LVT_V -Perl_is_utf8_X_T -Perl_is_utf8_X_V -Perl_is_utf8_X_begin -Perl_is_utf8_X_extend -Perl_is_utf8_X_non_hangul -Perl_is_utf8_X_prepend -Perl_is_utf8_alnum -Perl_is_utf8_alpha -Perl_is_utf8_ascii -Perl_is_utf8_char -Perl_is_utf8_cntrl -Perl_is_utf8_digit -Perl_is_utf8_graph -Perl_is_utf8_idcont -Perl_is_utf8_idfirst -Perl_is_utf8_lower -Perl_is_utf8_mark -Perl_is_utf8_perl_space -Perl_is_utf8_perl_word -Perl_is_utf8_posix_digit -Perl_is_utf8_print -Perl_is_utf8_punct -Perl_is_utf8_space -Perl_is_utf8_string -Perl_is_utf8_string_loc -Perl_is_utf8_string_loclen -Perl_is_utf8_upper -Perl_is_utf8_xdigit -Perl_is_utf8_xidcont -Perl_is_utf8_xidfirst -Perl_leave_scope -Perl_lex_bufutf8 -Perl_lex_discard_to -Perl_lex_grow_linestr -Perl_lex_next_chunk -Perl_lex_peek_unichar -Perl_lex_read_space -Perl_lex_read_to -Perl_lex_read_unichar -Perl_lex_start -Perl_lex_stuff_pv -Perl_lex_stuff_pvn -Perl_lex_stuff_sv -Perl_lex_unstuff -Perl_load_module -Perl_looks_like_number -Perl_magic_dump -Perl_malloc -Perl_markstack_grow -Perl_mess -Perl_mess_sv -Perl_mfree -Perl_mg_clear -Perl_mg_copy -Perl_mg_find -Perl_mg_findext -Perl_mg_free -Perl_mg_free_type -Perl_mg_get -Perl_mg_length -Perl_mg_magical -Perl_mg_set -Perl_mg_size -Perl_mini_mktime -Perl_moreswitches -Perl_mro_get_from_name -Perl_mro_get_linear_isa -Perl_mro_get_private_data -Perl_mro_meta_init -Perl_mro_method_changed_in -Perl_mro_register -Perl_mro_set_mro -Perl_mro_set_private_data -Perl_my_atof -Perl_my_atof2 -Perl_my_dirfd -Perl_my_exit -Perl_my_failure_exit -Perl_my_fflush_all -Perl_my_fork -Perl_my_lstat -Perl_my_lstat_flags -Perl_my_popen_list -Perl_my_setenv -Perl_my_snprintf -Perl_my_socketpair -Perl_my_stat -Perl_my_stat_flags -Perl_my_strftime -Perl_my_vsnprintf -Perl_newANONATTRSUB -Perl_newANONHASH -Perl_newANONLIST -Perl_newANONSUB -Perl_newASSIGNOP -Perl_newATTRSUB -Perl_newAV -Perl_newAVREF -Perl_newBINOP -Perl_newCONDOP -Perl_newCONSTSUB -Perl_newCVREF -Perl_newFOROP -Perl_newGIVENOP -Perl_newGVOP -Perl_newGVREF -Perl_newGVgen -Perl_newHV -Perl_newHVREF -Perl_newHVhv -Perl_newIO -Perl_newLISTOP -Perl_newLOGOP -Perl_newLOOPEX -Perl_newLOOPOP -Perl_newNULLLIST -Perl_newOP -Perl_newPMOP -Perl_newPROG -Perl_newPVOP -Perl_newRANGE -Perl_newRV -Perl_newRV_noinc -Perl_newSLICEOP -Perl_newSTATEOP -Perl_newSUB -Perl_newSV -Perl_newSVOP -Perl_newSVREF -Perl_newSV_type -Perl_newSVhek -Perl_newSViv -Perl_newSVnv -Perl_newSVpv -Perl_newSVpv_share -Perl_newSVpvf -Perl_newSVpvn -Perl_newSVpvn_flags -Perl_newSVpvn_share -Perl_newSVrv -Perl_newSVsv -Perl_newSVuv -Perl_newUNOP -Perl_newWHENOP -Perl_newWHILEOP -Perl_newXS -Perl_newXS_flags -Perl_new_collate -Perl_new_ctype -Perl_new_numeric -Perl_new_stackinfo -Perl_new_version -Perl_new_warnings_bitfield -Perl_ninstr -Perl_nothreadhook -Perl_op_append_elem -Perl_op_append_list -Perl_op_clear -Perl_op_contextualize -Perl_op_dump -Perl_op_free -Perl_op_linklist -Perl_op_lvalue_flags -Perl_op_null -Perl_op_prepend_elem -Perl_op_refcnt_lock -Perl_op_refcnt_unlock -Perl_op_scope -Perl_pack_cat -Perl_packlist -Perl_pad_add_anon -Perl_pad_add_name_pv -Perl_pad_add_name_pvn -Perl_pad_add_name_sv -Perl_pad_alloc -Perl_pad_compname_type -Perl_pad_findmy_pv -Perl_pad_findmy_pvn -Perl_pad_findmy_sv -Perl_pad_new -Perl_pad_push -Perl_pad_tidy -Perl_parse_arithexpr -Perl_parse_barestmt -Perl_parse_block -Perl_parse_fullexpr -Perl_parse_fullstmt -Perl_parse_label -Perl_parse_listexpr -Perl_parse_stmtseq -Perl_parse_termexpr -perl_alloc -perl_construct -perl_destruct -perl_free -perl_parse -perl_run -Perl_pmop_dump -Perl_pop_scope -Perl_pregcomp -Perl_pregexec -Perl_pregfree -Perl_pregfree2 -Perl_prescan_version -Perl_ptr_table_clear -Perl_ptr_table_fetch -Perl_ptr_table_free -Perl_ptr_table_new -Perl_ptr_table_split -Perl_ptr_table_store -Perl_push_scope -Perl_pv_display -Perl_pv_escape -Perl_pv_pretty -Perl_pv_uni_display -Perl_qerror -Perl_re_compile -Perl_re_intuit_start -Perl_re_intuit_string -Perl_realloc -Perl_ref -Perl_refcounted_he_chain_2hv -Perl_refcounted_he_fetch_pv -Perl_refcounted_he_fetch_pvn -Perl_refcounted_he_fetch_sv -Perl_refcounted_he_free -Perl_refcounted_he_inc -Perl_refcounted_he_new_pv -Perl_refcounted_he_new_pvn -Perl_refcounted_he_new_sv -Perl_reg_named_buff -Perl_reg_named_buff_all -Perl_reg_named_buff_exists -Perl_reg_named_buff_fetch -Perl_reg_named_buff_firstkey -Perl_reg_named_buff_iter -Perl_reg_named_buff_nextkey -Perl_reg_named_buff_scalar -Perl_reg_numbered_buff_fetch -Perl_reg_numbered_buff_length -Perl_reg_numbered_buff_store -Perl_reg_qr_package -Perl_reg_temp_copy -Perl_regclass_swash -Perl_regdump -Perl_regexec_flags -Perl_regfree_internal -Perl_reginitcolors -Perl_regnext -Perl_repeatcpy -Perl_report_uninit -Perl_require_pv -Perl_rninstr -Perl_rsignal -Perl_rsignal_state -Perl_runops_debug -Perl_runops_standard -Perl_rv2cv_op_cv -Perl_safesyscalloc -Perl_safesysfree -Perl_safesysmalloc -Perl_safesysrealloc -Perl_save_I16 -Perl_save_I32 -Perl_save_I8 -Perl_save_adelete -Perl_save_aelem_flags -Perl_save_alloc -Perl_save_aptr -Perl_save_ary -Perl_save_bool -Perl_save_clearsv -Perl_save_delete -Perl_save_destructor -Perl_save_destructor_x -Perl_save_freeop -Perl_save_freepv -Perl_save_freesv -Perl_save_generic_pvref -Perl_save_generic_svref -Perl_save_gp -Perl_save_hash -Perl_save_hdelete -Perl_save_helem_flags -Perl_save_hints -Perl_save_hptr -Perl_save_int -Perl_save_item -Perl_save_iv -Perl_save_list -Perl_save_long -Perl_save_mortalizesv -Perl_save_nogv -Perl_save_op -Perl_save_padsv_and_mortalize -Perl_save_pptr -Perl_save_pushi32ptr -Perl_save_pushptr -Perl_save_pushptrptr -Perl_save_re_context -Perl_save_scalar -Perl_save_set_svflags -Perl_save_shared_pvref -Perl_save_sptr -Perl_save_svref -Perl_save_vptr -Perl_savepv -Perl_savepvn -Perl_savesharedpv -Perl_savesharedpvn -Perl_savesharedsvpv -Perl_savestack_grow -Perl_savestack_grow_cnt -Perl_savesvpv -Perl_scan_bin -Perl_scan_hex -Perl_scan_num -Perl_scan_oct -Perl_scan_version -Perl_scan_vstring -Perl_screaminstr -Perl_seed -Perl_set_context -Perl_set_numeric_local -Perl_set_numeric_radix -Perl_set_numeric_standard -Perl_setdefout -Perl_share_hek -Perl_sortsv -Perl_sortsv_flags -Perl_stack_grow -Perl_start_subparse -Perl_stashpv_hvname_match -Perl_str_to_version -Perl_sv_2bool_flags -Perl_sv_2cv -Perl_sv_2io -Perl_sv_2iv -Perl_sv_2iv_flags -Perl_sv_2mortal -Perl_sv_2nv_flags -Perl_sv_2pv -Perl_sv_2pv_flags -Perl_sv_2pv_nolen -Perl_sv_2pvbyte -Perl_sv_2pvbyte_nolen -Perl_sv_2pvutf8 -Perl_sv_2pvutf8_nolen -Perl_sv_2uv -Perl_sv_2uv_flags -Perl_sv_backoff -Perl_sv_bless -Perl_sv_cat_decode -Perl_sv_catpv -Perl_sv_catpv_flags -Perl_sv_catpv_mg -Perl_sv_catpvf -Perl_sv_catpvf_mg -Perl_sv_catpvn -Perl_sv_catpvn_flags -Perl_sv_catpvn_mg -Perl_sv_catsv -Perl_sv_catsv_flags -Perl_sv_catsv_mg -Perl_sv_chop -Perl_sv_clear -Perl_sv_cmp -Perl_sv_cmp_flags -Perl_sv_cmp_locale -Perl_sv_cmp_locale_flags -Perl_sv_compile_2op -Perl_sv_compile_2op_is_broken -Perl_sv_copypv -Perl_sv_dec -Perl_sv_dec_nomg -Perl_sv_del_backref -Perl_sv_derived_from -Perl_sv_destroyable -Perl_sv_does -Perl_sv_dump -Perl_sv_eq_flags -Perl_sv_force_normal -Perl_sv_force_normal_flags -Perl_sv_free -Perl_sv_free2 -Perl_sv_gets -Perl_sv_grow -Perl_sv_inc -Perl_sv_inc_nomg -Perl_sv_insert -Perl_sv_insert_flags -Perl_sv_isa -Perl_sv_isobject -Perl_sv_iv -Perl_sv_len -Perl_sv_len_utf8 -Perl_sv_magic -Perl_sv_magicext -Perl_sv_mortalcopy -Perl_sv_newmortal -Perl_sv_newref -Perl_sv_nolocking -Perl_sv_nosharing -Perl_sv_nv -Perl_sv_peek -Perl_sv_pos_b2u -Perl_sv_pos_u2b -Perl_sv_pos_u2b_flags -Perl_sv_pv -Perl_sv_pvbyte -Perl_sv_pvbyten -Perl_sv_pvbyten_force -Perl_sv_pvn -Perl_sv_pvn_force -Perl_sv_pvn_force_flags -Perl_sv_pvn_nomg -Perl_sv_pvutf8 -Perl_sv_pvutf8n -Perl_sv_pvutf8n_force -Perl_sv_recode_to_utf8 -Perl_sv_reftype -Perl_sv_replace -Perl_sv_report_used -Perl_sv_reset -Perl_sv_rvweaken -Perl_sv_setiv -Perl_sv_setiv_mg -Perl_sv_setnv -Perl_sv_setnv_mg -Perl_sv_setpv -Perl_sv_setpv_mg -Perl_sv_setpvf -Perl_sv_setpvf_mg -Perl_sv_setpviv -Perl_sv_setpviv_mg -Perl_sv_setpvn -Perl_sv_setpvn_mg -Perl_sv_setref_iv -Perl_sv_setref_nv -Perl_sv_setref_pv -Perl_sv_setref_pvn -Perl_sv_setref_uv -Perl_sv_setsv -Perl_sv_setsv_flags -Perl_sv_setsv_mg -Perl_sv_setuv -Perl_sv_setuv_mg -Perl_sv_taint -Perl_sv_tainted -Perl_sv_true -Perl_sv_uni_display -Perl_sv_unmagic -Perl_sv_unmagicext -Perl_sv_unref -Perl_sv_unref_flags -Perl_sv_untaint -Perl_sv_upgrade -Perl_sv_usepvn -Perl_sv_usepvn_flags -Perl_sv_usepvn_mg -Perl_sv_utf8_decode -Perl_sv_utf8_downgrade -Perl_sv_utf8_encode -Perl_sv_utf8_upgrade -Perl_sv_utf8_upgrade_flags_grow -Perl_sv_uv -Perl_sv_vcatpvf -Perl_sv_vcatpvf_mg -Perl_sv_vcatpvfn -Perl_sv_vsetpvf -Perl_sv_vsetpvf_mg -Perl_sv_vsetpvfn -Perl_swash_fetch -Perl_swash_init -Perl_sys_init -Perl_sys_init3 -Perl_sys_term -Perl_taint_env -Perl_taint_proper -Perl_tmps_grow -Perl_to_uni_lower -Perl_to_uni_lower_lc -Perl_to_uni_title -Perl_to_uni_title_lc -Perl_to_uni_upper -Perl_to_uni_upper_lc -Perl_to_utf8_case -Perl_to_utf8_lower -Perl_to_utf8_title -Perl_to_utf8_upper -Perl_try_amagic_bin -Perl_try_amagic_un -Perl_unpack_str -Perl_unpackstring -Perl_unsharepvn -Perl_upg_version -Perl_utf16_to_utf8 -Perl_utf16_to_utf8_reversed -Perl_utf8_distance -Perl_utf8_hop -Perl_utf8_length -Perl_utf8_to_bytes -Perl_utf8_to_uvchr -Perl_utf8_to_uvuni -Perl_utf8n_to_uvuni -Perl_uvchr_to_utf8_flags -Perl_uvuni_to_utf8 -Perl_uvuni_to_utf8_flags -Perl_vcmp -Perl_vcroak -Perl_vdeb -Perl_vform -Perl_vivify_defelem -Perl_vload_module -Perl_vmess -Perl_vnewSVpvf -Perl_vnormal -Perl_vnumify -Perl_vstringify -Perl_vverify -Perl_vwarn -Perl_vwarner -Perl_warn -Perl_warn_sv -Perl_warner -Perl_was_lvalue_sub -Perl_whichsig -Perl_xs_apiversion_bootcheck -Perl_xs_version_bootcheck -Perl_yylex -Perl_utf8n_to_uvchr -Perl_uvchr_to_utf8 -Perl_csighandler -Perl_sv_nounlocking -Perl_my_cxt_init -Perl_newFORM -Perl_newMYSUB -Perl_my_bzero -Perl_my_memcmp -Perl_my_memset -Perl_signbit -Perl_my_strlcat -Perl_my_strlcpy -Perl_my_chsize -Perl_my_pclose -Perl_my_popen -Perl_my_sprintf -Perl_my_bcopy -Perl_hv_assert -Perl_pad_setsv -Perl_pad_sv -Perl_dump_fds -Perl_sys_intern_clear -Perl_sys_intern_init -Perl_sys_intern_dup -Perl_dump_mstats -Perl_get_mstats -Perl_my_htonl -Perl_my_ntohl -Perl_my_swap -Perl_gv_SVadd -Perl_GetVars -Perl_free_global_struct -Perl_init_global_struct -Perl_my_cxt_index -Perl_croak_nocontext -Perl_deb_nocontext -Perl_die_nocontext -Perl_form_nocontext -Perl_fprintf_nocontext -Perl_load_module_nocontext -Perl_mess_nocontext -Perl_newSVpvf_nocontext -Perl_printf_nocontext -Perl_sv_catpvf_mg_nocontext -Perl_sv_catpvf_nocontext -Perl_sv_setpvf_mg_nocontext -Perl_sv_setpvf_nocontext -Perl_warn_nocontext -Perl_warner_nocontext -perl_alloc_using -perl_clone_using -Perl__append_range_to_invlist -Perl__invlist_intersection -Perl__invlist_invert -Perl__invlist_subtract -Perl__invlist_union -Perl__new_invlist -Perl__swash_inversion_hash -Perl__swash_to_invlist -Perl_sv_setsv_cow -Perl_Slab_Alloc -Perl_Slab_Free -Perl_unlnk -Perl_any_dup -Perl_clone_params_del -Perl_clone_params_new -Perl_cx_dup -Perl_dirp_dup -Perl_fp_dup -Perl_gp_dup -Perl_he_dup -Perl_hek_dup -Perl_mg_dup -Perl_newPADOP -Perl_parser_dup -perl_clone -Perl_re_dup_guts -Perl_regdupe_internal -Perl_rvpv_dup -Perl_si_dup -Perl_ss_dup -Perl_sv_dup -Perl_sv_dup_inc -Perl_sv_collxfrm_flags -Perl_PerlIO_clearerr -Perl_PerlIO_close -Perl_PerlIO_eof -Perl_PerlIO_error -Perl_PerlIO_fileno -Perl_PerlIO_fill -Perl_PerlIO_flush -Perl_PerlIO_get_base -Perl_PerlIO_get_bufsiz -Perl_PerlIO_get_cnt -Perl_PerlIO_get_ptr -Perl_PerlIO_read -Perl_PerlIO_seek -Perl_PerlIO_set_cnt -Perl_PerlIO_set_ptrcnt -Perl_PerlIO_setlinebuf -Perl_PerlIO_stderr -Perl_PerlIO_stdin -Perl_PerlIO_stdout -Perl_PerlIO_tell -Perl_PerlIO_unread -Perl_PerlIO_write -Perl_reentrant_free -Perl_reentrant_init -Perl_reentrant_retry -Perl_reentrant_size -Perl_do_aspawn -Perl_do_spawn -Perl_do_spawn_nowait - -# ex: set ro: diff --git a/globvar.sym b/globvar.sym index 1cbdc34f32..a8067e5a69 100644 --- a/globvar.sym +++ b/globvar.sym @@ -1,5 +1,4 @@ # Global variables that must be exported for embedded applications. -# *** Do NOT add functions here, those go in global.sym. # *** Only structures/arrays with constant initializers should go here. # *** Usual globals initialized at runtime should be added in *var*.h. diff --git a/makedef.pl b/makedef.pl index 35b3046d8c..b648a65581 100644 --- a/makedef.pl +++ b/makedef.pl @@ -10,13 +10,14 @@ # # %Config::Config (ie config.sh) # config.h -# global.sym +# embed.fnc # globvar.sym # intrpvar.h # miniperl.map (on OS/2) # perl5.def (on OS/2; this is the old version of the file being made) # perlio.sym # perlvars.h +# regen/opcodes # # plus long lists of function names hard-coded directly in this script. # @@ -54,6 +55,8 @@ while (@ARGV) { } } +require "$ARGS{TARG_DIR}regen/embed_lib.pl"; + { my @PLATFORM = qw(aix win32 wince os2 netware vms test); my %PLATFORM; @@ -532,7 +535,7 @@ if ($define{'PERL_GLOBAL_STRUCT'}) { # functions from *.sym files -my @syms = qw(global.sym globvar.sym); +my @syms = qw(globvar.sym); # Symbols that are the public face of the PerlIO layers implementation # These are in _addition to_ the public face of the abstraction @@ -729,6 +732,27 @@ if ($define{'USE_PERLIO'}) { # At this point all skip lists should be completed, as we are about to test # many symbols against them. +{ + my %seen; + my ($embed) = setup_embed($ARGS{TARG_DIR}); + + foreach (@$embed) { + my ($flags, $retval, $func, @args) = @$_; + next unless $func; + if ($flags =~ /[AX]/ && $flags !~ /[xm]/ || $flags =~ /b/) { + # public API, so export + + # If a function is defined twice, for example before and after + # an #else, only export its name once. Important to do this test + # within the block, as the *first* definition may have flags which + # mean "don't export" + next if $seen{$func}++; + $func = "Perl_$func" if $flags =~ /[pbX]/; + ++$export{$func} unless exists $skip{$func}; + } + } +} + foreach (@syms) { my $syms = $ARGS{TARG_DIR} . $_; open my $global, '<', $syms or die "failed to open $syms: $!\n"; diff --git a/regen/embed.pl b/regen/embed.pl index 8327d37737..5a75009627 100755 --- a/regen/embed.pl +++ b/regen/embed.pl @@ -4,7 +4,6 @@ # # embed.h # embedvar.h -# global.sym # perlapi.c # perlapi.h # proto.h @@ -215,27 +214,7 @@ EOF read_only_bottom_close_and_rename($pr); } -# generates global.sym (API export list) -{ - my %seen; - sub write_global_sym { - if (@_ > 1) { - my ($flags,$retval,$func,@args) = @_; - if ($flags =~ /[AX]/ && $flags !~ /[xm]/ - || $flags =~ /b/) { # public API, so export - # If a function is defined twice, for example before and after - # an #else, only export its name once. - return '' if $seen{$func}++; - $func = "Perl_$func" if $flags =~ /[pbX]/; - return "$func\n"; - } - } - return ''; - } -} - warn "$unflagged_pointers pointer arguments to clean up\n" if $unflagged_pointers; -walk_table(\&write_global_sym, "global.sym"); sub readvars { my ($file, $pre) = @_; diff --git a/t/porting/regen.t b/t/porting/regen.t index bbfb497fad..b644d700ad 100644 --- a/t/porting/regen.t +++ b/t/porting/regen.t @@ -27,7 +27,7 @@ if ( $^O eq "VMS" ) { skip_all( "- regen.pl needs porting." ); } -my $in_regen_pl = 20; # I can't see a clean way to calculate this automatically. +my $in_regen_pl = 19; # I can't see a clean way to calculate this automatically. my @files = qw(perly.act perly.h perly.tab keywords.c keywords.h uconfig.h); my @progs = qw(Porting/makemeta regen/regcharclass.pl regen/mk_PL_charclass.pl); @@ -5589,7 +5589,7 @@ Perl_my_socketpair (int family, int type, int protocol, int fd[2]) { } #else /* In any case have a stub so that there's code corresponding - * to the my_socketpair in global.sym. */ + * to the my_socketpair in embed.fnc. */ int Perl_my_socketpair (int family, int type, int protocol, int fd[2]) { #ifdef HAS_SOCKETPAIR diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index bb509bcf12..afd6cf3192 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -668,8 +668,7 @@ $(SOCKH) : [.vms]$(SOCKH) .endif # The following files are generated automatically -# embed.pl: proto.h embed.h embedvar.h global.sym -# perlapi.h perlapi.c +# embed.pl: proto.h embed.h embedvar.h perlapi.h perlapi.c # opcode.pl: opcode.h opnames.h pp_proto.h # regcomp.pl: regnodes.h # warnings.pl: warnings.h lib/warnings.pm diff --git a/win32/Makefile b/win32/Makefile index c14934111f..8f7905f14f 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -900,7 +900,7 @@ $(CORE_OBJ) : $(CORE_H) $(DLL_OBJ) : $(CORE_H) $(X2P_OBJ) : $(CORE_H) -perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl +perldll.def : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl $(MINIPERL) -I..\lib create_perllibst_h.pl $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \ CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def diff --git a/win32/Makefile.ce b/win32/Makefile.ce index 55e0eab8cc..e81dd3a894 100644 --- a/win32/Makefile.ce +++ b/win32/Makefile.ce @@ -845,7 +845,7 @@ $(DLLDIR)\perllib$(o) : perllib.c .\perlhost.h .\vdir.h .\vmem.h rem (frustrated) mv perllib.obj $(DLLDIR) !ENDIF -perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl +perldll.def : $(HPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl $(HPERL) -MCross -I..\lib create_perllibst_h.pl $(HPERL) -MCross -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \ CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) TARG_DIR=..\ > perldll.def diff --git a/win32/makefile.mk b/win32/makefile.mk index e398d52e06..2d814ec2ad 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -1204,7 +1204,7 @@ $(DLL_OBJ) : $(CORE_H) $(X2P_OBJ) : $(CORE_H) -perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\makedef.pl create_perllibst_h.pl +perldll.def : $(MINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl create_perllibst_h.pl $(MINIPERL) -I..\lib create_perllibst_h.pl $(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \ $(BUILDOPT) CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def |