} SIDE_PACKED;
struct side_type_raw_string {
- const void *p; /* pointer to string */
+ side_ptr_t(const void) p; /* pointer to string */
uint8_t unit_size; /* 1, 2, or 4 bytes */
uint8_t byte_order; /* enum side_type_label_byte_order */
} SIDE_PACKED;
#define side_attr(_key, _value) \
{ \
.key = { \
- .p = (_key), \
+ .p = { \
+ .v = (uintptr_t) (_key), \
+ }, \
.unit_size = sizeof(uint8_t), \
.byte_order = SIDE_TYPE_BYTE_ORDER_HOST, \
}, \
.type = SIDE_ATTR_TYPE_STRING, \
.u = { \
.string_value = { \
- .p = (const void *) (_val), \
+ .p = { \
+ .v = (uintptr_t) (_val), \
+ }, \
.unit_size = _unit_size, \
.byte_order = _byte_order, \
}, \
.range_begin = _begin, \
.range_end = _end, \
.label = { \
- .p = (_label), \
+ .p = { \
+ .v = (uintptr_t) (_label), \
+ }, \
.unit_size = sizeof(uint8_t), \
.byte_order = SIDE_TYPE_BYTE_ORDER_HOST, \
}, \
.range_begin = _value, \
.range_end = _value, \
.label = { \
- .p = (_label), \
+ .p = { \
+ .v = (uintptr_t) (_label), \
+ }, \
.unit_size = sizeof(uint8_t), \
.byte_order = SIDE_TYPE_BYTE_ORDER_HOST, \
}, \
.range_begin = _begin, \
.range_end = _end, \
.label = { \
- .p = (_label), \
+ .p = { \
+ .v = (uintptr_t) (_label), \
+ }, \
.unit_size = sizeof(uint8_t), \
.byte_order = SIDE_TYPE_BYTE_ORDER_HOST, \
}, \
.range_begin = _value, \
.range_end = _value, \
.label = { \
- .p = (_label), \
+ .p = { \
+ .v = (uintptr_t) (_label), \
+ }, \
.unit_size = sizeof(uint8_t), \
.byte_order = SIDE_TYPE_BYTE_ORDER_HOST, \
}, \
char *utf8_str = NULL;
bool cmp;
- tracer_convert_string_to_utf8(attr->key.p, attr->key.unit_size,
+ tracer_convert_string_to_utf8(side_ptr_get(attr->key.p), attr->key.unit_size,
attr->key.byte_order, NULL, &utf8_str);
cmp = strcmp(utf8_str, "std.integer.base");
- if (utf8_str != attr->key.p)
+ if (utf8_str != side_ptr_get(attr->key.p))
free(utf8_str);
if (!cmp) {
int64_t val = get_attr_integer_value(attr);
{
char *utf8_str = NULL;
- tracer_convert_string_to_utf8(attr->key.p, attr->key.unit_size,
+ tracer_convert_string_to_utf8(side_ptr_get(attr->key.p), attr->key.unit_size,
attr->key.byte_order, NULL, &utf8_str);
printf("{ key%s \"%s\", value%s ", separator, utf8_str, separator);
- if (utf8_str != attr->key.p)
+ if (utf8_str != side_ptr_get(attr->key.p))
free(utf8_str);
switch (attr->value.type) {
case SIDE_ATTR_TYPE_BOOL:
abort();
#endif
case SIDE_ATTR_TYPE_STRING:
- tracer_print_string(attr->value.u.string_value.p,
+ tracer_print_string(side_ptr_get(attr->value.u.string_value.p),
attr->value.u.string_value.unit_size,
attr->value.u.string_value.byte_order, NULL);
break;
}
if (v64.s >= mapping->range_begin && v64.s <= mapping->range_end) {
printf("%s", print_count++ ? ", " : "");
- tracer_print_string(mapping->label.p, mapping->label.unit_size, mapping->label.byte_order, NULL);
+ tracer_print_string(side_ptr_get(mapping->label.p), mapping->label.unit_size, mapping->label.byte_order, NULL);
}
}
if (!print_count)
match:
if (match) {
printf("%s", print_count++ ? ", " : "");
- tracer_print_string(mapping->label.p, mapping->label.unit_size, mapping->label.byte_order, NULL);
+ tracer_print_string(side_ptr_get(mapping->label.p), mapping->label.unit_size, mapping->label.byte_order, NULL);
}
}
if (!print_count)