fix problem pointer casts
[p5sagit/p5-mst-13.2.git] / makedef.pl
CommitLineData
549a6b10 1#
2# Create the export list for perl.
3#
3cfae81b 4# Needed by WIN32 and OS/2 for creating perl.dll
5# and by AIX for creating libperl.a when -Dusershrplib is in effect.
549a6b10 6#
22c35a8c 7# reads global.sym, pp.sym, perlvars.h, intrpvar.h, thrdvar.h, config.h
3cfae81b 8# On OS/2 reads miniperl.map as well
0a753a76 9
549a6b10 10my $PLATFORM;
11my $CCTYPE;
910dfcc8 12
4cb71bb6 13my %bincompat5005 =
14 (Perl_call_argv => "perl_call_argv",
15 Perl_call_method => "perl_call_method",
16 Perl_call_pv => "perl_call_pv",
17 Perl_call_sv => "perl_call_sv",
18 Perl_get_av => "perl_get_av",
19 Perl_get_cv => "perl_get_cv",
20 Perl_get_hv => "perl_get_hv",
21 Perl_get_sv => "perl_get_sv",
22 Perl_init_i18nl10n => "perl_init_i18nl10n",
23 Perl_init_i18nl14n => "perl_init_i18nl14n",
24 Perl_new_collate => "perl_new_collate",
25 Perl_new_ctype => "perl_new_ctype",
26 Perl_new_numeric => "perl_new_numeric",
27 Perl_require_pv => "perl_require_pv",
28 Perl_safesyscalloc => "Perl_safecalloc",
29 Perl_safesysfree => "Perl_safefree",
30 Perl_safesysmalloc => "Perl_safemalloc",
31 Perl_safesysrealloc => "Perl_saferealloc",
32 Perl_set_numeric_local => "perl_set_numeric_local",
62457c2b 33 Perl_set_numeric_standard => "perl_set_numeric_standard",
34 Perl_malloc => "malloc",
35 Perl_mfree => "free",
36 Perl_realloc => "realloc",
37 Perl_calloc => "calloc",);
4cb71bb6 38
39my $bincompat5005 = join("|", keys %bincompat5005);
40
910dfcc8 41while (@ARGV)
d55594ae 42 {
43 my $flag = shift;
44 $define{$1} = 1 if ($flag =~ /^-D(\w+)$/);
3cfae81b 45 $define{$1} = $2 if ($flag =~ /^-D(\w+)=(.+)$/);
549a6b10 46 $CCTYPE = $1 if ($flag =~ /^CCTYPE=(\w+)$/);
47 $PLATFORM = $1 if ($flag =~ /^PLATFORM=(\w+)$/);
d55594ae 48 }
49
3cfae81b 50my @PLATFORM = qw(aix win32 os2);
549a6b10 51my %PLATFORM;
52@PLATFORM{@PLATFORM} = ();
53
54defined $PLATFORM || die "PLATFORM undefined, must be one of: @PLATFORM\n";
55exists $PLATFORM{$PLATFORM} || die "PLATFORM must be one of: @PLATFORM\n";
56
57my $config_sh = "config.sh";
58my $config_h = "config.h";
59my $thrdvar_h = "thrdvar.h";
60my $intrpvar_h = "intrpvar.h";
61my $perlvars_h = "perlvars.h";
62my $global_sym = "global.sym";
63my $pp_sym = "pp.sym";
64my $globvar_sym = "globvar.sym";
65my $perlio_sym = "perlio.sym";
66
67if ($PLATFORM eq 'aix') {
68 # Nothing for now.
69} elsif ($PLATFORM eq 'win32') {
70 $CCTYPE = "MSVC" unless defined $CCTYPE;
71 foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym, $pp_sym, $globvar_sym) {
72 s!^!..\\!;
73 }
74}
75
76unless ($PLATFORM eq 'win32') {
77 open(CFG,$config_sh) || die "Cannot open $config_sh: $!\n";
78 while (<CFG>)
79 {
80 if (/^(?:ccflags|optimize)='(.+)'$/) {
81 $_ = $1;
82 $define{$1} = 1 while /-D(\w+)/g;
83 }
3cfae81b 84 if ($PLATFORM eq 'os2') {
85 $CONFIG_ARGS = $1 if /^(?:config_args)='(.+)'$/;
86 $ARCHNAME = $1 if /^(?:archname)='(.+)'$/;
87 }
549a6b10 88 }
89 close(CFG);
90}
91
92open(CFG,$config_h) || die "Cannot open $config_h: $!\n";
bbc8f9de 93while (<CFG>)
94 {
95 $define{$1} = 1 if /^\s*#\s*define\s+(MYMALLOC)\b/;
924b3ec4 96 $define{$1} = 1 if /^\s*#\s*define\s+(USE_THREADS)\b/;
549a6b10 97 $define{$1} = 1 if /^\s*#\s*define\s+(USE_PERLIO)\b/;
b86a2fa7 98 $define{$1} = 1 if /^\s*#\s*define\s+(MULTIPLICITY)\b/;
4cb71bb6 99 $define{$1} = 1 if /^\s*#\s*define\s+(PERL_BINCOMPAT_5005)\b/;
bbc8f9de 100 }
101close(CFG);
102
549a6b10 103if ($PLATFORM eq 'win32') {
104 warn join(' ',keys %define)."\n";
105 if ($define{PERL_OBJECT}) {
3075ddba 106 print "LIBRARY Perl56\n";
549a6b10 107 print "DESCRIPTION 'Perl interpreter'\n";
108 print "EXPORTS\n";
51371543 109# output_symbol("perl_alloc");
549a6b10 110 output_symbol("perl_get_host_info");
111 output_symbol("perl_alloc_using");
51371543 112# output_symbol("perl_construct");
113# output_symbol("perl_destruct");
114# output_symbol("perl_free");
115# output_symbol("perl_parse");
116# output_symbol("perl_run");
117# output_symbol("RunPerl");
51371543 118# exit(0);
51371543 119 }
120 else {
549a6b10 121 if ($CCTYPE ne 'GCC') {
122 print "LIBRARY Perl\n";
123 print "DESCRIPTION 'Perl interpreter, export autogenerated'\n";
124 }
125 else {
126 $define{'PERL_GLOBAL_STRUCT'} = 1;
127 $define{'MULTIPLICITY'} = 1;
128 }
129 print "EXPORTS\n";
130 }
3cfae81b 131} elsif ($PLATFORM eq 'os2') {
132 ($v = $]) =~ s/(\d\.\d\d\d)(\d\d)$/$1_$2/;
133 $v .= '-thread' if $ARCHNAME =~ /-thread/;
134 #$sum = 0;
135 #for (split //, $v) {
136 # $sum = ($sum * 33) + ord;
137 # $sum &= 0xffffff;
138 #}
139 #$sum += $sum >> 5;
140 #$sum &= 0xffff;
141 #$sum = printf '%X', $sum;
142 ($dll = $define{PERL_DLL}) =~ s/\.dll$//i;
143 # print STDERR "'$dll' <= '$define{PERL_DLL}'\n";
144 print <<"---EOP---";
145LIBRARY '$dll' INITINSTANCE TERMINSTANCE
146DESCRIPTION '\@#perl5-porters\@perl.org:$v#\@ Perl interpreter, configured as $CONFIG_ARGS'
147STACKSIZE 32768
148CODE LOADONCALL
149DATA LOADONCALL NONSHARED MULTIPLE
150EXPORTS
151---EOP---
549a6b10 152} elsif ($PLATFORM eq 'aix') {
153 print "#!\n";
ac4c12e7 154}
bbc8f9de 155
22239a37 156my %skip;
157my %export;
158
51371543 159sub skip_symbols {
160 my $list = shift;
161 foreach my $symbol (@$list) {
162 $skip{$symbol} = 1;
163 }
22239a37 164}
165
51371543 166sub emit_symbols {
167 my $list = shift;
168 foreach my $symbol (@$list) {
169 my $skipsym = $symbol;
170 # XXX hack
171 if ($define{PERL_OBJECT}) {
172 $skipsym =~ s/^Perl_[GIT](\w+)_ptr$/PL_$1/;
173 }
174 emit_symbol($symbol) unless exists $skip{$skipsym};
175 }
22239a37 176}
177
549a6b10 178if ($PLATFORM eq 'win32') {
22239a37 179skip_symbols [qw(
db15561c 180PL_statusvalue_vms
181PL_archpat_auto
182PL_cryptseen
183PL_DBcv
184PL_generation
db15561c 185PL_lastgotoprobe
186PL_linestart
187PL_modcount
188PL_pending_ident
189PL_sortcxix
190PL_sublex_info
191PL_timesbuf
4f63d024 192main
193Perl_ErrorNo
194Perl_GetVars
a6c40364 195Perl_do_exec3
0a753a76 196Perl_do_ipcctl
197Perl_do_ipcget
198Perl_do_msgrcv
199Perl_do_msgsnd
200Perl_do_semop
201Perl_do_shmio
0a753a76 202Perl_dump_fds
d55594ae 203Perl_init_thread_intern
0a753a76 204Perl_my_bzero
205Perl_my_htonl
206Perl_my_ntohl
207Perl_my_swap
208Perl_my_chsize
0a753a76 209Perl_same_dirent
68dc0745 210Perl_setenv_getix
0a753a76 211Perl_unlnk
0a753a76 212Perl_watch
0a753a76 213Perl_safexcalloc
214Perl_safexmalloc
215Perl_safexfree
216Perl_safexrealloc
68dc0745 217Perl_my_memcmp
8b10511d 218Perl_my_memset
db15561c 219PL_cshlen
220PL_cshname
221PL_opsave
32e30700 222
223Perl_do_exec
224Perl_getenv_len
225Perl_my_pclose
226Perl_my_popen
22239a37 227)];
549a6b10 228} elsif ($PLATFORM eq 'aix') {
229 skip_symbols([qw(
230Perl_dump_fds
231Perl_ErrorNo
232Perl_GetVars
233Perl_my_bcopy
234Perl_my_bzero
235Perl_my_chsize
236Perl_my_htonl
237Perl_my_memcmp
238Perl_my_memset
239Perl_my_ntohl
240Perl_my_swap
241Perl_safexcalloc
242Perl_safexfree
243Perl_safexmalloc
244Perl_safexrealloc
245Perl_same_dirent
246Perl_unlnk
247PL_cryptseen
248PL_opsave
249PL_statusvalue_vms
250PL_sys_intern
251)]);
252}
0a753a76 253
3cfae81b 254if ($PLATFORM eq 'os2') {
255 emit_symbols([qw(
256ctermid
257get_sysinfo
258Perl_OS2_init
259OS2_Perl_data
260dlopen
261dlsym
262dlerror
263my_tmpfile
264my_tmpnam
265my_flock
266malloc_mutex
267threads_mutex
268nthreads
269nthreads_cond
270os2_cond_wait
0eb4ebd7 271os2_stat
3cfae81b 272pthread_join
273pthread_create
274pthread_detach
275XS_Cwd_change_drive
276XS_Cwd_current_drive
277XS_Cwd_extLibpath
278XS_Cwd_extLibpath_set
279XS_Cwd_sys_abspath
280XS_Cwd_sys_chdir
281XS_Cwd_sys_cwd
282XS_Cwd_sys_is_absolute
283XS_Cwd_sys_is_relative
284XS_Cwd_sys_is_rooted
285XS_DynaLoader_mod2fname
286XS_File__Copy_syscopy
287Perl_Register_MQ
288Perl_Deregister_MQ
289Perl_Serve_Messages
290Perl_Process_Messages
291init_PMWIN_entries
292PMWIN_entries
293Perl_hab_GET
294)]);
295}
296
51371543 297if ($define{'PERL_OBJECT'}) {
298 skip_symbols [qw(
299 Perl_getenv_len
300 Perl_my_popen
301 Perl_my_pclose
302 )];
303}
304else {
305 skip_symbols [qw(
306 PL_Dir
307 PL_Env
308 PL_LIO
309 PL_Mem
310 PL_Proc
311 PL_Sock
312 PL_StdIO
313 )];
314}
c69f112c 315
bbc8f9de 316if ($define{'MYMALLOC'})
317 {
22239a37 318 emit_symbols [qw(
9423c6fc 319 Perl_dump_mstats
22239a37 320 Perl_malloc
f2517201 321 Perl_mfree
22239a37 322 Perl_realloc
323 Perl_calloc)];
bbc8f9de 324 }
32fcaa0b 325else
326 {
327 skip_symbols [qw(
df31f264 328 Perl_dump_mstats
4f63d024 329 Perl_malloc
330 Perl_mfree
331 Perl_realloc
332 Perl_calloc
32fcaa0b 333 Perl_malloced_size)];
334 }
bbc8f9de 335
d55594ae 336unless ($define{'USE_THREADS'})
337 {
22239a37 338 skip_symbols [qw(
db15561c 339PL_thr_key
340PL_sv_mutex
46124e9e 341PL_strtab_mutex
db15561c 342PL_svref_mutex
343PL_malloc_mutex
5ff3f7a4 344PL_cred_mutex
db15561c 345PL_eval_mutex
346PL_eval_cond
347PL_eval_owner
348PL_threads_mutex
349PL_nthreads
350PL_nthreads_cond
351PL_threadnum
352PL_threadsv_names
353PL_thrsv
22c35a8c 354PL_vtbl_mutex
eb480a0b 355Perl_getTHR
356Perl_setTHR
d55594ae 357Perl_condpair_magic
32f822de 358Perl_new_struct_thread
32f822de 359Perl_per_thread_magicals
d4cce5f1 360Perl_thread_create
361Perl_find_threadsv
d55594ae 362Perl_unlock_condpair
d55594ae 363Perl_magic_mutexfree
95906810 364)];
910dfcc8 365 }
d18c6117 366
367unless ($define{'USE_ITHREADS'})
368 {
369 skip_symbols [qw(
370PL_sv_table
371Perl_dirp_dup
372Perl_fp_dup
373Perl_gp_dup
374Perl_he_dup
375Perl_mg_dup
376Perl_re_dup
377Perl_sv_dup
378Perl_sys_intern_dup
379Perl_sv_table_fetch
380Perl_sv_table_new
381Perl_sv_table_split
382Perl_sv_table_store
383)];
384 }
385
c5be433b 386unless ($define{'USE_THREADS'} or $define{'PERL_IMPLICIT_CONTEXT'}
387 or $define{'PERL_OBJECT'})
388{
4f63d024 389 skip_symbols [qw(
390 Perl_croak_nocontext
391 Perl_die_nocontext
c5be433b 392 Perl_deb_nocontext
4f63d024 393 Perl_form_nocontext
9c1db463 394 Perl_mess_nocontext
4f63d024 395 Perl_warn_nocontext
c5be433b 396 Perl_warner_nocontext
4f63d024 397 Perl_newSVpvf_nocontext
398 Perl_sv_catpvf_nocontext
399 Perl_sv_setpvf_nocontext
400 Perl_sv_catpvf_mg_nocontext
401 Perl_sv_setpvf_mg_nocontext
402 )];
403 }
d4cce5f1 404
910dfcc8 405unless ($define{'FAKE_THREADS'})
406 {
db15561c 407 skip_symbols [qw(PL_curthr)];
d55594ae 408 }
409
22239a37 410sub readvar
411{
412 my $file = shift;
51371543 413 my $proc = shift || sub { "PL_$_[2]" };
549a6b10 414 open(VARS,$file) || die "Cannot open $file: $!\n";
22239a37 415 my @syms;
416 while (<VARS>)
417 {
418 # All symbols have a Perl_ prefix because that's what embed.h
419 # sticks in front of them.
51371543 420 push(@syms, &$proc($1,$2,$3)) if (/\bPERLVAR(A?I?C?)\(([IGT])(\w+)/);
22239a37 421 }
422 close(VARS);
423 return \@syms;
424}
425
d4cce5f1 426if ($define{'USE_THREADS'} || $define{'MULTIPLICITY'})
d55594ae 427 {
549a6b10 428 my $thrd = readvar($thrdvar_h);
22239a37 429 skip_symbols $thrd;
d55594ae 430 }
431
d4cce5f1 432if ($define{'MULTIPLICITY'})
d55594ae 433 {
549a6b10 434 my $interp = readvar($intrpvar_h);
22239a37 435 skip_symbols $interp;
436 }
437
438if ($define{'PERL_GLOBAL_STRUCT'})
439 {
549a6b10 440 my $global = readvar($perlvars_h);
22239a37 441 skip_symbols $global;
d543acb6 442 emit_symbol('Perl_GetVars');
db15561c 443 emit_symbols [qw(PL_Vars PL_VarsPtr)] unless $CCTYPE eq 'GCC';
d4cce5f1 444 }
d55594ae 445
36c15d3f 446unless ($define{'DEBUGGING'})
447 {
22239a37 448 skip_symbols [qw(
fea7140c 449 Perl_deb
450 Perl_deb_growlevel
451 Perl_debop
452 Perl_debprofdump
453 Perl_debstack
454 Perl_debstackptrs
22239a37 455 Perl_runops_debug
456 Perl_sv_peek
3836fe67 457 PL_block_type
22c35a8c 458 PL_watchaddr
459 PL_watchok)];
36c15d3f 460 }
461
22c35a8c 462# functions from *.sym files
463
549a6b10 464my @syms = ($global_sym, $pp_sym, $globvar_sym);
465
466if ($define{'USE_PERLIO'})
22239a37 467 {
549a6b10 468 push @syms, $perlio_sym;
469 }
470
471for my $syms (@syms)
472 {
473 open (GLOBAL, "<$syms") || die "failed to open $syms: $!\n";
22c35a8c 474 while (<GLOBAL>)
475 {
476 next if (!/^[A-Za-z]/);
477 # Functions have a Perl_ prefix
478 # Variables have a PL_ prefix
479 chomp($_);
4f63d024 480 my $symbol = ($syms =~ /var\.sym$/i ? "PL_" : "");
22c35a8c 481 $symbol .= $_;
482 emit_symbol($symbol) unless exists $skip{$symbol};
483 }
484 close(GLOBAL);
22239a37 485 }
0a753a76 486
22c35a8c 487# variables
0a753a76 488
51371543 489if ($define{'PERL_OBJECT'}) {
43cd9f80 490 for my $f ($perlvars_h, $intrpvar_h, $thrdvar_h) {
51371543 491 my $glob = readvar($f, sub { "Perl_" . $_[1] . $_[2] . "_ptr" });
492 emit_symbols $glob;
493 }
494}
495else {
496 unless ($define{'PERL_GLOBAL_STRUCT'}) {
549a6b10 497 my $glob = readvar($perlvars_h);
51371543 498 emit_symbols $glob;
499 }
500 unless ($define{'MULTIPLICITY'}) {
549a6b10 501 my $glob = readvar($intrpvar_h);
51371543 502 emit_symbols $glob;
503 }
504
505 unless ($define{'MULTIPLICITY'} || $define{'USE_THREADS'}) {
549a6b10 506 my $glob = readvar($thrdvar_h);
51371543 507 emit_symbols $glob;
508 }
509}
0a753a76 510
549a6b10 511sub try_symbol {
512 my $symbol = shift;
22239a37 513
549a6b10 514 return if $symbol !~ /^[A-Za-z]/;
515 return if $symbol =~ /^\#/;
516 $symbol =~s/\r//g;
517 chomp($symbol);
43cd9f80 518 return if exists $skip{$symbol};
549a6b10 519 emit_symbol($symbol);
3e3baf6d 520}
0a753a76 521
549a6b10 522while (<DATA>) {
523 try_symbol($_);
ac4c12e7 524}
525
549a6b10 526if ($PLATFORM eq 'win32') {
527 foreach my $symbol (qw(
d28b3ca3 528boot_DynaLoader
549a6b10 529Perl_getTHR
530Perl_init_os_extras
531Perl_setTHR
d55594ae 532Perl_thread_create
549a6b10 533Perl_win32_init
534RunPerl
43cd9f80 535GetPerlInterpreter
536SetPerlInterpreter
68dc0745 537win32_errno
96e4d5b1 538win32_environ
68dc0745 539win32_stdin
540win32_stdout
96e4d5b1 541win32_stderr
68dc0745 542win32_ferror
543win32_feof
544win32_strerror
545win32_fprintf
546win32_printf
547win32_vfprintf
96e4d5b1 548win32_vprintf
68dc0745 549win32_fread
550win32_fwrite
551win32_fopen
552win32_fdopen
553win32_freopen
554win32_fclose
555win32_fputs
556win32_fputc
557win32_ungetc
558win32_getc
559win32_fileno
560win32_clearerr
561win32_fflush
562win32_ftell
563win32_fseek
564win32_fgetpos
565win32_fsetpos
566win32_rewind
567win32_tmpfile
568win32_abort
569win32_fstat
96e4d5b1 570win32_stat
68dc0745 571win32_pipe
572win32_popen
573win32_pclose
e24c7c18 574win32_rename
68dc0745 575win32_setmode
96e4d5b1 576win32_lseek
577win32_tell
68dc0745 578win32_dup
579win32_dup2
96e4d5b1 580win32_open
581win32_close
582win32_eof
68dc0745 583win32_read
584win32_write
3e3baf6d 585win32_spawnvp
5aabfad6 586win32_mkdir
587win32_rmdir
588win32_chdir
c90c0ff4 589win32_flock
eb62e965 590win32_execv
6890e559 591win32_execvp
54310121 592win32_htons
593win32_ntohs
594win32_htonl
595win32_ntohl
596win32_inet_addr
597win32_inet_ntoa
598win32_socket
599win32_bind
600win32_listen
601win32_accept
602win32_connect
603win32_send
604win32_sendto
605win32_recv
606win32_recvfrom
607win32_shutdown
3a25acb4 608win32_closesocket
54310121 609win32_ioctlsocket
610win32_setsockopt
611win32_getsockopt
612win32_getpeername
613win32_getsockname
614win32_gethostname
615win32_gethostbyname
616win32_gethostbyaddr
617win32_getprotobyname
618win32_getprotobynumber
619win32_getservbyname
620win32_getservbyport
621win32_select
622win32_endhostent
623win32_endnetent
624win32_endprotoent
625win32_endservent
626win32_getnetent
627win32_getnetbyname
628win32_getnetbyaddr
629win32_getprotoent
630win32_getservent
631win32_sethostent
632win32_setnetent
633win32_setprotoent
634win32_setservent
ad2e33dc 635win32_getenv
ac5c734f 636win32_putenv
84902520 637win32_perror
638win32_setbuf
639win32_setvbuf
640win32_flushall
641win32_fcloseall
642win32_fgets
643win32_gets
644win32_fgetc
645win32_putc
646win32_puts
647win32_getchar
648win32_putchar
649win32_malloc
650win32_calloc
651win32_realloc
652win32_free
f3986ebb 653win32_sleep
654win32_times
655win32_alarm
65e48ea9 656win32_open_osfhandle
657win32_get_osfhandle
f998180f 658win32_ioctl
ad0751ec 659win32_utime
b2af26b1 660win32_uname
22fae026 661win32_wait
f55ee38a 662win32_waitpid
663win32_kill
22fae026 664win32_str_os_error
ce2e26e5 665win32_opendir
666win32_readdir
667win32_telldir
668win32_seekdir
669win32_rewinddir
670win32_closedir
8ac9c18d 671win32_longpath
0cb96387 672win32_os_id
25dbdbbc 673win32_crypt
549a6b10 674 )) {
675 try_symbol($symbol);
676 }
677}
3cfae81b 678elsif ($PLATFORM eq 'os2') {
679 open MAP, 'miniperl.map' or die 'Cannot read miniperl.map';
680 /^\s*[\da-f:]+\s+(\w+)/i and $mapped{$1}++ foreach <MAP>;
681 close MAP or die 'Cannot close miniperl.map';
682
0eb4ebd7 683 @missing = grep { !exists $mapped{$_} and !exists $bincompat5005{$_} }
684 keys %export;
3cfae81b 685 delete $export{$_} foreach @missing;
686}
22239a37 687
549a6b10 688# Now all symbols should be defined because
689# next we are going to output them.
690
691foreach my $symbol (sort keys %export)
692 {
693 output_symbol($symbol);
694 }
695
696sub emit_symbol {
697 my $symbol = shift;
698 chomp($symbol);
699 $export{$symbol} = 1;
700}
701
702sub output_symbol {
703 my $symbol = shift;
4cb71bb6 704 $symbol = $bincompat5005{$symbol}
705 if $define{PERL_BINCOMPAT_5005} and $symbol =~ /^($bincompat5005)$/;
549a6b10 706 if ($PLATFORM eq 'win32') {
549a6b10 707 $symbol = "_$symbol" if $CCTYPE eq 'BORLAND';
520c758a 708 print "\t$symbol\n";
549a6b10 709# XXX: binary compatibility between compilers is an exercise
710# in frustration :-(
711# if ($CCTYPE eq "BORLAND") {
712# # workaround Borland quirk by exporting both the straight
713# # name and a name with leading underscore. Note the
714# # alias *must* come after the symbol itself, if both
715# # are to be exported. (Linker bug?)
716# print "\t_$symbol\n";
717# print "\t$symbol = _$symbol\n";
718# }
719# elsif ($CCTYPE eq 'GCC') {
720# # Symbols have leading _ whole process is $%@"% slow
721# # so skip aliases for now
722# nprint "\t$symbol\n";
723# }
724# else {
725# # for binary coexistence, export both the symbol and
726# # alias with leading underscore
727# print "\t$symbol\n";
728# print "\t_$symbol = $symbol\n";
729# }
3cfae81b 730 } elsif ($PLATFORM eq 'os2') {
731 print qq( "$symbol"\n);
549a6b10 732 } elsif ($PLATFORM eq 'aix') {
733 print "$symbol\n";
734 }
735}
736
7371;
738__DATA__
739# extra globals not included above.
740perl_alloc
741perl_construct
742perl_destruct
743perl_free
744perl_parse
745perl_run