summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2011-07-20 20:23:15 +1000
committerTony Cook <tony@develop-help.com>2011-08-09 19:03:20 +1000
commit12b81ca50a3ad3c06c786138add2f964cf24acb6 (patch)
tree8067e05f4af824241fd4781c7408f56d760bfe05
parent2186be13a01ba687b2fe25f0d5c898031257c2b5 (diff)
downloadperl-12b81ca50a3ad3c06c786138add2f964cf24acb6.tar.gz
work around a bug in dtrace - it strips const from function parameters
With usedtrace this caused: - build failures under g++ (OS X) - const qualification warnings with gcc (OS X) The workaround simply adds const to char * parameters if not already present. The bug in dtrace was apparently reported to Sun in 2006: http://opensolaris.org/jive/thread.jspa?threadID=53810 Mozilla ran into the same problem: https://bugzilla.mozilla.org/show_bug.cgi?id=593483
-rwxr-xr-xMakefile.SH5
-rw-r--r--perldtrace.d4
2 files changed, 6 insertions, 3 deletions
diff --git a/Makefile.SH b/Makefile.SH
index 714d78c202..b1045624d9 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -749,8 +749,11 @@ else
case "$dtrace_h" in
?*)
$spitshell >>$Makefile <<'!NO!SUBS!'
+# dtrace dicards const qualifiers from arguments, put them back
$(DTRACE_H): perldtrace.d
- $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H)
+ $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H).in
+ sed -e '/const/!s/char \*/const char */g' $(DTRACE_H).in >$(DTRACE_H)
+ $(RMS) $(DTRACE_H).in
mydtrace.h: $(DTRACE_H)
diff --git a/perldtrace.d b/perldtrace.d
index f87a27adaf..95eb0664da 100644
--- a/perldtrace.d
+++ b/perldtrace.d
@@ -4,8 +4,8 @@
*/
provider perl {
- probe sub__entry(char *, char *, int, char *);
- probe sub__return(char *, char *, int, char *);
+ probe sub__entry(const char *, const char *, int, const char *);
+ probe sub__return(const char *, const char *, int, const char *);
probe phase__change(const char *, const char *);
};