+# if defined(STAP_PROBE_ADDR) && !defined(DEBUGGING)
+
+/* SystemTap 1.2 uses a construct that chokes on passing a char array
+ * as a char *, in this case hek_key in struct hek. Workaround it
+ * with a temporary.
+ */
+
+# define ENTRY_PROBE(func, file, line, stash) \
+ if (PERL_SUB_ENTRY_ENABLED()) { \
+ const char *tmp_func = func; \
+ PERL_SUB_ENTRY(tmp_func, file, line, stash); \
+ }
+
+# define RETURN_PROBE(func, file, line, stash) \
+ if (PERL_SUB_RETURN_ENABLED()) { \
+ const char *tmp_func = func; \
+ PERL_SUB_RETURN(tmp_func, file, line, stash); \
+ }
+
+# define LOADING_FILE_PROBE(name) \
+ if (PERL_LOADING_FILE_ENABLED()) { \
+ const char *tmp_name = name; \
+ PERL_LOADING_FILE(tmp_name); \
+ }
+
+# define LOADED_FILE_PROBE(name) \
+ if (PERL_LOADED_FILE_ENABLED()) { \
+ const char *tmp_name = name; \
+ PERL_LOADED_FILE(tmp_name); \
+ }
+
+# else
+
+# define ENTRY_PROBE(func, file, line, stash) \
+ if (PERL_SUB_ENTRY_ENABLED()) { \
+ PERL_SUB_ENTRY(func, file, line, stash); \
+ }
+
+# define RETURN_PROBE(func, file, line, stash) \
+ if (PERL_SUB_RETURN_ENABLED()) { \
+ PERL_SUB_RETURN(func, file, line, stash); \
+ }
+
+# define LOADING_FILE_PROBE(name) \
+ if (PERL_LOADING_FILE_ENABLED()) { \
+ PERL_LOADING_FILE(name); \
+ }
+
+# define LOADED_FILE_PROBE(name) \
+ if (PERL_LOADED_FILE_ENABLED()) { \
+ PERL_LOADED_FILE(name); \
+ }
+
+# endif
+
+# define OP_ENTRY_PROBE(name) \
+ if (PERL_OP_ENTRY_ENABLED()) { \
+ PERL_OP_ENTRY(name); \