* Re: [lttng-tools PATCH] Fix filter parser segmentation fault with bison 3.0
[not found] <1376654725-31219-1-git-send-email-soariez@gmail.com>
@ 2013-08-16 15:11 ` Yannick Brosseau
2013-08-16 15:23 ` Mathieu Desnoyers
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Yannick Brosseau @ 2013-08-16 15:11 UTC (permalink / raw)
To: lttng-dev
Also tested on CentOS6 with bison 2.4
On 2013-08-16 08:05, Zifei Tong wrote:
> Replace deprecated YYLEX_PARAM with %lex-param
>
> Tested with bison 2.7 and bison 3.0
>
> Signed-off-by: Zifei Tong <soariez@gmail.com>
> ---
> src/lib/lttng-ctl/filter/filter-ast.h | 3 ---
> src/lib/lttng-ctl/filter/filter-parser.y | 13 +++++++------
> 2 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/src/lib/lttng-ctl/filter/filter-ast.h b/src/lib/lttng-ctl/filter/filter-ast.h
> index 4fb60d0..405c668 100644
> --- a/src/lib/lttng-ctl/filter/filter-ast.h
> +++ b/src/lib/lttng-ctl/filter/filter-ast.h
> @@ -39,9 +39,6 @@
> // data is a pointer to a 'SParserParam' structure
> //#define YYPARSE_PARAM parser_ctx
>
> -// the argument for the 'yylex' function
> -#define YYLEX_PARAM ((struct filter_parser_ctx *) parser_ctx)->scanner
> -
> #ifndef YY_TYPEDEF_YY_SCANNER_T
> #define YY_TYPEDEF_YY_SCANNER_T
> typedef void* yyscan_t;
> diff --git a/src/lib/lttng-ctl/filter/filter-parser.y b/src/lib/lttng-ctl/filter/filter-parser.y
> index 3f30134..29e2866 100644
> --- a/src/lib/lttng-ctl/filter/filter-parser.y
> +++ b/src/lib/lttng-ctl/filter/filter-parser.y
> @@ -40,9 +40,9 @@ LTTNG_HIDDEN
> int filter_parser_debug = 0;
>
> LTTNG_HIDDEN
> -int yyparse(struct filter_parser_ctx *parser_ctx);
> +int yyparse(struct filter_parser_ctx *parser_ctx, yyscan_t scanner);
> LTTNG_HIDDEN
> -int yylex(union YYSTYPE *yyval, struct filter_parser_ctx *parser_ctx);
> +int yylex(union YYSTYPE *yyval, yyscan_t scanner);
> LTTNG_HIDDEN
> int yylex_init_extra(struct filter_parser_ctx *parser_ctx, yyscan_t * ptr_yy_globals);
> LTTNG_HIDDEN
> @@ -188,7 +188,7 @@ static struct filter_node *make_op_node(struct filter_parser_ctx *scanner,
> }
>
> LTTNG_HIDDEN
> -void yyerror(struct filter_parser_ctx *parser_ctx, const char *str)
> +void yyerror(struct filter_parser_ctx *parser_ctx, yyscan_t scanner, const char *str)
> {
> fprintf(stderr, "error %s\n", str);
> }
> @@ -201,7 +201,7 @@ int yywrap(void)
>
> #define parse_error(parser_ctx, str) \
> do { \
> - yyerror(parser_ctx, YY_("parse error: " str "\n")); \
> + yyerror(parser_ctx, parser_ctx->scanner, YY_("parse error: " str "\n")); \
> YYERROR; \
> } while (0)
>
> @@ -238,7 +238,7 @@ static void filter_ast_free(struct filter_ast *ast)
> LTTNG_HIDDEN
> int filter_parser_ctx_append_ast(struct filter_parser_ctx *parser_ctx)
> {
> - return yyparse(parser_ctx);
> + return yyparse(parser_ctx, parser_ctx->scanner);
> }
>
> LTTNG_HIDDEN
> @@ -301,7 +301,8 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx)
> %define api.pure
> /* %locations */
> %parse-param {struct filter_parser_ctx *parser_ctx}
> -%lex-param {struct filter_parser_ctx *parser_ctx}
> +%parse-param {yyscan_t scanner}
> +%lex-param {yyscan_t scanner}
> %start translation_unit
> %token CHARACTER_CONSTANT_START SQUOTE STRING_LITERAL_START DQUOTE
> %token ESCSEQ CHAR_STRING_TOKEN
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lttng-tools PATCH] Fix filter parser segmentation fault with bison 3.0
[not found] <1376654725-31219-1-git-send-email-soariez@gmail.com>
2013-08-16 15:11 ` Yannick Brosseau
@ 2013-08-16 15:23 ` Mathieu Desnoyers
[not found] ` <20130816152331.GA28878@Krystal>
2013-08-16 20:55 ` Mathieu Desnoyers
3 siblings, 0 replies; 5+ messages in thread
From: Mathieu Desnoyers @ 2013-08-16 15:23 UTC (permalink / raw)
To: Zifei Tong; +Cc: lttng-dev
* Zifei Tong (soariez@gmail.com) wrote:
> Replace deprecated YYLEX_PARAM with %lex-param
>
> Tested with bison 2.7 and bison 3.0
>
> Signed-off-by: Zifei Tong <soariez@gmail.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
David, can you take care of merging it ?
Thanks,
Mathieu
> ---
> src/lib/lttng-ctl/filter/filter-ast.h | 3 ---
> src/lib/lttng-ctl/filter/filter-parser.y | 13 +++++++------
> 2 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/src/lib/lttng-ctl/filter/filter-ast.h b/src/lib/lttng-ctl/filter/filter-ast.h
> index 4fb60d0..405c668 100644
> --- a/src/lib/lttng-ctl/filter/filter-ast.h
> +++ b/src/lib/lttng-ctl/filter/filter-ast.h
> @@ -39,9 +39,6 @@
> // data is a pointer to a 'SParserParam' structure
> //#define YYPARSE_PARAM parser_ctx
>
> -// the argument for the 'yylex' function
> -#define YYLEX_PARAM ((struct filter_parser_ctx *) parser_ctx)->scanner
> -
> #ifndef YY_TYPEDEF_YY_SCANNER_T
> #define YY_TYPEDEF_YY_SCANNER_T
> typedef void* yyscan_t;
> diff --git a/src/lib/lttng-ctl/filter/filter-parser.y b/src/lib/lttng-ctl/filter/filter-parser.y
> index 3f30134..29e2866 100644
> --- a/src/lib/lttng-ctl/filter/filter-parser.y
> +++ b/src/lib/lttng-ctl/filter/filter-parser.y
> @@ -40,9 +40,9 @@ LTTNG_HIDDEN
> int filter_parser_debug = 0;
>
> LTTNG_HIDDEN
> -int yyparse(struct filter_parser_ctx *parser_ctx);
> +int yyparse(struct filter_parser_ctx *parser_ctx, yyscan_t scanner);
> LTTNG_HIDDEN
> -int yylex(union YYSTYPE *yyval, struct filter_parser_ctx *parser_ctx);
> +int yylex(union YYSTYPE *yyval, yyscan_t scanner);
> LTTNG_HIDDEN
> int yylex_init_extra(struct filter_parser_ctx *parser_ctx, yyscan_t * ptr_yy_globals);
> LTTNG_HIDDEN
> @@ -188,7 +188,7 @@ static struct filter_node *make_op_node(struct filter_parser_ctx *scanner,
> }
>
> LTTNG_HIDDEN
> -void yyerror(struct filter_parser_ctx *parser_ctx, const char *str)
> +void yyerror(struct filter_parser_ctx *parser_ctx, yyscan_t scanner, const char *str)
> {
> fprintf(stderr, "error %s\n", str);
> }
> @@ -201,7 +201,7 @@ int yywrap(void)
>
> #define parse_error(parser_ctx, str) \
> do { \
> - yyerror(parser_ctx, YY_("parse error: " str "\n")); \
> + yyerror(parser_ctx, parser_ctx->scanner, YY_("parse error: " str "\n")); \
> YYERROR; \
> } while (0)
>
> @@ -238,7 +238,7 @@ static void filter_ast_free(struct filter_ast *ast)
> LTTNG_HIDDEN
> int filter_parser_ctx_append_ast(struct filter_parser_ctx *parser_ctx)
> {
> - return yyparse(parser_ctx);
> + return yyparse(parser_ctx, parser_ctx->scanner);
> }
>
> LTTNG_HIDDEN
> @@ -301,7 +301,8 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx)
> %define api.pure
> /* %locations */
> %parse-param {struct filter_parser_ctx *parser_ctx}
> -%lex-param {struct filter_parser_ctx *parser_ctx}
> +%parse-param {yyscan_t scanner}
> +%lex-param {yyscan_t scanner}
> %start translation_unit
> %token CHARACTER_CONSTANT_START SQUOTE STRING_LITERAL_START DQUOTE
> %token ESCSEQ CHAR_STRING_TOKEN
> --
> 1.8.3.4
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20130816152331.GA28878@Krystal>]
* Re: [lttng-tools PATCH] Fix filter parser segmentation fault with bison 3.0
[not found] ` <20130816152331.GA28878@Krystal>
@ 2013-08-16 15:25 ` David Goulet
0 siblings, 0 replies; 5+ messages in thread
From: David Goulet @ 2013-08-16 15:25 UTC (permalink / raw)
To: Mathieu Desnoyers; +Cc: lttng-dev
Ya sure! I was waiting for you Ack :)
David
Mathieu Desnoyers:
> * Zifei Tong (soariez@gmail.com) wrote:
>> Replace deprecated YYLEX_PARAM with %lex-param
>>
>> Tested with bison 2.7 and bison 3.0
>>
>> Signed-off-by: Zifei Tong <soariez@gmail.com>
>
> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
>
> David, can you take care of merging it ?
>
> Thanks,
>
> Mathieu
>
>> ---
>> src/lib/lttng-ctl/filter/filter-ast.h | 3 ---
>> src/lib/lttng-ctl/filter/filter-parser.y | 13 +++++++------
>> 2 files changed, 7 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/lib/lttng-ctl/filter/filter-ast.h b/src/lib/lttng-ctl/filter/filter-ast.h
>> index 4fb60d0..405c668 100644
>> --- a/src/lib/lttng-ctl/filter/filter-ast.h
>> +++ b/src/lib/lttng-ctl/filter/filter-ast.h
>> @@ -39,9 +39,6 @@
>> // data is a pointer to a 'SParserParam' structure
>> //#define YYPARSE_PARAM parser_ctx
>>
>> -// the argument for the 'yylex' function
>> -#define YYLEX_PARAM ((struct filter_parser_ctx *) parser_ctx)->scanner
>> -
>> #ifndef YY_TYPEDEF_YY_SCANNER_T
>> #define YY_TYPEDEF_YY_SCANNER_T
>> typedef void* yyscan_t;
>> diff --git a/src/lib/lttng-ctl/filter/filter-parser.y b/src/lib/lttng-ctl/filter/filter-parser.y
>> index 3f30134..29e2866 100644
>> --- a/src/lib/lttng-ctl/filter/filter-parser.y
>> +++ b/src/lib/lttng-ctl/filter/filter-parser.y
>> @@ -40,9 +40,9 @@ LTTNG_HIDDEN
>> int filter_parser_debug = 0;
>>
>> LTTNG_HIDDEN
>> -int yyparse(struct filter_parser_ctx *parser_ctx);
>> +int yyparse(struct filter_parser_ctx *parser_ctx, yyscan_t scanner);
>> LTTNG_HIDDEN
>> -int yylex(union YYSTYPE *yyval, struct filter_parser_ctx *parser_ctx);
>> +int yylex(union YYSTYPE *yyval, yyscan_t scanner);
>> LTTNG_HIDDEN
>> int yylex_init_extra(struct filter_parser_ctx *parser_ctx, yyscan_t * ptr_yy_globals);
>> LTTNG_HIDDEN
>> @@ -188,7 +188,7 @@ static struct filter_node *make_op_node(struct filter_parser_ctx *scanner,
>> }
>>
>> LTTNG_HIDDEN
>> -void yyerror(struct filter_parser_ctx *parser_ctx, const char *str)
>> +void yyerror(struct filter_parser_ctx *parser_ctx, yyscan_t scanner, const char *str)
>> {
>> fprintf(stderr, "error %s\n", str);
>> }
>> @@ -201,7 +201,7 @@ int yywrap(void)
>>
>> #define parse_error(parser_ctx, str) \
>> do { \
>> - yyerror(parser_ctx, YY_("parse error: " str "\n")); \
>> + yyerror(parser_ctx, parser_ctx->scanner, YY_("parse error: " str "\n")); \
>> YYERROR; \
>> } while (0)
>>
>> @@ -238,7 +238,7 @@ static void filter_ast_free(struct filter_ast *ast)
>> LTTNG_HIDDEN
>> int filter_parser_ctx_append_ast(struct filter_parser_ctx *parser_ctx)
>> {
>> - return yyparse(parser_ctx);
>> + return yyparse(parser_ctx, parser_ctx->scanner);
>> }
>>
>> LTTNG_HIDDEN
>> @@ -301,7 +301,8 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx)
>> %define api.pure
>> /* %locations */
>> %parse-param {struct filter_parser_ctx *parser_ctx}
>> -%lex-param {struct filter_parser_ctx *parser_ctx}
>> +%parse-param {yyscan_t scanner}
>> +%lex-param {yyscan_t scanner}
>> %start translation_unit
>> %token CHARACTER_CONSTANT_START SQUOTE STRING_LITERAL_START DQUOTE
>> %token ESCSEQ CHAR_STRING_TOKEN
>> --
>> 1.8.3.4
>>
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev@lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [lttng-tools PATCH] Fix filter parser segmentation fault with bison 3.0
[not found] <1376654725-31219-1-git-send-email-soariez@gmail.com>
` (2 preceding siblings ...)
[not found] ` <20130816152331.GA28878@Krystal>
@ 2013-08-16 20:55 ` Mathieu Desnoyers
3 siblings, 0 replies; 5+ messages in thread
From: Mathieu Desnoyers @ 2013-08-16 20:55 UTC (permalink / raw)
To: Zifei Tong; +Cc: lttng-dev
merged as:
commit 9039edd4983b46fc45dae7ed42396ef7f7e5635a
Author: Zifei Tong <soariez@gmail.com>
Date: Fri Aug 16 16:52:21 2013 -0400
Fix filter parser segmentation fault with bison 3.0
Replace deprecated YYLEX_PARAM with %lex-param
Tested with bison 2.4, 2.5, 2.7 and 3.0.
Signed-off-by: Zifei Tong <soariez@gmail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
and backported to stable-2.2
* Zifei Tong (soariez@gmail.com) wrote:
> Replace deprecated YYLEX_PARAM with %lex-param
>
> Tested with bison 2.7 and bison 3.0
>
> Signed-off-by: Zifei Tong <soariez@gmail.com>
> ---
> src/lib/lttng-ctl/filter/filter-ast.h | 3 ---
> src/lib/lttng-ctl/filter/filter-parser.y | 13 +++++++------
> 2 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/src/lib/lttng-ctl/filter/filter-ast.h b/src/lib/lttng-ctl/filter/filter-ast.h
> index 4fb60d0..405c668 100644
> --- a/src/lib/lttng-ctl/filter/filter-ast.h
> +++ b/src/lib/lttng-ctl/filter/filter-ast.h
> @@ -39,9 +39,6 @@
> // data is a pointer to a 'SParserParam' structure
> //#define YYPARSE_PARAM parser_ctx
>
> -// the argument for the 'yylex' function
> -#define YYLEX_PARAM ((struct filter_parser_ctx *) parser_ctx)->scanner
> -
> #ifndef YY_TYPEDEF_YY_SCANNER_T
> #define YY_TYPEDEF_YY_SCANNER_T
> typedef void* yyscan_t;
> diff --git a/src/lib/lttng-ctl/filter/filter-parser.y b/src/lib/lttng-ctl/filter/filter-parser.y
> index 3f30134..29e2866 100644
> --- a/src/lib/lttng-ctl/filter/filter-parser.y
> +++ b/src/lib/lttng-ctl/filter/filter-parser.y
> @@ -40,9 +40,9 @@ LTTNG_HIDDEN
> int filter_parser_debug = 0;
>
> LTTNG_HIDDEN
> -int yyparse(struct filter_parser_ctx *parser_ctx);
> +int yyparse(struct filter_parser_ctx *parser_ctx, yyscan_t scanner);
> LTTNG_HIDDEN
> -int yylex(union YYSTYPE *yyval, struct filter_parser_ctx *parser_ctx);
> +int yylex(union YYSTYPE *yyval, yyscan_t scanner);
> LTTNG_HIDDEN
> int yylex_init_extra(struct filter_parser_ctx *parser_ctx, yyscan_t * ptr_yy_globals);
> LTTNG_HIDDEN
> @@ -188,7 +188,7 @@ static struct filter_node *make_op_node(struct filter_parser_ctx *scanner,
> }
>
> LTTNG_HIDDEN
> -void yyerror(struct filter_parser_ctx *parser_ctx, const char *str)
> +void yyerror(struct filter_parser_ctx *parser_ctx, yyscan_t scanner, const char *str)
> {
> fprintf(stderr, "error %s\n", str);
> }
> @@ -201,7 +201,7 @@ int yywrap(void)
>
> #define parse_error(parser_ctx, str) \
> do { \
> - yyerror(parser_ctx, YY_("parse error: " str "\n")); \
> + yyerror(parser_ctx, parser_ctx->scanner, YY_("parse error: " str "\n")); \
> YYERROR; \
> } while (0)
>
> @@ -238,7 +238,7 @@ static void filter_ast_free(struct filter_ast *ast)
> LTTNG_HIDDEN
> int filter_parser_ctx_append_ast(struct filter_parser_ctx *parser_ctx)
> {
> - return yyparse(parser_ctx);
> + return yyparse(parser_ctx, parser_ctx->scanner);
> }
>
> LTTNG_HIDDEN
> @@ -301,7 +301,8 @@ void filter_parser_ctx_free(struct filter_parser_ctx *parser_ctx)
> %define api.pure
> /* %locations */
> %parse-param {struct filter_parser_ctx *parser_ctx}
> -%lex-param {struct filter_parser_ctx *parser_ctx}
> +%parse-param {yyscan_t scanner}
> +%lex-param {yyscan_t scanner}
> %start translation_unit
> %token CHARACTER_CONSTANT_START SQUOTE STRING_LITERAL_START DQUOTE
> %token ESCSEQ CHAR_STRING_TOKEN
> --
> 1.8.3.4
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 5+ messages in thread