while (<CFG>)
{
$define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/;
+ $define{$1} = 1 if /^\s*#\s*define\s+(USE_THREADS)\b/;
}
close(CFG);
warn join(' ',keys %define)."\n";
+if ($define{PERL_OBJECT}) {
+ print "LIBRARY PerlCore\n";
+ print "DESCRIPTION 'Perl interpreter'\n";
+ print "EXPORTS\n";
+ output_symbol("perl_alloc");
+ exit(0);
+}
+
if ($CCTYPE ne 'GCC')
{
print "LIBRARY Perl\n";
print "DESCRIPTION 'Perl interpreter, export autogenerated'\n";
- print "CODE LOADONCALL\n";
- print "DATA LOADONCALL NONSHARED MULTIPLE\n";
}
else
{
skip_symbols [qw(
Perl_statusvalue_vms
+Perl_archpat_auto
Perl_block_type
+Perl_bostr
Perl_additem
Perl_cast_ulong
Perl_check_uni
Perl_checkcomma
Perl_chsize
Perl_ck_aelem
+Perl_colors
+Perl_colorset
Perl_cryptseen
Perl_cx_dump
-Perl_deb
-Perl_deb_growlevel
-Perl_debop
-Perl_debprofdump
-Perl_debstack
-Perl_debstackptrs
+Perl_DBcv
Perl_do_ipcctl
Perl_do_ipcget
Perl_do_msgrcv
Perl_dump_pm
Perl_dump_sub
Perl_expectterm
+Perl_extralen
Perl_fetch_gv
Perl_fetch_io
Perl_force_ident
Perl_force_next
Perl_force_word
+Perl_generation
Perl_hv_stashpv
+Perl_in_clean_all
+Perl_in_clean_objs
Perl_intuit_more
Perl_init_thread_intern
Perl_know_next
+Perl_lastgotoprobe
+Perl_linestart
+Perl_modcount
Perl_modkids
Perl_mstats
Perl_my_bzero
Perl_no_op
Perl_nointrp
Perl_nomem
+Perl_pending_ident
Perl_pp_cswitch
Perl_pp_entersubr
Perl_pp_evalonce
Perl_q
Perl_rcsid
Perl_reall_srchlen
+Perl_reg_eval_set
+Perl_reg_flags
+Perl_reg_start_tmp
+Perl_reg_start_tmpl
+Perl_regbol
+Perl_regcc
+Perl_regcode
+Perl_regdata
+Perl_regdummy
Perl_regdump
Perl_regfold
+Perl_regendp
+Perl_regeol
+Perl_regflags
+Perl_regindent
+Perl_reginput
+Perl_reglastparen
Perl_regmyendp
Perl_regmyp_size
Perl_regmystartp
Perl_regnarrate
+Perl_regnaughty
+Perl_regnpar
+Perl_regcomp_parse
+Perl_regprecomp
+Perl_regprev
+Perl_regprogram
Perl_regprop
+Perl_regsawback
+Perl_regseen
+Perl_regsize
+Perl_regstartp
+Perl_regtill
+Perl_regxend
+Perl_regcomp_rx
Perl_same_dirent
Perl_saw_return
Perl_scan_const
Perl_scan_subst
Perl_scan_trans
Perl_scan_word
+Perl_seen_zerolen
Perl_setenv_getix
Perl_skipspace
+Perl_sort_mutex
+Perl_sortcxix
Perl_sublex_done
+Perl_sublex_info
Perl_sublex_start
Perl_sv_ref
Perl_sv_setptrobj
Perl_too_few_arguments
Perl_too_many_arguments
Perl_unlnk
-Perl_wait4pid
Perl_watch
Perl_yyname
Perl_yyrule
-Perl_Yes
-Perl_No
-Perl_hexdigit
-Perl_patleave
-Perl_vert
allgvs
curblock
curcsv
unless ($define{'USE_THREADS'})
{
skip_symbols [qw(
+Perl_getTHR
+Perl_setTHR
Perl_condpair_magic
Perl_thr_key
Perl_sv_mutex
+Perl_svref_mutex
Perl_malloc_mutex
Perl_eval_mutex
Perl_eval_cond
Perl_nthreads_cond
Perl_per_thread_magicals
Perl_thread_create
+Perl_threadnum
Perl_find_threadsv
Perl_threadsv_names
Perl_thrsv
{
# All symbols have a Perl_ prefix because that's what embed.h
# sticks in front of them.
- push(@syms,"Perl_".$1) if (/\bPERLVARI?\([IGT](\w+)/);
+ push(@syms,"Perl_".$1) if (/\bPERLVARI?C?\([IGT](\w+)/);
}
close(VARS);
return \@syms;
{
my $global = readvar("../perlvars.h");
skip_symbols $global;
+ emit_symbols [qw(Perl_GetVars)];
+ emit_symbols [qw(Perl_Vars Perl_VarsPtr)] unless $CCTYPE eq 'GCC';
}
unless ($define{'DEBUGGING'})
{
skip_symbols [qw(
+ Perl_deb
+ Perl_deb_growlevel
+ Perl_debop
+ Perl_debprofdump
+ Perl_debstack
+ Perl_debstackptrs
Perl_runops_debug
Perl_sv_peek
Perl_watchaddr
Perl_watchok)];
}
+if ($define{'HAVE_DES_FCRYPT'})
+ {
+ emit_symbols [qw(win32_crypt)];
+ }
+
open (GLOBAL, "<../global.sym") || die "failed to open global.sym" . $!;
while (<GLOBAL>)
{
# doesn't hurt to include them anyway.
# these don't have Perl prefix
-if ($define{'PERL_GLOBAL_STRUCT'})
- {
- emit_symbol( ($CCTYPE eq 'GCC') ? 'Perl_GetVars' : 'Perl_VarsPtr')
- }
-else
+unless ($define{'PERL_GLOBAL_STRUCT'})
{
my $glob = readvar("../perlvars.h");
emit_symbols $glob;
foreach my $symbol (sort keys %export)
{
- if ($CCTYPE eq "BORLAND") {
- # workaround Borland quirk by exporting both the straight
- # name and a name with leading underscore. Note the
- # alias *must* come after the symbol itself, if both
- # are to be exported. (Linker bug?)
- print "\t_$symbol\n";
- print "\t$symbol = _$symbol\n";
- }
- elsif ($CCTYPE eq 'GCC') {
- # Symbols have leading _ whole process is $%£"% slow
- # so skip aliases for now
- print "\t$symbol\n";
- }
- else {
- # for binary coexistence, export both the symbol and
- # alias with leading underscore
- print "\t$symbol\n";
- print "\t_$symbol = $symbol\n";
- }
+ output_symbol($symbol);
}
sub emit_symbol {
$export{$symbol} = 1;
}
+sub output_symbol {
+ my $symbol = shift;
+ if ($CCTYPE eq "BORLAND") {
+ # workaround Borland quirk by exporting both the straight
+ # name and a name with leading underscore. Note the
+ # alias *must* come after the symbol itself, if both
+ # are to be exported. (Linker bug?)
+ print "\t_$symbol\n";
+ print "\t$symbol = _$symbol\n";
+ }
+ elsif ($CCTYPE eq 'GCC') {
+ # Symbols have leading _ whole process is $%£"% slow
+ # so skip aliases for now
+ print "\t$symbol\n";
+ }
+ else {
+ # for binary coexistence, export both the symbol and
+ # alias with leading underscore
+ print "\t$symbol\n";
+ print "\t_$symbol = $symbol\n";
+ }
+}
+
1;
__DATA__
# extra globals not included above.
perl_init_i18nl10n
perl_init_ext
perl_alloc
+perl_atexit
perl_construct
perl_destruct
perl_free
perl_require_pv
perl_eval_pv
perl_eval_sv
+perl_new_ctype
+perl_new_collate
+perl_new_numeric
+perl_set_numeric_standard
+perl_set_numeric_local
boot_DynaLoader
Perl_thread_create
win32_errno
win32_rmdir
win32_chdir
win32_flock
+win32_execv
win32_execvp
win32_htons
win32_ntohs
win32_alarm
win32_open_osfhandle
win32_get_osfhandle
+win32_ioctl
+win32_utime
+win32_wait
+win32_waitpid
+win32_kill
+win32_str_os_error
Perl_win32_init
Perl_init_os_extras
Perl_getTHR