Remove app context backward compatibility dead code
[lttng-ust.git] / liblttng-ust / lttng-bytecode.c
index 3fe50c36e707599d79b6e13b41de4fe5444e0bde..ea5827a447adffb671c879fdf6730e7ac601944f 100644 (file)
@@ -174,12 +174,12 @@ const char *lttng_bytecode_print_op(enum bytecode_op op)
 static
 int apply_field_reloc(const struct lttng_ust_event_desc *event_desc,
                struct bytecode_runtime *runtime,
-               uint32_t runtime_len,
+               uint32_t runtime_len __attribute__((unused)),
                uint32_t reloc_offset,
                const char *field_name,
                enum bytecode_op bytecode_op)
 {
-       struct lttng_ust_event_field **fields, *field = NULL;
+       const struct lttng_ust_event_field **fields, *field = NULL;
        unsigned int nr_fields, i;
        struct load_op *op;
        uint32_t field_offset = 0;
@@ -244,9 +244,23 @@ int apply_field_reloc(const struct lttng_ust_event_desc *event_desc,
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_S64;
                        break;
                case lttng_ust_type_array:
+               {
+                       struct lttng_ust_type_array *array = (struct lttng_ust_type_array *) field->type;
+
+                       if (array->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_LOAD_FIELD_REF_SEQUENCE;
+                       break;
+               }
                case lttng_ust_type_sequence:
+               {
+                       struct lttng_ust_type_sequence *sequence = (struct lttng_ust_type_sequence *) field->type;
+
+                       if (sequence->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_SEQUENCE;
                        break;
+               }
                case lttng_ust_type_string:
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_STRING;
                        break;
@@ -268,13 +282,13 @@ int apply_field_reloc(const struct lttng_ust_event_desc *event_desc,
 
 static
 int apply_context_reloc(struct bytecode_runtime *runtime,
-               uint32_t runtime_len,
+               uint32_t runtime_len __attribute__((unused)),
                uint32_t reloc_offset,
                const char *context_name,
                enum bytecode_op bytecode_op)
 {
        struct load_op *op;
-       struct lttng_ust_ctx_field *ctx_field;
+       const struct lttng_ust_ctx_field *ctx_field;
        int idx;
        struct lttng_ust_ctx **pctx = runtime->p.pctx;
 
@@ -302,7 +316,7 @@ int apply_context_reloc(struct bytecode_runtime *runtime,
                return -EINVAL;
 
        /* Get context return type */
-       ctx_field = (*pctx)->fields[idx];
+       ctx_field = &(*pctx)->fields[idx];
        op = (struct load_op *) &runtime->code[reloc_offset];
 
        switch (bytecode_op) {
@@ -316,10 +330,26 @@ int apply_context_reloc(struct bytecode_runtime *runtime,
                case lttng_ust_type_enum:
                        op->op = BYTECODE_OP_GET_CONTEXT_REF_S64;
                        break;
-                       /* Sequence and array supported as string */
-               case lttng_ust_type_string:
+                       /* Sequence and array supported only as string */
                case lttng_ust_type_array:
+               {
+                       struct lttng_ust_type_array *array = (struct lttng_ust_type_array *) ctx_field->event_field->type;
+
+                       if (array->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
+                       break;
+               }
                case lttng_ust_type_sequence:
+               {
+                       struct lttng_ust_type_sequence *sequence = (struct lttng_ust_type_sequence *) ctx_field->event_field->type;
+
+                       if (sequence->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
+                       break;
+               }
+               case lttng_ust_type_string:
                        op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
                        break;
                case lttng_ust_type_float:
@@ -396,7 +426,7 @@ int bytecode_is_linked(struct lttng_ust_bytecode_node *bytecode,
  * bytecode runtime.
  */
 static
-int link_bytecode(struct lttng_ust_event_desc *event_desc,
+int link_bytecode(const struct lttng_ust_event_desc *event_desc,
                struct lttng_ust_ctx **ctx,
                struct lttng_ust_bytecode_node *bytecode,
                struct cds_list_head *bytecode_runtime_head,
@@ -489,7 +519,7 @@ void lttng_bytecode_sync_state(struct lttng_ust_bytecode_runtime *runtime)
  * This function is called after we confirmed that name enabler and the
  * instance are name matching (or glob pattern matching).
  */
-void lttng_enabler_link_bytecode(struct lttng_ust_event_desc *event_desc,
+void lttng_enabler_link_bytecode(const struct lttng_ust_event_desc *event_desc,
                struct lttng_ust_ctx **ctx,
                struct cds_list_head *instance_bytecode_head,
                struct cds_list_head *enabler_bytecode_head)
@@ -547,16 +577,6 @@ void lttng_enabler_link_bytecode(struct lttng_ust_event_desc *event_desc,
        }
 }
 
-/*
- * We own the bytecode if we return success.
- */
-int lttng_filter_enabler_attach_bytecode(struct lttng_enabler *enabler,
-               struct lttng_ust_bytecode_node *bytecode)
-{
-       cds_list_add(&bytecode->node, &enabler->filter_bytecode_head);
-       return 0;
-}
-
 static
 void free_filter_runtime(struct cds_list_head *bytecode_runtime_head)
 {
This page took 0.025448 seconds and 4 git commands to generate.