Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.91k stars 542 forks source link

DTrace Enabled Build Fails (missing object files) - Patch Supplied #10239

Closed p5pRT closed 13 years ago

p5pRT commented 14 years ago

Migrated from rt.perl.org#73630 (status was 'resolved')

Searchable as RT73630$

p5pRT commented 14 years ago

From pdb_ml@yahoo.com.au

Platform : Solaris 10 Update 6 64-bit X86 with GCC 4.1.2

Greetings All\,

I have just tried to build perl5 from the git repo (faa13f98b5438d7d2712a2578895829787af9ff5) for Solaris with DTrace Support enabled. The build failed due to missing dependencies. It appears that the required object files are not yet built at the stage of the build where perldtrace.o is generated from perldtrace.d.

I tried adding dependencies to perldtrace.o to build the required objects before perldtrace.o\, but that was not successful (see below).

The second approach was simply to remove those object from the list of files passed to the 'dtrace -G' command. This approach works and all test harness pass :-)

Is it the absolute right way to do this? Honestly I can't be sure\, dtrace does NOT seem to modify any existing object files passed to it\, but take notice of the ELF CLASS of the objects passed to it\, saving us passing -32 or -64 explicitly.

The diff for your evaluation​:

---8\<---

Inline Patch ```diff diff --git a/Makefile.SH b/Makefile.SH index 1040b71..1742002 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -478,8 +478,8 @@ obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$ obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OB mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) -ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) -obj = $(ndt_obj) $(DTRACE_O) +ndt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +obj = $(obj0) $(ndt_obj) $(DTRACE_O) perltoc_pod_prereqs = extra.pods pod/perlapi.pod pod/perldelta.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) ---8<--- ```

Regards, Peter Bray Sydney\, Australia

PS​: Additionally\, the following may assist people trying to compile perl 5.12.0 on Solaris 10 with GCC 4.1.2 or possibly other versions of GCC. The generated header file\, perldtrace.h\, includes an #if _DTRACE_VERSION\, which is used to determine if DTrace is available and its major version number. It gets this via '#include \<unistd.h>'\, which gets the real definition from \<sys/feature_tests.h>. Unfortunately\, my version of GCC has a GCC 'fixincludes' generated version of \<sys/feature_tests.h> which misses that definition. (Probably because GCC was build on S10U3 and I'm now running S10U6). Regardless\, a successful compile with DTrace enabled did not produce any DTrace functionality. Adding -Accflags='-D_DTRACE_VERSION=1' to the Configure line is a temporary workaround (ok hack) which worked for me.

Details for the interested

% git show

commit faa13f98b5438d7d2712a2578895829787af9ff5 Author​: Jesse Vincent \jesse@&#8203;bestpractical\.com Date​: Mon Mar 15 19​:00​:11 2010 +0000

[Deleted irrelevant info]

% PKGS_PREFIX=/pkgs/64-bit % PKGS_RELEASE=/pkgs/64-bit/release % ./Configure -des -Dcc=gcc -Dprefix=${PKGS_RELEASE}/perl-5.12.0-faa13f98b5438d7d2712a2578895829787af9ff5 -Dotherlibdirs=${PKGS_PREFIX}/lib/perl​:/pkgs/lib/perl -Dlocincpth='${PKGS_PREFIX}/include' -Dloclibpth='${PKGS_PREFIX}/lib/amd64​:${PKGS_PREFIX}/lib' -Doptimize='-g -O2' -Dperladmin='software@​localhost' -Dcf_email='software@​localhost' -Uinstallusrbinperl -Dusethreads -Duseshrplib -Dusedtrace

[Deleted irrelevant info]

% gmake

[Deleted irrelevant info]

/usr/sbin/dtrace -G -s perldtrace.d -o perldtrace.o op.o perl.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o dtrace​: failed to link script perldtrace.d​: failed to open op.o​: No such file or directory gmake​: *** [perldtrace.o] Error 1

[ Checking files via 'ls' ]

% nocorrect ls op.o perl.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o

op.o​: No such file or directory perl.o​: No such file or directory av.o gv.o numeric.o pp_ctl.o regcomp.o toke.o deb.o hv.o pad.o pp_hot.o regexec.o universal.o doio.o locale.o perlapi.o pp_pack.o run.o utf8.o doop.o mathoms.o perlio.o pp_sort.o scope.o util.o dump.o mg.o perly.o pp_sys.o sv.o globals.o mro.o pp.o reentr.o taint.o

[ The relevant sections of the Makefile ]

