Op een zonnige winterdag (Friday 28 February 2003 14:33), schreef Gurusamy Sarathy: > On Fri, 28 Feb 2003 10:44:54 GMT, Nicholas Clark wrote: > >On Fri, Feb 28, 2003 at 03:08:13AM +0100, Abe Timmerman wrote: .... > >> perl.exp(.edata+0xff4):fake: undefined reference to `Perl_sv_setsv_cow' > >> dmake.exe: Error code 1, while making '..\perl59.dll' > > > >That's in embed.fnc like this: > > > >#ifdef PERL_COPY_ON_WRITE > >Ap |SV* |sv_setsv_cow |SV* dsv|SV* ssv > >#endif > > > >Why isn't it working? > > That's not sufficient on platforms that need to be told which > symbols actually need to be exported (aix/os2/win*/macos/etc). > makedef.pl assumes by default that all symbols mentioned in > embed.fnc need exporting, so you need to tell it otherwise > since the above symbol is only conditionally available. Should this be documented somewhere (perlhack?) > It > would be nice to make makedef.pl smarter (i.e. automatically > parse the #ifdefs in embed.fnc) but something like the > attached patch should take you past the above error. The > patch is completely untested (sorry, ENOTUIT). Thanks anyway, much appreciated. > -----------------------------------8<----------------------------------- > Index: perl/makedef.pl > --- perl/makedef.pl.~1~ Fri Feb 28 05:27:52 2003 > +++ perl/makedef.pl Fri Feb 28 05:27:52 2003 > @@ -560,6 +560,12 @@ > )]; > } > > +unless ($define{'PERL_COPY_ON_WRITE'}) { > + skip_symbols [qw( > + Perl_sv_setsv_cow > + )]; > +} > + > unless ($define{'PERL_FLEXIBLE_EXCEPTIONS'}) { > skip_symbols [qw( > PL_protect > End of Patch. Yes. that gets me further! Next problem (is this still COW related?) g++ -o ..\..\..\lib\auto\B\C\C.dll -Wl,--base-file -Wl,dll.base -mdll -g -L"c:\o pt\perl590\lib\CORE" -L"C:\MinGW\lib" C.o -Wl,--image-base,0x2f2e0000 ..\..\..\lib\CORE\libperl59.a -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr -lwinmm -lversion -lodbc32 dll.exp C.o: In function `my_runops': C:/bleadperl/perl-current/ext/B/C/C.xs:46: undefined reference to `Perl_sv_free2' dmake.exe: Error code 1, while making '..\..\..\lib\auto\B\C\C.dll' dmake.exe: Error code 255, while making 'subdirs' Unsuccessful make(B): code=65280 at buildext.pl line 98. dmake.exe: Error code 2, while making 'Extensions' Good luck, Abe -- Adding a -w warning for the "pseudohashes are going away, repent and give away your all wordly possessions" to 5.8.1 is okay, but what I don't understand is why Sarathy is thinking people would be using -w that much more than they would be reading the 5.8.0 announcement? :-) -- Jarkko Hietaniemi on p5p @ 2002-09-06Thread Previous | Thread Next