X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedef.pl;h=89862963904ac9b438137a6aa85cb81e2de7dff9;hb=02a834a9ae508dc3fab0b5a0375804172985b012;hp=e864f68229634008e5265ac432dd870aa613d3b7;hpb=f355267cae69288cbad383cfc3cf2811969d730e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedef.pl b/makedef.pl index e864f68..8986296 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"; @@ -126,7 +136,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*$/; } @@ -244,7 +254,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 @@ -738,6 +755,7 @@ my @layer_syms = qw( PerlIOBase_error PerlIOBase_fileno PerlIOBase_pushed + PerlIOBase_binmode PerlIOBase_popped PerlIOBase_read PerlIOBase_setlinebuf @@ -770,6 +788,7 @@ my @layer_syms = qw( PerlIO_apply_layera PerlIO_pending PerlIO_push + PerlIO_pop PerlIO_sv_dup PerlIO_perlio @@ -1129,6 +1148,7 @@ elsif ($PLATFORM eq 'os2') { @missing = grep { !exists $mapped{$_} } keys %export; + @missing = grep { !exists $exportperlmalloc{$_} } @missing; delete $export{$_} foreach @missing; } elsif ($PLATFORM eq 'MacOS') { @@ -1330,6 +1350,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";