va_start(args, format);
+#ifdef HAVE_DTRACE
if(DTRACE_ERROR_ENABLED()) {
char *dtrace_error_buffer;
zend_vspprintf(&dtrace_error_buffer, 0, format, args);
DTRACE_ERROR(dtrace_error_buffer, error_filename, error_lineno);
efree(dtrace_error_buffer);
}
+#endif /* HAVE_DTRACE */
/* if we don't have a user defined error handler */
#include "zend_API.h"\r
#include "zend_dtrace.h"\r
\r
-#ifdef HAVE_SYS_SDT_H\r
+#ifdef HAVE_DTRACE\r
/* PHP DTrace probes {{{ */\r
static inline char *dtrace_get_executed_filename(TSRMLS_D)\r
{\r
}\r
\r
/* }}} */\r
-#endif\r
+#endif /* HAVE_DTRACE */\r
\r
extern "C" {\r
#endif\r
\r
-#ifdef HAVE_SYS_SDT_H\r
+#ifdef HAVE_DTRACE\r
ZEND_API zend_op_array *(*zend_dtrace_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);\r
ZEND_API void (*zend_dtrace_execute)(zend_op_array *op_array TSRMLS_DC);\r
ZEND_API void (*zend_dtrace_execute_internal)(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC);\r
ZEND_API void dtrace_execute_internal(zend_execute_data *execute_data_ptr, int return_value_used TSRMLS_DC);\r
#include <zend_dtrace_gen.h>\r
\r
-#else\r
-\r
-#define DTRACE_COMPILE_FILE_ENTRY(arg0, arg1)\r
-#define DTRACE_COMPILE_FILE_ENTRY_ENABLED() (0)\r
-#define DTRACE_COMPILE_FILE_RETURN(arg0, arg1)\r
-#define DTRACE_COMPILE_FILE_RETURN_ENABLED() (0)\r
-#define DTRACE_ERROR(arg0, arg1, arg2)\r
-#define DTRACE_ERROR_ENABLED() (0)\r
-#define DTRACE_EXCEPTION_CAUGHT(arg0)\r
-#define DTRACE_EXCEPTION_CAUGHT_ENABLED() (0)\r
-#define DTRACE_EXCEPTION_THROWN(arg0)\r
-#define DTRACE_EXCEPTION_THROWN_ENABLED() (0)\r
-#define DTRACE_EXECUTE_ENTRY(arg0, arg1)\r
-#define DTRACE_EXECUTE_ENTRY_ENABLED() (0)\r
-#define DTRACE_EXECUTE_RETURN(arg0, arg1)\r
-#define DTRACE_EXECUTE_RETURN_ENABLED() (0)\r
-#define DTRACE_FUNCTION_ENTRY(arg0, arg1, arg2, arg3, arg4)\r
-#define DTRACE_FUNCTION_ENTRY_ENABLED() (0)\r
-#define DTRACE_FUNCTION_RETURN(arg0, arg1, arg2, arg3, arg4)\r
-#define DTRACE_FUNCTION_RETURN_ENABLED() (0)\r
-#define DTRACE_REQUEST_SHUTDOWN(arg0, arg1, arg2)\r
-#define DTRACE_REQUEST_SHUTDOWN_ENABLED() (0)\r
-#define DTRACE_REQUEST_STARTUP(arg0, arg1, arg2)\r
-#define DTRACE_REQUEST_STARTUP_ENABLED() (0)\r
-\r
-#endif /* HAVE_SYS_SDT */\r
+#endif /* HAVE_DTRACE */\r
\r
#ifdef __cplusplus\r
}\r
void zend_throw_exception_internal(zval *exception TSRMLS_DC) /* {{{ */
{
+#ifdef HAVE_DTRACE
if (DTRACE_EXCEPTION_THROWN_ENABLED()) {
zstr classname;
char *s_classname;
efree(classname.v);
efree(s_classname);
}
+#endif /* HAVE_DTRACE */
if (exception != NULL) {
zval *previous = EG(exception);
}
ce = Z_OBJCE_P(EG(exception));
+#ifdef HAVE_DTRACE
if (DTRACE_EXCEPTION_CAUGHT_ENABLED()) {
char *s_classname;
int s_classname_len;
DTRACE_EXCEPTION_CAUGHT(s_classname);
efree(s_classname);
}
+#endif /* HAVE_DTRACE */
if (ce != EX_T(opline->op1.u.var).class_entry) {
if (!instanceof_function(ce, EX_T(opline->op1.u.var).class_entry TSRMLS_CC)) {
}
ce = Z_OBJCE_P(EG(exception));
+#ifdef HAVE_DTRACE
if (DTRACE_EXCEPTION_CAUGHT_ENABLED()) {
char *s_classname;
int s_classname_len;
DTRACE_EXCEPTION_CAUGHT(s_classname);
efree(s_classname);
}
+#endif /* HAVE_DTRACE */
if (ce != EX_T(opline->op1.u.var).class_entry) {
if (!instanceof_function(ce, EX_T(opline->op1.u.var).class_entry TSRMLS_CC)) {
[PHP_ADD_DTRACE([Zend/zend_dtrace.d], [main/main.c, Zend/zend_API.c \
Zend/zend_execute.c Zend/zend_exceptions.c \
Zend/zend_dtrace.c Zend/zend.c])
- PHP_INIT_DTRACE([Zend/zend_dtrace.d], [Zend/zend_dtrace_gen.h])],
+ PHP_INIT_DTRACE([Zend/zend_dtrace.d], [Zend/zend_dtrace_gen.h])
+ AC_DEFINE(HAVE_DTRACE, 1, [Whether to enable DTrace support])],
[])
fi
{
int retval = SUCCESS;
+#ifdef HAVE_DTRACE
DTRACE_REQUEST_STARTUP(SAFE_FILENAME(SG(request_info).path_translated), SAFE_FILENAME(SG(request_info).request_uri), SAFE_FILENAME(SG(request_info).request_method));
+#endif /* HAVE_DTRACE */
#ifdef PHP_WIN32
PG(com_initialized) = 0;
}
#endif
+#ifdef HAVE_DTRACE
DTRACE_REQUEST_SHUTDOWN(SAFE_FILENAME(SG(request_info).path_translated), SAFE_FILENAME(SG(request_info).request_uri), SAFE_FILENAME(SG(request_info).request_method));
+#endif /* HAVE_DTRACE */
}
/* }}} */