Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@ericsson.com>
To: John Marshall <John.W.Marshall@glasgow.ac.uk>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Cc: Tom Tromey <tom@tromey.com>
Subject: Re: [PATCH] Fix build failure with macOS bison
Date: Mon, 07 Jan 2019 22:09:00 -0000	[thread overview]
Message-ID: <7dd4f695-ec03-5cd7-47ec-7caf1a5f4414@ericsson.com> (raw)
In-Reply-To: <051D67D6-A7D8-4A6F-A54E-501051C2D4BA@glasgow.ac.uk>

On 2019-01-07 11:14 a.m., John Marshall wrote:
> On 7 Jan 2019, at 15:38, John Marshall <John.W.Marshall@glasgow.ac.uk> wrote:
>> Tom Tromey wrote:
>>> Simon -- I can't readily try this patch on macOS right now, so I was
>>> hoping you could.
>>
>> I have independently done the same bisection as in gdb/24060 (should have looked at the list archives more carefully first!), and can confirm that this patch fixes c-exp.y. However the same problem occurs for f-exp.y (and perhaps others).
> 
> Problem exists in c-exp.y, f-exp.y, and p-exp.y. The others have avoided this (probably mostly by luck) by naming their similar thing DOLLAR_VARIABLE (d-exp.y and go-exp.y) or other similar names.
> 
>     John
> 

Indeed.

Since other files already use the name DOLLAR_VARIABLE, I suggest using it
too.  I went a bit further and changed other .y files too, so they use a
consistent name.

Tom, are you ok with this?


From a2ac953450b79b460064ebc717d54c5d896b69c2 Mon Sep 17 00:00:00 2001
From: Tom Tromey <tom@tromey.com>
Date: Sun, 6 Jan 2019 09:49:11 -0700
Subject: [PATCH] Fix build failure with macOS bison

PR gdb/24060 points out a compilation failure of the C, Fortran and Pascal
parsers when they are built using the macOS system bison.  The bug is a name
clash between the VARIABLE token name and the VARIABLE enumerator in ui-out.h.

This patch renames VARIABLE in c-exp.y, f-exp.y and p-exp.y to DOLLAR_VARIABLE
to avoid the clash.  It also renames similar variables in other .y files so
that all languages use the same name.

gdb/ChangeLog
2019-01-07  Tom Tromey  <tom@tromey.com>
2019-01-07  Simon Marchi  <simon.marchi@ericsson.com>

	PR gdb/24060:
	* ada-exp.y (DOLLAR_VARIABLE): Rename from SPECIAL_VARIABLE.
	* ada-lex.l (DOLLAR_VARIABLE): Likewise.
	* c-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
	* f-exp.y (DOLLAR_VARIABLE): Likewise.
	* m2-exp.y (DOLLAR_VARIABLE): Rename from INTERNAL_VAR.
	* p-exp.y (DOLLAR_VARIABLE): Rename from VARIABLE.
---
 gdb/ada-exp.y | 4 ++--
 gdb/ada-lex.l | 2 +-
 gdb/c-exp.y   | 8 ++++----
 gdb/f-exp.y   | 6 +++---
 gdb/m2-exp.y  | 6 +++---
 gdb/p-exp.y   | 6 +++---
 6 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index 5342e6b2b70..5925416e88f 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -151,7 +151,7 @@ static struct type *type_system_address (struct parser_state *);

 /* Special type cases, put in to allow the parser to distinguish different
    legal basetypes.  */
-%token <sval> SPECIAL_VARIABLE
+%token <sval> DOLLAR_VARIABLE

 %nonassoc ASSIGN
 %left _AND_ OR XOR THEN ELSE
@@ -275,7 +275,7 @@ primary :	var_or_type	%prec VAR
 			}
 	;

-primary :	SPECIAL_VARIABLE /* Various GDB extensions */
+primary :	DOLLAR_VARIABLE /* Various GDB extensions */
 			{ write_dollar_variable (pstate, $1); }
 	;

diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l
index 95ea92e12d4..05af013c258 100644
--- a/gdb/ada-lex.l
+++ b/gdb/ada-lex.l
@@ -290,7 +290,7 @@ false		{ return FALSEKEYWORD; }
 "$"({LETTER}|{DIG}|"$")*  {
 		  yylval.sval.ptr = yytext;
 		  yylval.sval.length = yyleng;
-		  return SPECIAL_VARIABLE;
+		  return DOLLAR_VARIABLE;
 		}

 	/* CATCH-ALL ERROR CASE */
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 155fe09f37a..f3ef23c75a7 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -234,7 +234,7 @@ static void c_print_token (FILE *file, int type, YYSTYPE value);
    legal basetypes.  */
 %token SIGNED_KEYWORD LONG SHORT INT_KEYWORD CONST_KEYWORD VOLATILE_KEYWORD DOUBLE_KEYWORD

