+#./perl -w
#
# Create the export list for perl.
#
# reads global.sym, pp.sym, perlvars.h, intrpvar.h, thrdvar.h, config.h
# On OS/2 reads miniperl.map and the previous version of perl5.def as well
-my $PLATFORM;
-my $CCTYPE;
+BEGIN { unshift @INC, "lib" }
+use strict;
+
+use vars qw($PLATFORM $CCTYPE $FILETYPE $CONFIG_ARGS $ARCHNAME $PATCHLEVEL);
+
+my (%define, %ordinal);
while (@ARGV) {
my $flag = shift;
print STDERR "Defines: (" . join(' ', sort keys %define) . ")\n";
if ($PLATFORM =~ /^win(?:32|ce)$/) {
- ($dll = ($define{PERL_DLL} || "perl59")) =~ s/\.dll$//i;
+ (my $dll = ($define{PERL_DLL} || "perl59")) =~ s/\.dll$//i;
print "LIBRARY $dll\n";
print "DESCRIPTION 'Perl interpreter'\n";
print "EXPORTS\n";
}
$sym_ord < $_ and $sym_ord = $_ for values %ordinal; # Take the max
}
- ($v = $]) =~ s/(\d\.\d\d\d)(\d\d)$/$1_$2/;
+ (my $v = $]) =~ s/(\d\.\d\d\d)(\d\d)$/$1_$2/;
$v .= '-thread' if $ARCHNAME =~ /-thread/;
- ($dll = $define{PERL_DLL}) =~ s/\.dll$//i;
+ (my $dll = $define{PERL_DLL}) =~ s/\.dll$//i;
$v .= "\@$PATCHLEVEL" if $PATCHLEVEL;
- $d = "DESCRIPTION '\@#perl5-porters\@perl.org:$v#\@ Perl interpreter, configured as $CONFIG_ARGS'";
+ my $d = "DESCRIPTION '\@#perl5-porters\@perl.org:$v#\@ Perl interpreter, configured as $CONFIG_ARGS'";
$d = substr($d, 0, 249) . "...'" if length $d > 253;
print <<"---EOP---";
LIBRARY '$dll' INITINSTANCE TERMINSTANCE
---EOP---
}
elsif ($PLATFORM eq 'aix') {
- $OSVER = `uname -v`;
+ my $OSVER = `uname -v`;
chop $OSVER;
- $OSREL = `uname -r`;
+ my $OSREL = `uname -r`;
chop $OSREL;
if ($OSVER > 4 || ($OSVER == 4 && $OSREL >= 3)) {
print "#! ..\n";
Perl_sys_intern_clear
Perl_sys_intern_dup
Perl_sys_intern_init
+ Perl_my_sprintf
PL_cryptseen
PL_opsave
PL_statusvalue_vms
Perl_debstackptrs
Perl_pad_sv
Perl_sv_peek
+ Perl_hv_assert
PL_block_type
PL_watchaddr
PL_watchok
unless ($define{'PERL_OLD_COPY_ON_WRITE'}) {
skip_symbols [qw(
Perl_sv_setsv_cow
- Perl_sv_release_IVX
)];
}
unless ($define{'USE_ITHREADS'}) {
skip_symbols [qw(
- PL_ptr_table
- PL_pte_root
- PL_pte_arenaroot
PL_op_mutex
PL_regex_pad
PL_regex_padav
PL_sharedsv_space
PL_sharedsv_space_mutex
PL_dollarzero_mutex
+ PL_hints_mutex
+ PL_perlio_mutex
+ PL_regdupe
+ Perl_parser_dup
Perl_dirp_dup
Perl_cx_dup
Perl_si_dup
Perl_rvpv_dup
Perl_hek_dup
Perl_sys_intern_dup
- Perl_ptr_table_clear
- Perl_ptr_table_fetch
- Perl_ptr_table_free
- Perl_ptr_table_new
- Perl_ptr_table_clear
- Perl_ptr_table_free
- Perl_ptr_table_split
- Perl_ptr_table_store
perl_clone
perl_clone_using
Perl_sharedsv_find
Perl_sharedsv_thrcnt_inc
Perl_sharedsv_unlock
Perl_stashpv_hvname_match
+ Perl_regdupe_internal
+ Perl_newPADOP
)];
}
PL_my_cxt_index
PL_my_cxt_list
PL_my_cxt_size
+ PL_my_cxt_keys
Perl_croak_nocontext
Perl_die_nocontext
Perl_deb_nocontext
Perl_sv_catpvf_mg_nocontext
Perl_sv_setpvf_mg_nocontext
Perl_my_cxt_init
+ Perl_my_cxt_index
)];
}
)];
}
+unless ($define{'PERL_GLOBAL_STRUCT_PRIVATE'}) {
+ skip_symbols [qw(
+ PL_my_cxt_keys
+ Perl_my_cxt_index
+ )];
+}
+
unless ($define{'d_mmap'}) {
skip_symbols [qw(
PL_mmap_page_size
PerlIO_sv_dup
Perl_PerlIO_clearerr
Perl_PerlIO_close
+ Perl_PerlIO_context_layers
Perl_PerlIO_eof
Perl_PerlIO_error
Perl_PerlIO_fileno
emit_symbols \@layer_syms;
emit_symbols [qw(perlsio_binmode)];
}
+ if ($define{'USE_ITHREADS'}) {
+ emit_symbols [qw(
+ PL_perlio_mutex
+ )];
+ }
+ else {
+ skip_symbols [qw(
+ PL_perlio_mutex
+ )];
+ }
} else {
# -Uuseperlio
# Skip the PerlIO layer symbols - although
# nothing should have exported them anyway.
skip_symbols \@layer_syms;
- skip_symbols [qw(perlsio_binmode)];
- skip_symbols [qw(PL_def_layerlist PL_known_layers PL_perlio)];
+ skip_symbols [qw(
+ perlsio_binmode
+ PL_def_layerlist
+ PL_known_layers
+ PL_perlio
+ PL_perlio_debug_fd
+ PL_perlio_fd_refcnt
+ PL_perlio_fd_refcnt_size
+ )];
# Also do NOT add abstraction symbols from $perlio_sym
# abstraction is done as #define to stdio
win32_rewinddir
win32_closedir
win32_longpath
+ win32_ansipath
win32_os_id
win32_getpid
win32_crypt
}
}
elsif ($PLATFORM eq 'os2') {
+ my (%mapped, @missing);
open MAP, 'miniperl.map' or die 'Cannot read miniperl.map';
/^\s*[\da-f:]+\s+(\w+)/i and $mapped{$1}++ foreach <MAP>;
close MAP or die 'Cannot close miniperl.map';
1;
__DATA__
-# extra globals not included above.
-Perl_cxinc
-perl_alloc
-perl_alloc_using
-perl_clone
-perl_clone_using
-perl_construct
-perl_destruct
-perl_free
-perl_parse
-perl_run
# Oddities from PerlIO
PerlIO_binmode
PerlIO_getpos