make OPTIMIZE=-g is not enough on OS/2 to debug an extension, since some optimization flags are put on the linker line too. This patch puts $(OPTIMIZE) on the DLL link line - but to minimize problems, this is done on OS/2 only. Simultaneously "strip" flag '-s` is removed from LDDLFLAGS (since it is already present on OPTIMIZE). Enjoy, Ilya --- ./lib/ExtUtils/MM_Unix.pm-pre-opt Mon Jun 25 19:36:24 2001 +++ ./lib/ExtUtils/MM_Unix.pm Tue Jun 26 10:51:36 2001 @@ -1074,11 +1074,12 @@ sub dynamic_lib { my($ldfrom) = '$(LDFROM)'; $armaybe = 'ar' if ($^O eq 'dec_osf' and $armaybe eq ':'); my(@m); + my $ld_opt = $Is_OS2 ? '$(OPTIMIZE) ' : ''; # Useful on other systems too? push(@m,' # This section creates the dynamically loadable $(INST_DYNAMIC) # from $(OBJECT) and possibly $(MYEXTLIB). ARMAYBE = '.$armaybe.' -OTHERLDFLAGS = '.$otherldflags.' +OTHERLDFLAGS = '.$ld_opt.$otherldflags.' INST_DYNAMIC_DEP = '.$inst_dynamic_dep.' $(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)/.exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) --- ./hints/os2.sh-pre-opt Mon Jun 25 02:43:20 2001 +++ ./hints/os2.sh Tue Jun 26 11:15:40 2001 @@ -169,7 +169,7 @@ else else d_fork='undef' fi - lddlflags="-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2 $ld_dll_optimize" + lddlflags="-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2" # Recursive regmatch may eat 2.5M of stack alone. ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000 -Zlinker /e:2' if [ $emxcrtrev -ge 50 ]; then --- ./os2/Makefile.SHs-pre-opt Mon Jun 25 18:42:46 2001 +++ ./os2/Makefile.SHs Tue Jun 26 10:55:58 2001 @@ -40,7 +40,7 @@ AOUT_LIBPERL_DLL = libperl_dll$aout_lib_ AOUT_CCCMD_DLL = \$(CC) -DDOSISH -DOS2=2 -DEMBED -I. -DPACK_MALLOC -DDEBUGGING_MSTATS -DTWO_POT_OPTIMIZE -DPERL_EMERGENCY_SBRK AOUT_CLDFLAGS_DLL = -Zexe -Zmt -Zcrtdll -Zstack 32000 -LD_OPT = $optimize +LD_OPT = \$(OPTIMIZE) PERL_DLL_BASE = perl$dll_post PERL_DLL = \$(PERL_DLL_BASE)\$(DLSUFFIX)