-%token <sval> VARIABLE
+%token <sval> DOLLAR_VARIABLE

 %token <opcode> ASSIGN_MODIFY

@@ -798,7 +798,7 @@ exp	:	FLOAT
 exp	:	variable
 	;

-exp	:	VARIABLE
+exp	:	DOLLAR_VARIABLE
 			{
 			  write_dollar_variable (pstate, $1);
 			}
@@ -2884,7 +2884,7 @@ lex_one_token (struct parser_state *par_state, bool *is_quoted_name)
       }

   if (*tokstart == '$')
-    return VARIABLE;
+    return DOLLAR_VARIABLE;

   if (parse_completion && *lexptr == '\0')
     saw_name_at_eof = 1;
@@ -3337,7 +3337,7 @@ c_print_token (FILE *file, int type, YYSTYPE value)
       break;

     case NSSTRING:
-    case VARIABLE:
+    case DOLLAR_VARIABLE:
       parser_fprintf (file, "sval<%s>", copy_name (value.sval));
       break;

diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index ae6f86a34be..d70c66474c0 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -161,7 +161,7 @@ static int parse_number (struct parser_state *, const char *, int,
 %token BOOL_AND BOOL_OR BOOL_NOT
 %token <lval> CHARACTER

-%token <voidval> VARIABLE
+%token <voidval> DOLLAR_VARIABLE

 %token <opcode> ASSIGN_MODIFY

@@ -426,7 +426,7 @@ exp	:	FLOAT
 exp	:	variable
 	;

-exp	:	VARIABLE
+exp	:	DOLLAR_VARIABLE
 	;

 exp	:	SIZEOF '(' type ')'	%prec UNARY
@@ -1135,7 +1135,7 @@ yylex (void)
   if (*tokstart == '$')
     {
       write_dollar_variable (pstate, yylval.sval);
-      return VARIABLE;
+      return DOLLAR_VARIABLE;
     }

   /* Use token-type TYPENAME for symbols that happen to be defined
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y
index a0394916172..85d587651a2 100644
--- a/gdb/m2-exp.y
+++ b/gdb/m2-exp.y
@@ -125,7 +125,7 @@ static int number_sign = 1;
 /* The GDB scope operator */
 %token COLONCOLON

-%token <voidval> INTERNAL_VAR
+%token <voidval> DOLLAR_VARIABLE

 /* M2 tokens */
 %left ','
@@ -535,7 +535,7 @@ variable:	fblock
 	;

 /* GDB internal ($foo) variable */
-variable:	INTERNAL_VAR
+variable:	DOLLAR_VARIABLE
 	;

 /* GDB scope operator */
@@ -949,7 +949,7 @@ yylex (void)
   if (*tokstart == '$')
     {
       write_dollar_variable (pstate, yylval.sval);
-      return INTERNAL_VAR;
+      return DOLLAR_VARIABLE;
     }

   /* Use token-type BLOCKNAME for symbols that happen to be defined as
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index 7e2769e33ca..31e8c4bea66 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -158,7 +158,7 @@ static int search_field;
 /* Special type cases, put in to allow the parser to distinguish different
    legal basetypes.  */

-%token <voidval> VARIABLE
+%token <voidval> DOLLAR_VARIABLE


 /* Object pascal */
@@ -521,7 +521,7 @@ exp	:	FLOAT
 exp	:	variable
 	;

-exp	:	VARIABLE
+exp	:	DOLLAR_VARIABLE
 			/* Already written by write_dollar_variable.
 			   Handle current_type.  */
  			{  if (intvar) {
@@ -1492,7 +1492,7 @@ yylex (void)
       tmp[namelen] = '\0';
       intvar = lookup_only_internalvar (tmp + 1);
       free (uptokstart);
-      return VARIABLE;
+      return DOLLAR_VARIABLE;
     }

   /* Use token-type BLOCKNAME for symbols that happen to be defined as
-- 
2.20.1


  reply	other threads:[~2019-01-07 22:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-07 15:38 John Marshall
2019-01-07 16:14 ` John Marshall
2019-01-07 22:09   ` Simon Marchi [this message]
2019-01-08  2:00     ` Tom Tromey
2019-01-08 17:46       ` Simon Marchi
  -- strict thread matches above, loose matches on Subject: below --
2019-01-06 16:49 Tom Tromey
2019-01-06 16:50 ` Tom Tromey
2019-01-06 16:53   ` Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7dd4f695-ec03-5cd7-47ec-7caf1a5f4414@ericsson.com \
    --to=simon.marchi@ericsson.com \
    --cc=John.W.Marshall@glasgow.ac.uk \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox