This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #130108) generate a dummy dtrace_main.o if perlmain.o doesn't contain probes
authorTony Cook <tony@develop-help.com>
Thu, 17 Nov 2016 11:18:30 +0000 (22:18 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 4 Jan 2017 23:03:13 +0000 (10:03 +1100)
efc4bddfd4 added generating a probes object file for perlmain.o, since
the compiler was generating probes even for unused inline functions.

The default compiler on FreeBSD 11 however doesn't generate probes for
these unused inline functions, and dtrace -G fails because it can't
find any.

So if dtrace fails for perlmain.o generate a dummy object file to
take its place.

Similarly for XS::APItest.

Makefile.SH
ext/XS-APItest/Makefile.PL

index 6c5ec87..6a28383 100755 (executable)
@@ -840,7 +840,11 @@ $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt)
        $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_objs_nodt)
 
 $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
-       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) perlmain$(OBJ_EXT)
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) perlmain$(OBJ_EXT) ||                \
+         ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
+           $(ECHO) >dtrace_main.c &&                                                         \
+           `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&                                          \
+            rm -f dtrace_main.c )
 
 !NO!SUBS!
                ;;
index d46fa64..24078a6 100644 (file)
@@ -59,7 +59,8 @@ sub MY::postamble
 DTRACE_D = ../../perldtrace.d
 
 dtrace\$(OBJ_EXT): \$(DTRACE_D) core\$(OBJ_EXT)
-       $Config{dtrace} -G -s \$(DTRACE_D) -o dtrace\$(OBJ_EXT) core\$(OBJ_EXT)
+       $Config{dtrace} -G -s \$(DTRACE_D) -o dtrace\$(OBJ_EXT) core\$(OBJ_EXT) || \\
+         ( \$(ECHO) >dtrace.c && \$(CCCMD) \$(CCCDLFLAGS) dtrace.c && rm -f dtrace.c )
 POSTAMBLE
 
     return $post;