(retracted by #17559, made things worse)
Jarkko Hietaniemi [Thu, 11 Jul 2002 15:43:44 +0000 (15:43 +0000)]
Apparently OS/2 likes to export the Perl malloc interface
to external libraries and the #16291 broke that when removing
the bincompat5005 feature.

p4raw-id: //depot/perl@17486

makedef.pl

index 9b1f977..4e211d6 100644 (file)
@@ -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";
@@ -1131,6 +1141,7 @@ elsif ($PLATFORM eq 'os2') {
 
     @missing = grep { !exists $mapped{$_} }
                    keys %export;
+    @missing = grep { !exists $exportperlmalloc{$_} } @missing;
     delete $export{$_} foreach @missing;
 }
 elsif ($PLATFORM eq 'MacOS') {
@@ -1304,6 +1315,8 @@ sub emit_symbol {
 
 sub output_symbol {
     my $symbol = shift;
+    $symbol = $exportperlmalloc{$symbol}
+        if $exportperlmalloc and exists $exportperlmalloc{$symbol};
     if ($PLATFORM =~ /^win(?:32|ce)$/) {
        $symbol = "_$symbol" if $CCTYPE eq 'BORLAND';
        print "\t$symbol\n";