From d500e60df9f652d9d80c9a5f4324d49e51e7f990 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Sun, 21 Aug 2011 17:37:41 +0200 Subject: [PATCH] Eliminate global.sym, as makedef.pl can generate it internally. global.sym was a file listing the exported symbols, generated by regen/embed.pl from embed.fnc and regen/opcodes, which was only used by makedef.pl Move the code that generates global.sym from regen/embed.pl to makedef.pl, and thereby eliminate the need to ship a 907 line generated file. --- Cross/Makefile-cross-SH | 11 +- MANIFEST | 3 +- Makefile.SH | 11 +- NetWare/Makefile | 2 +- Porting/makerel | 1 - Porting/pumpkin.pod | 16 +- embed.fnc | 10 +- global.sym | 907 ----------------------------------------------- globvar.sym | 1 - makedef.pl | 28 +- regen/embed.pl | 21 -- t/porting/regen.t | 2 +- util.c | 2 +- vms/descrip_mms.template | 3 +- win32/Makefile | 2 +- win32/Makefile.ce | 2 +- win32/makefile.mk | 2 +- 17 files changed, 55 insertions(+), 969 deletions(-) delete mode 100644 global.sym diff --git a/Cross/Makefile-cross-SH b/Cross/Makefile-cross-SH index 0ee2cb0..bb6752f 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 diff --git a/MANIFEST b/MANIFEST index 9592a50..d082047 100644 --- a/MANIFEST +++ b/MANIFEST @@ -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 f16bd19..3119f61 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 43ed978..9074787 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 13bcf4a..0f94b88 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 69fce6b..269311a 100644 --- a/Porting/pumpkin.pod +++ b/Porting/pumpkin.pod @@ -450,14 +450,14 @@ and effort by manually running C 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 to see what to do. =head2 Binary compatibility -If you do change F think carefully about +If you do change F 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, -which reads F. Thus, the C -symbol would have to be added to F So far, so good. +which reads F. Thus, the C +symbol would have to be added to F 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 file. -This file is built from the F file, +This file is built from the F file, since those files already list the globally visible symbols. If we -had added C to global.sym, then F would contain the +had added C to F, then F 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 in F, export it, and +Now, we can safely put C in C, export it, and hide it with F. To be consistent with what I did for C, I probably should have @@ -942,7 +942,7 @@ then in some file (e.g. F or F) do #endif Alternatively, we could just always use C everywhere and move -C from F to the end of F. That would +C from F to the end of F. That would probably be fine as long as our C function agreed with all the C 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 diff --git a/embed.fnc b/embed.fnc index f367bdf..be472ce 100644 --- a/embed.fnc +++ b/embed.fnc @@ -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 for those flags.) : diff --git a/global.sym b/global.sym deleted file mode 100644 index 0a27f29..0000000 --- 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 1cbdc34..a8067e5 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 35b3046..b648a65 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 8327d37..5a75009 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 bbfb497..b644d70 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); diff --git a/util.c b/util.c index a5ec8ea..6a53cff 100644 --- a/util.c +++ b/util.c @@ -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 bb509bc..afd6cf3 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 c149341..8f7905f 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 55e0eab..e81dd3a 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 e398d52..2d814ec 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 -- 1.8.3.1