projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
doc/man: include build version in GitHub links
[lttng-ust.git]
/
liblttng-ust
/
lttng-filter-interpreter.c
diff --git
a/liblttng-ust/lttng-filter-interpreter.c
b/liblttng-ust/lttng-filter-interpreter.c
index 1354d9c1062e5bebf1d764cf31e9116f32124116..59bc72cdf442027e8e78ba535c91a9e13bd7502f 100644
(file)
--- a/
liblttng-ust/lttng-filter-interpreter.c
+++ b/
liblttng-ust/lttng-filter-interpreter.c
@@
-742,6
+742,8
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
[ FILTER_OP_LOAD_FIELD_DOUBLE ] = &&LABEL_FILTER_OP_LOAD_FIELD_DOUBLE,
[ FILTER_OP_UNARY_BIT_NOT ] = &&LABEL_FILTER_OP_UNARY_BIT_NOT,
[ FILTER_OP_LOAD_FIELD_DOUBLE ] = &&LABEL_FILTER_OP_LOAD_FIELD_DOUBLE,
[ FILTER_OP_UNARY_BIT_NOT ] = &&LABEL_FILTER_OP_UNARY_BIT_NOT,
+
+ [ FILTER_OP_RETURN_S64 ] = &&LABEL_FILTER_OP_RETURN_S64,
};
#endif /* #ifndef INTERPRETER_USE_SWITCH */
};
#endif /* #ifndef INTERPRETER_USE_SWITCH */
@@
-774,6
+776,12
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
ret = 0;
goto end;
ret = 0;
goto end;
+ OP(FILTER_OP_RETURN_S64):
+ /* LTTNG_FILTER_DISCARD or LTTNG_FILTER_RECORD_FLAG */
+ retval = !!estack_ax_v;
+ ret = 0;
+ goto end;
+
/* binary */
OP(FILTER_OP_MUL):
OP(FILTER_OP_DIV):
/* binary */
OP(FILTER_OP_MUL):
OP(FILTER_OP_DIV):
@@
-1562,7
+1570,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
ret = -EINVAL;
goto end;
}
ret = -EINVAL;
goto end;
}
- res = (
estack_bx_v >>
estack_ax_v);
+ res = (
(uint64_t) estack_bx_v >> (uint32_t)
estack_ax_v);
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
@@
-1583,7
+1591,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
ret = -EINVAL;
goto end;
}
ret = -EINVAL;
goto end;
}
- res = (
estack_bx_v <<
estack_ax_v);
+ res = (
(uint64_t) estack_bx_v << (uint32_t)
estack_ax_v);
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
@@
-1600,7
+1608,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
goto end;
}
goto end;
}
- res = (
estack_bx_v &
estack_ax_v);
+ res = (
(uint64_t) estack_bx_v & (uint64_t)
estack_ax_v);
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
@@
-1617,7
+1625,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
goto end;
}
goto end;
}
- res = (
estack_bx_v |
estack_ax_v);
+ res = (
(uint64_t) estack_bx_v | (uint64_t)
estack_ax_v);
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
@@
-1634,7
+1642,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
goto end;
}
goto end;
}
- res = (
estack_bx_v ^
estack_ax_v);
+ res = (
(uint64_t) estack_bx_v ^ (uint64_t)
estack_ax_v);
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
estack_pop(stack, top, ax, bx, ax_t, bx_t);
estack_ax_v = res;
estack_ax_t = REG_S64;
@@
-1711,7
+1719,7
@@
uint64_t lttng_filter_interpret_bytecode(void *filter_data,
goto end;
}
goto end;
}
- estack_ax_v = ~estack_ax_v;
+ estack_ax_v = ~
(uint64_t)
estack_ax_v;
next_pc += sizeof(struct unary_op);
PO;
}
next_pc += sizeof(struct unary_op);
PO;
}
This page took
0.050608 seconds
and
4
git commands to generate.