Skip Menu |
 

Preferred bug tracker

Please visit the preferred bug tracker to report your issue.

This queue is for tickets about the Devel-Cover CPAN distribution.

Report information
The Basics
Id: 31841
Status: open
Priority: 0/
Queue: Devel-Cover

People
Owner: Nobody in particular
Requestors: xanni [...] glasswings.com.au
Cc: jkeenan [...] cpan.org
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.63
Fixed in: (no value)



Subject: Build fails during link under Windows XP
Download (untitled) / with headers
text/plain 3.4k
Devel-Cover-0.63 perl 5.10.0 and perl 5.8.8 MSWin32 (Windows XP Pro SP2) Results of "cpan Devel::Cover" from Strawberry Perl 5.10 (same failure with ActiveState Perl 5.8.8): C:\strawberry\perl\bin\perl.exe C:\strawberry\perl\lib\ExtUtils\xsubpp -typemap C:\strawberry\perl\lib\ExtUtils\typemap -typemap typemap Cover.xs > Cover.xsc && C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e mv Cover.xsc Cover.c gcc -c -IC:\strawberry\c\include -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2 -DVERSION=\"0.63\" -DXS_VERSION=\"0.63\" "-IC:\strawberry\perl\lib\CORE" Cover.c Running Mkbootstrap for Devel::Cover () C:\strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Cover.bs C:\strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Devel::Cover\", 'DLBASE' => 'Cover', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def Cover.def --output-exp dll.exp g++ -o blib\arch\auto\Devel\Cover\Cover.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib" Cover.o -Wl,--image-base,0x31410000 C:\strawberry\perl\lib\CORE\libperl510.a C:\strawberry\c\lib\libmsvcrt.a C:\strawberry\c\lib\libmoldname.a C:\strawberry\c\lib\libkernel32.a C:\strawberry\c\lib\libuser32.a C:\strawberry\c\lib\libgdi32.a C:\strawberry\c\lib\libwinspool.a C:\strawberry\c\lib\libcomdlg32.a C:\strawberry\c\lib\libadvapi32.a C:\strawberry\c\lib\libshell32.a C:\strawberry\c\lib\libole32.a C:\strawberry\c\lib\liboleaut32.a C:\strawberry\c\lib\libnetapi32.a C:\strawberry\c\lib\libuuid.a C:\strawberry\c\lib\libws2_32.a C:\strawberry\c\lib\libmpr.a C:\strawberry\c\lib\libwinmm.a C:\strawberry\c\lib\libversion.a C:\strawberry\c\lib\libodbc32.a C:\strawberry\c\lib\libodbccp32.a dll.exp Cover.o:Cover.c:(.text+0x1d74): undefined reference to `Perl_pp_nextstate' Cover.o:Cover.c:(.text+0x1d9e): undefined reference to `Perl_pp_nextstate' Cover.o:Cover.c:(.text+0x1de4): undefined reference to `Perl_pp_setstate' Cover.o:Cover.c:(.text+0x1e0e): undefined reference to `Perl_pp_setstate' Cover.o:Cover.c:(.text+0x1e54): undefined reference to `Perl_pp_dbstate' Cover.o:Cover.c:(.text+0x1e7e): undefined reference to `Perl_pp_dbstate' Cover.o:Cover.c:(.text+0x1eb9): undefined reference to `Perl_pp_entersub' Cover.o:Cover.c:(.text+0x1ece): undefined reference to `Perl_pp_entersub' Cover.o:Cover.c:(.text+0x1f09): undefined reference to `Perl_pp_cond_expr' Cover.o:Cover.c:(.text+0x1f59): undefined reference to `Perl_pp_and' Cover.o:Cover.c:(.text+0x1fa9): undefined reference to `Perl_pp_andassign' Cover.o:Cover.c:(.text+0x1ff9): undefined reference to `Perl_pp_or' Cover.o:Cover.c:(.text+0x2049): undefined reference to `Perl_pp_orassign' Cover.o:Cover.c:(.text+0x2099): undefined reference to `Perl_pp_dor' Cover.o:Cover.c:(.text+0x20e9): undefined reference to `Perl_pp_dorassign' Cover.o:Cover.c:(.text+0x2139): undefined reference to `Perl_pp_xor' Cover.o:Cover.c:(.text+0x2189): undefined reference to `Perl_pp_require' Cover.o:Cover.c:(.text+0x21d9): undefined reference to `Perl_pp_exec' collect2: ld returned 1 exit status dmake.EXE: Error code 129, while making 'blib\arch\auto\Devel\Cover\Cover.dll' PJCJ/Devel-Cover-0.63.tar.gz C:\strawberry\c\bin\dmake.EXE -- NOT OK Running make test Can't test without successful make Running make install Make had returned bad status, install seems impossible Failed during this command: PJCJ/Devel-Cover-0.63.tar.gz : make NO
Download (untitled) / with headers
text/plain 426b
On Mon Dec 24 00:43:17 2007, xanni wrote: Show quoted text
> Cover.o:Cover.c:(.text+0x1d74): undefined reference to `Perl_pp_nextstate'
[etc] None of the Perl_pp_* opcode functions are part of the external API as defined by embed.fnc and therefore cannot be called from modules on MSWin32 (and AIX). I've attached a patch that calls them indirectly via the PL_ppaddr table, which is part of the exported API. All tests pass with this patch.
Download Cover.xs.diff
text/x-diff 3k
--- Cover.xs.orig 2007-11-16 14:28:07.000000000 -0800 +++ Cover.xs 2008-01-11 11:55:11.120697600 -0800 @@ -925,7 +925,7 @@ dMY_CXT; if (MY_CXT.covering) check_if_collecting(aTHX); if (collecting_here(aTHX)) cover_statement(aTHX); - return Perl_pp_nextstate(aTHX); + return CALL_FPTR(PL_ppaddr[OP_NEXTSTATE])(aTHX); } OP *dc_setstate(pTHX) @@ -933,7 +933,7 @@ dMY_CXT; if (MY_CXT.covering) check_if_collecting(aTHX); if (collecting_here(aTHX)) cover_statement(aTHX); - return Perl_pp_setstate(aTHX); + return CALL_FPTR(PL_ppaddr[OP_SETSTATE])(aTHX); } OP *dc_dbstate(pTHX) @@ -941,49 +941,49 @@ dMY_CXT; if (MY_CXT.covering) check_if_collecting(aTHX); if (collecting_here(aTHX)) cover_statement(aTHX); - return Perl_pp_dbstate(aTHX); + return CALL_FPTR(PL_ppaddr[OP_DBSTATE])(aTHX); } OP *dc_entersub(pTHX) { dMY_CXT; if (MY_CXT.covering) store_return(aTHX); - return Perl_pp_entersub(aTHX); + return CALL_FPTR(PL_ppaddr[OP_ENTERSUB])(aTHX); } OP *dc_cond_expr(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_cond(aTHX); - return Perl_pp_cond_expr(aTHX); + return CALL_FPTR(PL_ppaddr[OP_COND_EXPR])(aTHX); } OP *dc_and(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_and(aTHX); + return CALL_FPTR(PL_ppaddr[OP_AND])(aTHX); } OP *dc_andassign(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_andassign(aTHX); + return CALL_FPTR(PL_ppaddr[OP_ANDASSIGN])(aTHX); } OP *dc_or(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_or(aTHX); + return CALL_FPTR(PL_ppaddr[OP_OR])(aTHX); } OP *dc_orassign(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_orassign(aTHX); + return CALL_FPTR(PL_ppaddr[OP_ORASSIGN])(aTHX); } #if PERL_VERSION > 8 @@ -991,14 +991,14 @@ { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_dor(aTHX); + return CALL_FPTR(PL_ppaddr[OP_DOR])(aTHX); } OP *dc_dorassign(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_dorassign(aTHX); + return CALL_FPTR(PL_ppaddr[OP_DORASSIGN])(aTHX); } #endif @@ -1006,21 +1006,21 @@ { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) cover_logop(aTHX); - return Perl_pp_xor(aTHX); + return CALL_FPTR(PL_ppaddr[OP_XOR])(aTHX); } OP *dc_require(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) store_module(aTHX); - return Perl_pp_require(aTHX); + return CALL_FPTR(PL_ppaddr[OP_REQUIRE])(aTHX); } OP *dc_exec(pTHX) { dMY_CXT; if (MY_CXT.covering && collecting_here(aTHX)) call_report(aTHX); - return Perl_pp_exec(aTHX); + return CALL_FPTR(PL_ppaddr[OP_EXEC])(aTHX); } static int runops_cover(pTHX)
Download (untitled) / with headers
text/plain 526b
On Fri Jan 11 15:03:17 2008, JDB wrote: Show quoted text
> I've attached a patch that calls them indirectly via the PL_ppaddr > table, which is part of the exported API. All tests pass with this patch.
Ok, please ignore the actual patch; it just makes things compile/link again, but wouldn't actually work once REPLACE_OPS is fully implemented. It does show the proper way of fixing things though: you save the old PL_ppaddr[] entries before overwriting them, and then call those using CALL_FPTR() instead of using the non-exported symbols.
CC: undisclosed-recipients: ;
Subject: Re: [rt.cpan.org #31841] Build fails during link under Windows XP
Date: Mon, 21 Jan 2008 19:16:51 +0100
To: JDB via RT <bug-Devel-Cover [...] rt.cpan.org>
From: Paul Johnson <paul [...] pjcj.net>
Download (untitled) / with headers
text/plain 853b
On Fri, Jan 11, 2008 at 04:33:02PM -0500, JDB via RT wrote: Show quoted text
> On Fri Jan 11 15:03:17 2008, JDB wrote:
> > I've attached a patch that calls them indirectly via the PL_ppaddr > > table, which is part of the exported API. All tests pass with this patch.
> > Ok, please ignore the actual patch; it just makes things compile/link > again, but wouldn't actually work once REPLACE_OPS is fully implemented. > > It does show the proper way of fixing things though: you save the old > PL_ppaddr[] entries before overwriting them, and then call those using > CALL_FPTR() instead of using the non-exported symbols.
Thanks for this. I've actually got a patch for something similar checked in and it all seems to work well. (This silly thing is that this code is experimental and isn't even run at the moment.) I'll get a new release out as soon as possible.
Download (untitled) / with headers
text/plain 664b
On Mon Dec 24 00:43:17 2007, xanni wrote: Show quoted text
> Devel-Cover-0.63 > perl 5.10.0 and perl 5.8.8 MSWin32 (Windows XP Pro SP2) > > Results of "cpan Devel::Cover" from Strawberry Perl 5.10 (same failure > with ActiveState Perl 5.8.8):
As you can see from this link at 'cpantesters.org', the current version of Devel::Cover, 1.01, builds successfully on mswin32 on versions of Perl from 5.12.3 to 5.16.3. Since we have received these favorable test results since your original report was filed, I suspect that the problem you reported has been fixed. If it has not, please let us know. Otherwise, I recommend that this ticket be closed. Thank you very much. Jim Keenan


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.