% ggrep -B 6 -A 1 ndt Makefile obj0 = op$(OBJ_EXT) perl$(OBJ_EXT) obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)

mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O)

-- $(DTRACE_H)​: perldtrace.d   $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H)

mydtrace.h​: $(DTRACE_H)

$(DTRACE_O)​: perldtrace.d   $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj)

ATTEMPT 1​: Make $(obj0) (ie op.o and perl.o) build before perldtrace.o

  OLD​: $(DTRACE_O)​: perldtrace.d   NEW​: $(DTRACE_O)​: perldtrace.d $(obj0)

`sh cflags "optimize='-g -O2'" op.o` -fPIC op.c   CCCMD = gcc -DPERL_CORE -c -D_REENTRANT -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -m64 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -O2 -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat gmake​: Circular lib/Config_git.pl \<- miniperl dependency dropped. LD_LIBRARY_PATH=/tmp/64-bit/perl5​:/pkgs/64-bit/lib​:/pkgs/64-bit/lib/amd64 ./miniperl -Ilib make_patchnum.pl /bin/sh​: ./miniperl​: not found gmake​: *** [lib/Config_git.pl] Error 1

ATTEMPT 2​: Remove $(obj0) from ndt_obj (previous changes reverted first)

  OLD​: ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS)   OLD​: obj = $(ndt_obj) $(DTRACE_O)

  NEW​: ndt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)   NEW​: obj = $(obj0) $(ndt_obj) $(DTRACE_O)

  % gmake distclean   % vi Makefile.SH # See Above   % # Run 'Configure' as above   % gmake # Completes successfully   % gmake test # Completes successfully

p5pRT commented 14 years ago

pdb_ml@yahoo.com.au - Status changed from 'new' to 'open'

p5pRT commented 14 years ago

pdb_ml@yahoo.com.au - Status changed from 'open' to 'new'

p5pRT commented 14 years ago

From jpl@plosquare.com

I just ran into the same issue and checked that the proposed solution works. However\, it is not ideal because it breaks build if dtrace probes are ever added to perl.c and op.c in the future. In fact\, an example of such probes was already supplied by Sven Dowideit​: http​://fosiki.com/blog/2008/02/15/blead-perl-dtrace-probes/

A proper solution must take two factors into account​: 1) when dtrace -G is first run\, it must work over perlmini.o and opmini.o\, as perl.o and op.o do not yet exist at that time (this problem is what the original poster's fix addresses) 2) a second pass of dtrace -G is also necessary because perl.o and op.o are apparently recreated before the main perl executable is built; during this second pass dtrace must work over perl.o and op.o rather than perlmini.o and opmini.o

If either (1) or (2) is ignored and one of perl.c or op.c contains dtrace probes\, then there will be complaints from the linker about undefined dtrace symbols (while building miniperl and/or building perl executable).

Unfortunately\, I'm not fluent enough with make to provide an elegant solution myself. Hopefully this will help put someone on the right track.

p5pRT commented 13 years ago

From @dgl

From​: David Leadbeater \dgl@&#8203;dgl\.cx

As outlined in the RT ticket due to miniperl's dependencies differing to the final perl binary dtrace -G needs to be called separately for each.

Build tested on Mac OS X 10.6\, Solaris 11 and Scientific Linux with SystemTap from git.

(Solaris is the only system I have access to where DTRACE_O actually gets defined. Neither the dtrace binary on OS X nor SystemTap's dtrace compatibility layer accept the -G option.)


Makefile.SH | 13 ++++++++++--- 1 files changed\, 10 insertions(+)\, 3 deletions(-)

Inline Patch ```diff diff --git a/Makefile.SH b/Makefile.SH index 9d8df27..a34416a 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -215,11 +215,13 @@ done dtrace_h='' dtrace_o='' +minidtrace_o='' case "$usedtrace" in define|true) dtrace_h='perldtrace.h' $dtrace -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ - && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' + && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' \ + && minidtrace_o='miniperldtrace$(OBJ_EXT)' ;; esac @@ -332,6 +334,7 @@ VALGRIND=valgrind DTRACE = $dtrace DTRACE_H = $dtrace_h DTRACE_O = $dtrace_o +MINIDTRACE_O = $minidtrace_o FIRSTMAKEFILE = $firstmakefile @@ -454,7 +457,8 @@ obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$ obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) -mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) +minindt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O) @@ -742,9 +746,12 @@ mydtrace.h: $(DTRACE_H) case "$dtrace_o" in ?*) $spitshell >>$Makefile <<'!NO!SUBS!' -$(DTRACE_O): perldtrace.d +$(DTRACE_O): perldtrace.d $(ndt_obj) $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj) +$(MINIDTRACE_O): perldtrace.d $(minindt_obj) + $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) + !NO!SUBS! ;; esac -- 1.7.3.3 ```
p5pRT commented 13 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 13 years ago

From @dgl

Seems my previous attempt didn't get Cc'd to p5p correctly.

On Tue Dec 21 16​:58​:13 2010\, dgl wrote​:

From​: David Leadbeater \dgl@&#8203;dgl\.cx

As outlined in the RT ticket due to miniperl's dependencies differing to the final perl binary dtrace -G needs to be called separately for each.

Build tested on Mac OS X 10.6\, Solaris 11 and Scientific Linux with SystemTap from git.

(Solaris is the only system I have access to where DTRACE_O actually gets defined. Neither the dtrace binary on OS X nor SystemTap's dtrace compatibility layer accept the -G option.) --- Makefile.SH | 13 ++++++++++--- 1 files changed\, 10 insertions(+)\, 3 deletions(-)

diff --git a/Makefile.SH b/Makefile.SH index 9d8df27..a34416a 100755 --- a/Makefile.SH +++ b/Makefile.SH @​@​ -215\,11 +215\,13 @​@​ done

dtrace_h='' dtrace_o='' +minidtrace_o='' case "$usedtrace" in define|true) dtrace_h='perldtrace.h' $dtrace -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ - && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' + && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' \ + && minidtrace_o='miniperldtrace$(OBJ_EXT)' ;; esac

@​@​ -332\,6 +334\,7 @​@​ VALGRIND=valgrind DTRACE = $dtrace DTRACE_H = $dtrace_h DTRACE_O = $dtrace_o +MINIDTRACE_O = $minidtrace_o

FIRSTMAKEFILE = $firstmakefile

@​@​ -454\,7 +457\,8 @​@​ obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$ obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)

-mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) +minindt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O)

