-#undef ctf_float
-#define ctf_float(_type, _item, _src) \
- *(double *) __stack_data = (double) (_type) (_src); \
- __stack_data += sizeof(double);
-
-#undef ctf_array_encoded
-#define ctf_array_encoded(_type, _item, _src, _length, _encoding) \
- *(unsigned long *) __stack_data = (unsigned long) (_length); \
- __stack_data += sizeof(unsigned long); \
- *(const void **) __stack_data = (_src); \
- __stack_data += sizeof(void *);
-
-#undef ctf_sequence_encoded
-#define ctf_sequence_encoded(_type, _item, _src, _length_type, \
- _src_length, _encoding) \
- *(unsigned long *) __stack_data = (unsigned long) (_src_length); \
- __stack_data += sizeof(unsigned long); \
- *(const void **) __stack_data = (_src); \
- __stack_data += sizeof(void *);
-
-#undef ctf_string
-#define ctf_string(_item, _src) \
- *(unsigned long *) __stack_data = (unsigned long) (strlen(_src) + 1); \
- __stack_data += sizeof(unsigned long); \
- *(const void **) __stack_data = (_src); \
- __stack_data += sizeof(void *);
+#undef _ctf_float
+#define _ctf_float(_type, _item, _src, _nowrite) \
+ { \
+ double __ctf_tmp_double = (double) (_type) (_src); \
+ memcpy(__stack_data, &__ctf_tmp_double, sizeof(double)); \
+ __stack_data += sizeof(double); \
+ }
+
+#undef _ctf_array_encoded
+#define _ctf_array_encoded(_type, _item, _src, _length, _encoding, _nowrite) \
+ { \
+ unsigned long __ctf_tmp_ulong = (unsigned long) (_length); \
+ const void *__ctf_tmp_ptr = (_src); \
+ memcpy(__stack_data, &__ctf_tmp_ulong, sizeof(unsigned long)); \
+ __stack_data += sizeof(unsigned long); \
+ memcpy(__stack_data, &__ctf_tmp_ptr, sizeof(void *)); \
+ __stack_data += sizeof(void *); \
+ }
+
+#undef _ctf_sequence_encoded
+#define _ctf_sequence_encoded(_type, _item, _src, _length_type, \
+ _src_length, _encoding, _nowrite, _elem_type_base) \
+ { \
+ unsigned long __ctf_tmp_ulong = (unsigned long) (_src_length); \
+ const void *__ctf_tmp_ptr = (_src); \
+ memcpy(__stack_data, &__ctf_tmp_ulong, sizeof(unsigned long)); \
+ __stack_data += sizeof(unsigned long); \
+ memcpy(__stack_data, &__ctf_tmp_ptr, sizeof(void *)); \
+ __stack_data += sizeof(void *); \
+ }
+
+#undef _ctf_string
+#define _ctf_string(_item, _src, _nowrite) \
+ { \
+ const void *__ctf_tmp_ptr = \
+ ((_src) ? (_src) : __LTTNG_UST_NULL_STRING); \
+ memcpy(__stack_data, &__ctf_tmp_ptr, sizeof(void *)); \
+ __stack_data += sizeof(void *); \
+ }
+
+#undef _ctf_enum
+#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
+ _ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite)