X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-grammar-test.c;h=782154306768f944b3869cec77483efd625d08fe;hp=2b9a27dc299543beb38e3191ecd662c406121e40;hb=b1d1dc14cf92a1070a9b38242b3b3ba67d25c2f9;hpb=d00c599e39ae45ec7c8e12e6bac6b5e58f08f817 diff --git a/src/lib/lttng-ctl/filter/filter-grammar-test.c b/src/lib/lttng-ctl/filter/filter-grammar-test.c index 2b9a27dc2..782154306 100644 --- a/src/lib/lttng-ctl/filter/filter-grammar-test.c +++ b/src/lib/lttng-ctl/filter/filter-grammar-test.c @@ -34,7 +34,8 @@ int main(int argc, char **argv) { struct filter_parser_ctx *ctx; int ret; - int print_xml = 0, generate_ir = 0, generate_bytecode = 0; + int print_xml = 0, generate_ir = 0, generate_bytecode = 0, + print_bytecode = 0; int i; for (i = 1; i < argc; i++) { @@ -46,6 +47,8 @@ int main(int argc, char **argv) generate_bytecode = 1; else if (strcmp(argv[i], "-d") == 0) filter_parser_debug = 1; + else if (strcmp(argv[i], "-B") == 0) + print_bytecode = 1; } ctx = filter_parser_ctx_alloc(stdin); @@ -101,23 +104,28 @@ int main(int argc, char **argv) printf("Size of bytecode generated: %u bytes.\n", bytecode_get_len(&ctx->bytecode->b)); } -#if 0 - if (run_bytecode) { - int64_t retval; - printf("Interpreting bytecode... "); - fflush(stdout); - ret = bytecode_interpret(&ctx->bytecode->b, &retval, NULL); - if (ret) { - fprintf(stderr, "Error interpreting bytecode\n"); - goto parse_error; - } else { - printf("Bytecode interpret result: %" PRIi64 "\n", - retval); + if (print_bytecode) { + unsigned int bytecode_len, len, i; + + len = bytecode_get_len(&ctx->bytecode->b); + bytecode_len = ctx->bytecode->b.reloc_table_offset; + printf("Bytecode:\n"); + for (i = 0; i < bytecode_len; i++) { + printf("0x%X ", + ((uint8_t *) ctx->bytecode->b.data)[i]); } - printf("done\n"); + printf("\n"); + printf("Reloc table:\n"); + for (i = bytecode_len; i < len;) { + printf("{ 0x%X, ", + *(uint16_t *) &ctx->bytecode->b.data[i]); + i += sizeof(uint16_t); + printf("%s } ", &((char *) ctx->bytecode->b.data)[i]); + i += strlen(&((char *) ctx->bytecode->b.data)[i]) + 1; + } + printf("\n"); } -#endif //0 filter_bytecode_free(ctx); filter_ir_free(ctx);