@​@​ -742\,9 +746\,12 @​@​ mydtrace.h​: $(DTRACE_H) case "$dtrace_o" in ?*) $spitshell >>$Makefile \<\<'!NO!SUBS!' -$(DTRACE_O)​: perldtrace.d +$(DTRACE_O)​: perldtrace.d $(ndt_obj) $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj)

+$(MINIDTRACE_O)​: perldtrace.d $(minindt_obj) + $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) + !NO!SUBS! ;; esac

p5pRT commented 13 years ago

From @cpansprout

On Tue Dec 21 16​:58​:13 2010\, dgl wrote​:

From​: David Leadbeater \dgl@&#8203;dgl\.cx

As outlined in the RT ticket due to miniperl's dependencies differing to the final perl binary dtrace -G needs to be called separately for each.

Build tested on Mac OS X 10.6\, Solaris 11 and Scientific Linux with SystemTap from git.

(Solaris is the only system I have access to where DTRACE_O actually gets defined. Neither the dtrace binary on OS X nor SystemTap's dtrace compatibility layer accept the -G option.) --- Makefile.SH | 13 ++++++++++--- 1 files changed\, 10 insertions(+)\, 3 deletions(-)

diff --git a/Makefile.SH b/Makefile.SH index 9d8df27..a34416a 100755 --- a/Makefile.SH +++ b/Makefile.SH @​@​ -215\,11 +215\,13 @​@​ done

dtrace_h='' dtrace_o='' +minidtrace_o='' case "$usedtrace" in define|true) dtrace_h='perldtrace.h' $dtrace -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ - && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' + && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' \ + && minidtrace_o='miniperldtrace$(OBJ_EXT)' ;; esac

@​@​ -332\,6 +334\,7 @​@​ VALGRIND=valgrind DTRACE = $dtrace DTRACE_H = $dtrace_h DTRACE_O = $dtrace_o +MINIDTRACE_O = $minidtrace_o

FIRSTMAKEFILE = $firstmakefile

@​@​ -454\,7 +457\,8 @​@​ obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$ obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)

-mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) +minindt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O)

@​@​ -742\,9 +746\,12 @​@​ mydtrace.h​: $(DTRACE_H) case "$dtrace_o" in ?*) $spitshell >>$Makefile \<\<'!NO!SUBS!' -$(DTRACE_O)​: perldtrace.d +$(DTRACE_O)​: perldtrace.d $(ndt_obj) $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj)

