Skip Menu |

This queue is for tickets about the DevelOpProf CPAN distribution.

Report information
The Basics
Id: 29013
Status: open
Priority: 0/
Queue: DevelOpProf

People
Owner: Nobody in particular
Requestors: dmuey [...] cpan.org
Cc:
AdminCc:

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



Fedora Core release 6 (Zod) (perl 5.8.8) Mac OS X ( perl 5.8.6 ) root@fc6edge-2 [~]# tar xzf DevelOpProf-0.2.tar.gz root@fc6edge-2 [~]# cd DevelOpProf-0.2 root@fc6edge-2 [~/DevelOpProf-0.2]# perl Makefile.PL Writing Makefile for Devel::OpProf root@fc6edge-2 [~/DevelOpProf-0.2]# make cp OpProf.pm blib/lib/Devel/OpProf.pm /usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/ typemap OpProf.xs > OpProf.xsc && mv OpProf.xsc OpProf.c gcc -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after- statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/ include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack- protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic - fasynchronous-unwind-tables -DVERSION=\"0.1\" -DXS_VERSION=\"0.1\" -fPIC "-I/usr/ lib/perl5/5.8.8/i386-linux-thread-multi/CORE" OpProf.c OpProf.xs: In function ‘runops_opprof’: OpProf.xs:29: error: too few arguments to function ‘(*Perl_Top_ptr(pthread_getspecific (*Perl_Gthr_key_ptr(0u))))->op_ppaddr’ OpProf.xs: In function ‘boot_Devel__OpProf’: OpProf.xs:59: warning: assignment from incompatible pointer type make: *** [OpProf.o] Error 1 root@fc6edge-2 [~/DevelOpProf-0.2]# Worked ok on: Linux Mandrake release 7.2 (Odyssey) for i586 (perl 5.6.2) FreeBSD 4.11-STABLE (perl 5.6.2)
Subject: Broken under modern perls
Thanks for a great module! However, this module doesn't compile against modern perls: http://bbbike.radzeit.de/~slaven/cpantestersmatrix.cgi?dist=DevelOpProf+0.2 I attach a patch which makes it work under 5.10. You may want to hack it to be more flexible. Cheers, Leon
diff -r c3844d7255fc OpProf.xs --- a/OpProf.xs Wed Apr 16 08:13:45 2008 +0100 +++ b/OpProf.xs Wed Apr 16 08:43:44 2008 +0100 @@ -10,25 +10,21 @@ #include "perl.h" #include "XSUB.h" -#ifdef PERL_OBJECT -#define CALLOP this->*PL_op -#else -#define CALLOP *PL_op -#endif - static int profiling = 0; static unsigned long *op_count; -static int runops_opprof(void) -{ - dTHR; +int runops_opprof(pTHX) { + dSP; + dVAR; + while ((PL_op = CALL_FPTR(PL_op->op_ppaddr)(aTHX))) { + if (profiling) { + op_count[PL_op->op_type]++; + } + PERL_ASYNC_CHECK(); + } - do { - if (profiling) - op_count[PL_op->op_type]++; - } while (PL_op = (CALLOP->op_ppaddr)(ARGS)); - TAINT_NOT; - return 0; + TAINT_NOT; + return 0; } MODULE = Devel::OpProf PACKAGE = Devel::OpProf
Subject: better patch
From: RURBAN [...] cpan.org
On Wed Apr 16 03:47:22 2008, LBROCARD wrote: Show quoted text
> Thanks for a great module! > However, this module doesn't compile against modern perls: > >
http://bbbike.radzeit.de/~slaven/cpantestersmatrix.cgi?dist=DevelOpProf+0.2 Show quoted text
> > I attach a patch which makes it work under 5.10. You may want to hack it > to be more flexible.
I'd prefer my attached patch. --- DevelOpProf-0.2/OpProf.xs.orig 1998-08-13 10:53:41.000000000 +0000 +++ DevelOpProf-0.2/OpProf.xs 2008-05-25 15:21:08.453125000 +0000 @@ -10,25 +10,20 @@ #include "perl.h" #include "XSUB.h" -#ifdef PERL_OBJECT -#define CALLOP this->*PL_op -#else -#define CALLOP *PL_op -#endif - static int profiling = 0; static unsigned long *op_count; -static int runops_opprof(void) -{ - dTHR; - - do { - if (profiling) - op_count[PL_op->op_type]++; - } while (PL_op = (CALLOP->op_ppaddr)(ARGS)); - TAINT_NOT; - return 0; +static int +runops_opprof(pTHX) { + dTHR; + do { + PERL_ASYNC_CHECK(); + if (profiling) + op_count[PL_op->op_type]++; + } while ((PL_op = CALL_FPTR(PL_op->op_ppaddr)(aTHX))); + + TAINT_NOT; + return 0; } MODULE = Devel::OpProf PACKAGE = Devel::OpProf -- Reini Urban
difforig DevelOpProf-0.2 diff -u DevelOpProf-0.2/OpProf.xs.orig --- DevelOpProf-0.2/OpProf.xs.orig 1998-08-13 10:53:41.000000000 +0000 +++ DevelOpProf-0.2/OpProf.xs 2008-05-25 15:21:08.453125000 +0000 @@ -10,25 +10,20 @@ #include "perl.h" #include "XSUB.h" -#ifdef PERL_OBJECT -#define CALLOP this->*PL_op -#else -#define CALLOP *PL_op -#endif - static int profiling = 0; static unsigned long *op_count; -static int runops_opprof(void) -{ - dTHR; - - do { - if (profiling) - op_count[PL_op->op_type]++; - } while (PL_op = (CALLOP->op_ppaddr)(ARGS)); - TAINT_NOT; - return 0; +static int +runops_opprof(pTHX) { + dTHR; + do { + PERL_ASYNC_CHECK(); + if (profiling) + op_count[PL_op->op_type]++; + } while ((PL_op = CALL_FPTR(PL_op->op_ppaddr)(aTHX))); + + TAINT_NOT; + return 0; } MODULE = Devel::OpProf PACKAGE = Devel::OpProf