X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-filter-specialize.c;h=e269db6a32f9775af8b5e70636c3de1feddc56bc;hb=8d3190bdb8bfd285a56afd8dd348a344b62d4815;hp=6de25047787d2b09954d1ce88815f53988463cea;hpb=0039e2d8d79c3260d29591fc10a07d57bcc535b3;p=lttng-ust.git diff --git a/liblttng-ust/lttng-filter-specialize.c b/liblttng-ust/lttng-filter-specialize.c index 6de25047..e269db6a 100644 --- a/liblttng-ust/lttng-filter-specialize.c +++ b/liblttng-ust/lttng-filter-specialize.c @@ -422,7 +422,7 @@ static int specialize_load_object(const struct lttng_event_field *field, break; case atype_dynamic: load->object_type = OBJECT_TYPE_DYNAMIC; - return -EINVAL; + break; case atype_struct: ERR("Structure type cannot be loaded."); return -EINVAL; @@ -621,6 +621,17 @@ int lttng_filter_specialize_bytecode(struct lttng_event *event, goto end; case FILTER_OP_RETURN: + if (vstack_ax(stack)->type == REG_S64) + *(filter_opcode_t *) pc = FILTER_OP_RETURN_S64; + ret = 0; + goto end; + + case FILTER_OP_RETURN_S64: + if (vstack_ax(stack)->type != REG_S64) { + ERR("Unexpected register type\n"); + ret = -EINVAL; + goto end; + } ret = 0; goto end;