X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust%2Flttng-bytecode-specialize.c;h=f571dd60197b08b38f247f288ebd38d8e4063703;hb=8c3470eaadb6e01fe65e1b852907467c0527ba05;hp=7a7c1e864f57507a8b90745c92a87c622f98be3a;hpb=c0c0989ab70574e09b2f7e8b48c2da6af664a849;p=lttng-ust.git diff --git a/liblttng-ust/lttng-bytecode-specialize.c b/liblttng-ust/lttng-bytecode-specialize.c index 7a7c1e86..f571dd60 100644 --- a/liblttng-ust/lttng-bytecode-specialize.c +++ b/liblttng-ust/lttng-bytecode-specialize.c @@ -10,8 +10,10 @@ #include #include -#include "lttng-bytecode.h" #include + +#include "context-internal.h" +#include "lttng-bytecode.h" #include "ust-events-internal.h" static int lttng_fls(int val) @@ -257,10 +259,6 @@ static int specialize_get_index(struct bytecode_runtime *runtime, field = stack_top->load.field; switch (field->type.atype) { - case atype_array: - integer_type = &field->type.u.legacy.array.elem_type.u.basic.integer; - num_elems = field->type.u.legacy.array.length; - break; case atype_array_nestable: if (field->type.u.array_nestable.elem_type->atype != atype_integer) { ret = -EINVAL; @@ -301,9 +299,6 @@ static int specialize_get_index(struct bytecode_runtime *runtime, field = stack_top->load.field; switch (field->type.atype) { - case atype_sequence: - integer_type = &field->type.u.legacy.sequence.elem_type.u.basic.integer; - break; case atype_sequence_nestable: if (field->type.u.sequence_nestable.elem_type->atype != atype_integer) { ret = -EINVAL; @@ -378,7 +373,7 @@ static int specialize_context_lookup_name(struct lttng_ctx *ctx, const char *name; offset = ((struct get_symbol *) insn->data)->offset; - name = bytecode->p.bc->bc.data + bytecode->p.bc->bc.reloc_offset + offset; + name = bytecode->p.priv->bc->bc.data + bytecode->p.priv->bc->bc.reloc_offset + offset; return lttng_get_context_index(ctx, name); } @@ -395,16 +390,11 @@ static int specialize_load_object(const struct lttng_event_field *field, load->object_type = OBJECT_TYPE_U64; load->rev_bo = false; break; - case atype_enum: case atype_enum_nestable: { const struct lttng_integer_type *itype; - if (field->type.atype == atype_enum) { - itype = &field->type.u.legacy.basic.enumeration.container_type; - } else { - itype = &field->type.u.enum_nestable.container_type->u.integer; - } + itype = &field->type.u.enum_nestable.container_type->u.integer; if (itype->signedness) load->object_type = OBJECT_TYPE_SIGNED_ENUM; else @@ -412,22 +402,6 @@ static int specialize_load_object(const struct lttng_event_field *field, load->rev_bo = false; break; } - case atype_array: - if (field->type.u.legacy.array.elem_type.atype != atype_integer) { - ERR("Array nesting only supports integer types."); - return -EINVAL; - } - if (is_context) { - load->object_type = OBJECT_TYPE_STRING; - } else { - if (field->type.u.legacy.array.elem_type.u.basic.integer.encoding == lttng_encode_none) { - load->object_type = OBJECT_TYPE_ARRAY; - load->field = field; - } else { - load->object_type = OBJECT_TYPE_STRING_SEQUENCE; - } - } - break; case atype_array_nestable: if (field->type.u.array_nestable.elem_type->atype != atype_integer) { ERR("Array nesting only supports integer types."); @@ -444,22 +418,6 @@ static int specialize_load_object(const struct lttng_event_field *field, } } break; - case atype_sequence: - if (field->type.u.legacy.sequence.elem_type.atype != atype_integer) { - ERR("Sequence nesting only supports integer types."); - return -EINVAL; - } - if (is_context) { - load->object_type = OBJECT_TYPE_STRING; - } else { - if (field->type.u.legacy.sequence.elem_type.u.basic.integer.encoding == lttng_encode_none) { - load->object_type = OBJECT_TYPE_SEQUENCE; - load->field = field; - } else { - load->object_type = OBJECT_TYPE_STRING_SEQUENCE; - } - } - break; case atype_sequence_nestable: if (field->type.u.sequence_nestable.elem_type->atype != atype_integer) { ERR("Sequence nesting only supports integer types."); @@ -486,9 +444,6 @@ static int specialize_load_object(const struct lttng_event_field *field, case atype_dynamic: load->object_type = OBJECT_TYPE_DYNAMIC; break; - case atype_struct: - ERR("Structure type cannot be loaded."); - return -EINVAL; default: ERR("Unknown type: %d", (int) field->type.atype); return -EINVAL; @@ -547,7 +502,7 @@ static int specialize_app_context_lookup(struct lttng_ctx **pctx, ssize_t data_offset; offset = ((struct get_symbol *) insn->data)->offset; - orig_name = runtime->p.bc->bc.data + runtime->p.bc->bc.reloc_offset + offset; + orig_name = runtime->p.priv->bc->bc.data + runtime->p.priv->bc->bc.reloc_offset + offset; name = zmalloc(strlen(orig_name) + strlen("$app.") + 1); if (!name) { ret = -ENOMEM; @@ -608,7 +563,7 @@ static int specialize_payload_lookup(const struct lttng_event_desc *event_desc, nr_fields = event_desc->nr_fields; offset = ((struct get_symbol *) insn->data)->offset; - name = runtime->p.bc->bc.data + runtime->p.bc->bc.reloc_offset + offset; + name = runtime->p.priv->bc->bc.data + runtime->p.priv->bc->bc.reloc_offset + offset; for (i = 0; i < nr_fields; i++) { field = &event_desc->fields[i]; if (field->u.ext.nofilter) { @@ -621,13 +576,10 @@ static int specialize_payload_lookup(const struct lttng_event_desc *event_desc, /* compute field offset on stack */ switch (field->type.atype) { case atype_integer: - case atype_enum: case atype_enum_nestable: field_offset += sizeof(int64_t); break; - case atype_array: case atype_array_nestable: - case atype_sequence: case atype_sequence_nestable: field_offset += sizeof(unsigned long); field_offset += sizeof(void *); @@ -678,7 +630,7 @@ int lttng_bytecode_specialize(const struct lttng_event_desc *event_desc, int ret = -EINVAL; struct vstack _stack; struct vstack *stack = &_stack; - struct lttng_ctx **pctx = bytecode->p.pctx; + struct lttng_ctx **pctx = bytecode->p.priv->pctx; vstack_init(stack);