[lttng-dev] [PATCH lttng-tools] Filter: Handle the unary bitwise not operator (~) with an unsupported op error

Christian Babeux christian.babeux at efficios.com
Wed Aug 22 09:34:03 EDT 2012


Signed-off-by: Christian Babeux <christian.babeux at efficios.com>
---
 src/lib/lttng-ctl/filter-ast.h                 |  1 +
 src/lib/lttng-ctl/filter-parser.y              |  5 +++++
 src/lib/lttng-ctl/filter-visitor-generate-ir.c | 12 ++++++++++++
 3 files changed, 18 insertions(+)

diff --git a/src/lib/lttng-ctl/filter-ast.h b/src/lib/lttng-ctl/filter-ast.h
index 97793c0..1767164 100644
--- a/src/lib/lttng-ctl/filter-ast.h
+++ b/src/lib/lttng-ctl/filter-ast.h
@@ -91,6 +91,7 @@ enum unary_op_type {
 	AST_UNARY_PLUS,
 	AST_UNARY_MINUS,
 	AST_UNARY_NOT,
+	AST_UNARY_BIN_NOT,
 };
 
 enum ast_link_type {
diff --git a/src/lib/lttng-ctl/filter-parser.y b/src/lib/lttng-ctl/filter-parser.y
index 4ee1d9a..d3be4be 100644
--- a/src/lib/lttng-ctl/filter-parser.y
+++ b/src/lib/lttng-ctl/filter-parser.y
@@ -481,6 +481,11 @@ unary_operator
 			$$ = make_node(parser_ctx, NODE_UNARY_OP);
 			$$->u.unary_op.type = AST_UNARY_NOT;
 		}
+	| NOT_BIN
+		{
+			$$ = make_node(parser_ctx, NODE_UNARY_OP);
+			$$->u.unary_op.type = AST_UNARY_BIN_NOT;
+		}
 	;
 
 multiplicative_expression
diff --git a/src/lib/lttng-ctl/filter-visitor-generate-ir.c b/src/lib/lttng-ctl/filter-visitor-generate-ir.c
index 899713e..d23372f 100644
--- a/src/lib/lttng-ctl/filter-visitor-generate-ir.c
+++ b/src/lib/lttng-ctl/filter-visitor-generate-ir.c
@@ -652,6 +652,8 @@ static
 struct ir_op *make_unary_op(struct filter_parser_ctx *ctx,
 		struct filter_node *node, enum ir_side side)
 {
+	const char *op_str = "?";
+
 	switch (node->u.unary_op.type) {
 	case AST_UNARY_UNKNOWN:
 	default:
@@ -703,7 +705,17 @@ struct ir_op *make_unary_op(struct filter_parser_ctx *ctx,
 		}
 		return op;
 	}
+	case AST_UNARY_BIN_NOT:
+	{
+		op_str = "~";
+		goto error_not_supported;
+	}
 	}
+
+error_not_supported:
+	fprintf(stderr, "[error] %s: unary operation '%s' not supported\n",
+		__func__, op_str);
+	return NULL;
 }
 
 static
-- 
1.7.11.4




More information about the lttng-dev mailing list