+$(MINIDTRACE_O)​: perldtrace.d $(minindt_obj) + $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) + !NO!SUBS! ;; esac

Thank you. Applied as 3d450a5.

p5pRT commented 13 years ago

From [Unknown Contact. See original ticket]

On Tue Dec 21 16​:58​:13 2010\, dgl wrote​:

From​: David Leadbeater \dgl@&#8203;dgl\.cx

As outlined in the RT ticket due to miniperl's dependencies differing to the final perl binary dtrace -G needs to be called separately for each.

Build tested on Mac OS X 10.6\, Solaris 11 and Scientific Linux with SystemTap from git.

(Solaris is the only system I have access to where DTRACE_O actually gets defined. Neither the dtrace binary on OS X nor SystemTap's dtrace compatibility layer accept the -G option.) --- Makefile.SH | 13 ++++++++++--- 1 files changed\, 10 insertions(+)\, 3 deletions(-)

diff --git a/Makefile.SH b/Makefile.SH index 9d8df27..a34416a 100755 --- a/Makefile.SH +++ b/Makefile.SH @​@​ -215\,11 +215\,13 @​@​ done

dtrace_h='' dtrace_o='' +minidtrace_o='' case "$usedtrace" in define|true) dtrace_h='perldtrace.h' $dtrace -G -s perldtrace.d -o perldtrace.tmp >/dev/null 2>&1 \ - && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' + && rm -f perldtrace.tmp && dtrace_o='perldtrace$(OBJ_EXT)' \ + && minidtrace_o='miniperldtrace$(OBJ_EXT)' ;; esac

@​@​ -332\,6 +334\,7 @​@​ VALGRIND=valgrind DTRACE = $dtrace DTRACE_H = $dtrace_h DTRACE_O = $dtrace_o +MINIDTRACE_O = $minidtrace_o

FIRSTMAKEFILE = $firstmakefile

@​@​ -454\,7 +457\,8 @​@​ obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$ obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT)

-mini_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) $(DTRACE_O) +minindt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +mini_obj = $(minindt_obj) $(MINIDTRACE_O) ndt_obj = $(obj0) $(obj1) $(obj2) $(obj3) $(ARCHOBJS) obj = $(ndt_obj) $(DTRACE_O)

@​@​ -742\,9 +746\,12 @​@​ mydtrace.h​: $(DTRACE_H) case "$dtrace_o" in ?*) $spitshell >>$Makefile \<\<'!NO!SUBS!' -$(DTRACE_O)​: perldtrace.d +$(DTRACE_O)​: perldtrace.d $(ndt_obj) $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj)

+$(MINIDTRACE_O)​: perldtrace.d $(minindt_obj) + $(DTRACE) -G -s perldtrace.d -o $(MINIDTRACE_O) $(minindt_obj) + !NO!SUBS! ;; esac

Thank you. Applied as 3d450a5.

p5pRT commented 13 years ago

@cpansprout - Status changed from 'open' to 'resolved'

p5pRT commented 13 years ago

From @rjbs

* Father Chrysostomos via RT \perlbug\-comment@&#8203;perl\.org [2011-01-02T17​:50​:49]

On Tue Dec 21 16​:58​:13 2010\, dgl wrote​:

From​: David Leadbeater \dgl@&#8203;dgl\.cx

As outlined in the RT ticket due to miniperl's dependencies differing to the final perl binary dtrace -G needs to be called separately for each. [ ... ]

Thank you. Applied as 3d450a5.

This has two votes to cherry-pick\, one of them mine. With this commit\, I can compile -Dusedtrace on Solaris and all tests pass. Without this commit\, I cannot. If a third could please review and vote on this\, it would make possible the use of a dtrace-enabled Perl on Solaris\, which would be a great fix.

-- rjbs

p5pRT commented 13 years ago

From @rjbs

* Ricardo Signes \perl\.p5p@&#8203;rjbs\.manxome\.org [2011-01-04T10​:18​:51]

This has two votes to cherry-pick\, one of them mine. With this commit\, I can compile -Dusedtrace on Solaris and all tests pass. Without this commit\, I cannot. If a third could please review and vote on this\, it would make possible the use of a dtrace-enabled Perl on Solaris\, which would be a great fix.

Thanks\, applied as 05571b730

-- rjbs

p5pRT commented 13 years ago

From pdb_ml@yahoo.com.au

As the original reporter I can also verify the committed patch "WORKS FOR ME". Sorry for the delay in testing (I've been unwell).

Test Platform Updated to Solaris 10 Update 9 64-bit X86 with GCC 4.1.2