develooper Front page | perl.perl5.porters | Postings from February 2003

Re: MSWin32 seems lost again (18785)

Thread Previous | Thread Next
From:
Abe Timmerman
Date:
February 28, 2003 13:59
Subject:
Re: MSWin32 seems lost again (18785)
Message ID:
200302282255.52534.abe@ztreet.demon.nl
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-06


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About