diff --git a/include/trace/stages/stage1_struct_define.h b/include/trace/stages/stage1_struct_define.h
index 69e0dae..7eba055 100644
--- a/include/trace/stages/stage1_struct_define.h
+++ b/include/trace/stages/stage1_struct_define.h
@@ -56,5 +56,10 @@
 #undef __rel_sockaddr
 #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
 
+#undef __alloc_buf
+#define __alloc_buf(len)
+
+/* __get_buf is not allow present inside TP_STRUCT__entry */
+
 #undef TP_STRUCT__entry
 #define TP_STRUCT__entry(args...) args
diff --git a/include/trace/stages/stage3_trace_output.h b/include/trace/stages/stage3_trace_output.h
index 66374df..824061f 100644
--- a/include/trace/stages/stage3_trace_output.h
+++ b/include/trace/stages/stage3_trace_output.h
@@ -139,3 +139,63 @@
 		u64 ____val = (u64)(value);		\
 		(u32) do_div(____val, NSEC_PER_SEC);	\
 	})
+
+#undef __field
+#define __field(type, item)
+
+#undef __field_ext
+#define __field_ext(type, item, filter_type)
+
+#undef __field_struct
+#define __field_struct(type, item)
+
+#undef __field_struct_ext
+#define __field_struct_ext(type, item, filter_type)
+
+#undef __array
+#define __array(type, item, len)
+
+#undef __dynamic_array
+#define __dynamic_array(type, item, len)
+
+#undef __string
+#define __string(item, src)
+
+#undef __string_len
+#define __string_len(item, src, len)
+
+#undef __vstring
+#define __vstring(item, fmt, ap)
+
+#undef __bitmask
+#define __bitmask(item, nr_bits)
+
+#undef __cpumask
+#define __cpumask(item)
+
+#undef __sockaddr
+#define __sockaddr(field, len)
+
+#undef __rel_dynamic_array
+#define __rel_dynamic_array(type, item, len)
+
+#undef __rel_string
+#define __rel_string(item, src)
+
+#undef __rel_string_len
+#define __rel_string_len(item, src, len)
+
+#undef __rel_bitmask
+#define __rel_bitmask(item, nr_bits)
+
+#undef __rel_cpumask
+#define __rel_cpumask(item)
+
+#undef __rel_sockaddr
+#define __rel_sockaddr(field, len)
+
+#undef __alloc_buf
+#define __alloc_buf(len)	__buf_len = (len);
+
+#undef __get_buf
+#define __get_buf(offset)	(__buf + (offset))
diff --git a/include/trace/stages/stage4_event_fields.h b/include/trace/stages/stage4_event_fields.h
index f2990d2..e78399d74 100644
--- a/include/trace/stages/stage4_event_fields.h
+++ b/include/trace/stages/stage4_event_fields.h
@@ -72,3 +72,9 @@
 
 #undef __rel_sockaddr
 #define __rel_sockaddr(field, len) __rel_dynamic_array(u8, field, len)
+
+#undef __alloc_buf
+#define __alloc_buf(len)
+
+#undef __get_buf
+#define __get_buf(offset)
diff --git a/include/trace/stages/stage7_class_define.h b/include/trace/stages/stage7_class_define.h
index 8795429..bcb960d 100644
--- a/include/trace/stages/stage7_class_define.h
+++ b/include/trace/stages/stage7_class_define.h
@@ -23,6 +23,7 @@
 #undef __get_rel_sockaddr
 #undef __print_array
 #undef __print_hex_dump
+#undef __get_buf
 
 /*
  * The below is not executed in the kernel. It is only what is
diff --git a/include/trace/trace_events.h b/include/trace/trace_events.h
index c2f9cab..cca6b38 100644
--- a/include/trace/trace_events.h
+++ b/include/trace/trace_events.h
@@ -192,6 +192,8 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags,		\
 	struct trace_seq *s = &iter->seq;				\
 	struct trace_seq __maybe_unused *p = &iter->tmp_seq;		\
 	struct trace_event_raw_##call *field;				\
+	void *__buf = NULL;						\
+	size_t __buf_len = 0;						\
 	int ret;							\
 									\
 	field = (typeof(field))iter->ent;				\
@@ -200,8 +202,18 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags,		\
 	if (ret != TRACE_TYPE_HANDLED)					\
 		return ret;						\
 									\
+	tstruct;							\
+									\
+	if (__buf_len) {						\
+		__buf = kmalloc(__buf_len, GFP_KERNEL);			\
+		if (!__buf)						\
+			return -ENOMEM;					\
+	}								\
+									\
 	trace_event_printf(iter, print);				\
 									\
+	kfree(__buf);							\
+									\
 	return trace_handle_return(s);					\
 }									\
 static struct trace_event_functions trace_event_type_funcs_##call = {	\
@@ -217,6 +229,9 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags,		\
 	struct trace_event_raw_##template *field;			\
 	struct trace_entry *entry;					\
 	struct trace_seq *p = &iter->tmp_seq;				\
+	void *__buf = NULL;						\
+	size_t __buf_len = 0;						\
+	int ret;							\
 									\
 	entry = iter->ent;						\
 									\
@@ -227,8 +242,20 @@ trace_raw_output_##call(struct trace_iterator *iter, int flags,		\
 									\
 	field = (typeof(field))entry;					\
 									\
+	tstruct;							\
+									\
+	if (__buf_len) {						\
+		__buf = kmalloc(__buf_len, GFP_KERNEL);			\
+		if (!__buf)						\
+			return -ENOMEM;					\
+	}								\
+									\
 	trace_seq_init(p);						\
-	return trace_output_call(iter, #call, print);			\
+	ret = trace_output_call(iter, #call, print);			\
+									\
+	kfree(__buf);							\
+									\
+	return ret;							\
 }									\
 static struct trace_event_functions trace_event_type_funcs_##call = {	\
 	.trace			= trace_raw_output_##call,		\
