X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=3813b9f67a976f9dd97b2a40522a7bb782ea8c87;hb=f3f8427d8eb74488a7768102783b300690126cdc;hp=9b1f9773c06f198122180afa99df61f2d596728a;hpb=abfa77597965253f42b77750617c689ea465ff7d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index 9b1f977..3813b9f 100644 --- a/makedef.pl +++ b/makedef.pl @@ -29,6 +29,16 @@ my %PLATFORM; defined $PLATFORM || die "PLATFORM undefined, must be one of: @PLATFORM\n"; exists $PLATFORM{$PLATFORM} || die "PLATFORM must be one of: @PLATFORM\n"; +my %exportperlmalloc = + ( + Perl_malloc => "malloc", + Perl_mfree => "free", + Perl_realloc => "realloc", + Perl_calloc => "calloc", + ); + +my $exportperlmalloc = $PLATFORM eq 'os2'; + my $config_sh = "config.sh"; my $config_h = "config.h"; my $thrdvar_h = "thrdvar.h"; @@ -95,7 +105,6 @@ if ($define{USE_ITHREADS}) { $define{PERL_IMPLICIT_CONTEXT} ||= $define{USE_ITHREADS} || - $define{USE_5005THREADS} || $define{MULTIPLICITY} ; if ($define{USE_ITHREADS} && $PLATFORM ne 'win32' && $^O ne 'darwin') { @@ -108,7 +117,7 @@ my $sym_ord = 0; if ($PLATFORM =~ /^win(?:32|ce)$/) { warn join(' ',keys %define)."\n"; - ($dll = ($define{PERL_DLL} || "perl58")) =~ s/\.dll$//i; + ($dll = ($define{PERL_DLL} || "perl59")) =~ s/\.dll$//i; print "LIBRARY $dll\n"; print "DESCRIPTION 'Perl interpreter'\n"; print "EXPORTS\n"; @@ -126,7 +135,7 @@ elsif ($PLATFORM eq 'os2') { last if /^\s*EXPORTS\b/; } while (<$fh>) { - $ordinal{$1} = $2 if /^\s*"(\w+)"\s*\@(\d+)\s*$/; + $ordinal{$1} = $2 if /^\s*"(\w+)"\s*(?:=\s*"\w+"\s*)?\@(\d+)\s*$/; # This allows skipping ordinals which were used in older versions $sym_ord = $1 if /^\s*;\s*LAST_ORDINAL\s*=\s*(\d+)\s*$/; } @@ -160,7 +169,7 @@ elsif ($PLATFORM eq 'aix') { } elsif ($PLATFORM eq 'netware') { if ($FILETYPE eq 'def') { - print "LIBRARY perl58\n"; + print "LIBRARY perl59\n"; print "DESCRIPTION 'Perl interpreter for NetWare'\n"; print "EXPORTS\n"; } @@ -244,7 +253,14 @@ if ($PLATFORM eq 'win32') { Perl_my_popen )]; } -elsif ($PLATFORM eq 'wince') { +else { + skip_symbols [qw( + Perl_do_spawn + Perl_do_spawn_nowait + Perl_do_aspawn + )]; +} +if ($PLATFORM eq 'wince') { skip_symbols [qw( PL_statusvalue_vms PL_archpat_auto @@ -565,7 +581,7 @@ if ($define{'MYMALLOC'}) { Perl_strdup Perl_putenv )]; - if ($define{'USE_5005THREADS'} || $define{'USE_ITHREADS'}) { + if ($define{'USE_ITHREADS'}) { emit_symbols [qw( PL_malloc_mutex )]; @@ -585,13 +601,13 @@ else { )]; } -unless ($define{'USE_5005THREADS'} || $define{'USE_ITHREADS'}) { +unless ($define{'USE_ITHREADS'}) { skip_symbols [qw( PL_thr_key )]; } -unless ($define{'USE_5005THREADS'}) { +# USE_5005THREADS symbols. Kept as reference for easier removal skip_symbols [qw( PL_sv_mutex PL_strtab_mutex @@ -618,7 +634,6 @@ unless ($define{'USE_5005THREADS'}) { Perl_magic_mutexfree Perl_sv_lock )]; -} unless ($define{'USE_ITHREADS'}) { skip_symbols [qw( @@ -628,6 +643,7 @@ unless ($define{'USE_ITHREADS'}) { PL_regex_padav PL_sharedsv_space PL_sharedsv_space_mutex + PL_dollarzero_mutex Perl_dirp_dup Perl_cx_dup Perl_si_dup @@ -697,6 +713,10 @@ unless ($define{'PL_OP_SLAB_ALLOC'}) { )]; } +unless ($define{'THREADS_HAVE_PIDS'}) { + skip_symbols [qw(PL_ppid)]; +} + sub readvar { my $file = shift; my $proc = shift || sub { "PL_$_[2]" }; @@ -711,11 +731,6 @@ sub readvar { return \@syms; } -if ($define{'USE_5005THREADS'}) { - my $thrd = readvar($thrdvar_h); - skip_symbols $thrd; -} - if ($define{'PERL_GLOBAL_STRUCT'}) { my $global = readvar($perlvars_h); skip_symbols $global; @@ -939,7 +954,7 @@ else { my $glob = readvar($intrpvar_h); emit_symbols $glob; } - unless ($define{'MULTIPLICITY'} || $define{'USE_5005THREADS'}) { + unless ($define{'MULTIPLICITY'}) { my $glob = readvar($thrdvar_h); emit_symbols $glob; } @@ -1131,6 +1146,7 @@ elsif ($PLATFORM eq 'os2') { @missing = grep { !exists $mapped{$_} } keys %export; + @missing = grep { !exists $exportperlmalloc{$_} } @missing; delete $export{$_} foreach @missing; } elsif ($PLATFORM eq 'MacOS') { @@ -1332,6 +1348,10 @@ sub output_symbol { elsif ($PLATFORM eq 'os2') { printf qq( %-31s \@%s\n), qq("$symbol"), $ordinal{$symbol} || ++$sym_ord; + printf qq( %-31s \@%s\n), + qq("$exportperlmalloc{$symbol}" = "$symbol"), + $ordinal{$exportperlmalloc{$symbol}} || ++$sym_ord + if $exportperlmalloc and exists $exportperlmalloc{$symbol}; } elsif ($PLATFORM eq 'aix' || $PLATFORM eq 'MacOS') { print "$symbol\n";