Fix build failure on macOS
authorTom Tromey <tromey@adacore.com>
Wed, 18 Dec 2019 15:03:01 +0000 (08:03 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 18 Dec 2019 17:28:46 +0000 (10:28 -0700)
PR build/25250 notes that the gdb 9 pre-release fails to build on
macOS, due to a name clash between field_kind::STRING and the STRING
token in ada-exp.y.  I am not sure (I couldn't reproduce this myself),
but presumably this is due to differences caused by the version of
bison in use there.

This patch works around the problem by renaming the field_kind
enumerator.  I chose to rename this one because it is used in
relatively few places -- it's just an implementation detail of the
style code.

This version also renames field_kind::SIGNED for consistency.

Let me know what you think.  I intend to check this in on the gdb 9
branch as well.

gdb/ChangeLog
2019-12-18  Tom Tromey  <tromey@adacore.com>

PR build/25250:
* ui-out.c (ui_out::vmessage): Update.
* ui-out.h (enum class field_kind) <FIELD_STRING, FIELD_SIGNED>:
Rename.
(string_field): Update.
(signed_field): Update.

Change-Id: Iae9f36f1b793e22c61fee0de2ab2d508668ee7e4

gdb/ChangeLog
gdb/ui-out.c
gdb/ui-out.h

index 7b58fe817ae54a68765284bed4ad1451ce4fff41..26d152b817f24b5bdc20a4d4d75b7ddbc0cf6da6 100644 (file)
@@ -1,3 +1,12 @@
+2019-12-18  Tom Tromey  <tromey@adacore.com>
+
+       PR build/25250:
+       * ui-out.c (ui_out::vmessage): Update.
+       * ui-out.h (enum class field_kind) <FIELD_STRING, FIELD_SIGNED>:
+       Rename.
+       (string_field): Update.
+       (signed_field): Update.
+
 2019-12-18  Simon Marchi  <simon.marchi@efficios.com>
 
        * top.c (print_gdb_configuration): Adjust indentation.
index 80845f4bcaa8d61ee3e7c202b645831a8b22e8da..2b3b7e4accb3087f577e3322679f5f2c00cd2665 100644 (file)
@@ -730,13 +730,13 @@ ui_out::vmessage (const ui_file_style &in_style, const char *format,
                base_field_s *bf = va_arg (args, base_field_s *);
                switch (bf->kind)
                  {
-                 case field_kind::SIGNED:
+                 case field_kind::FIELD_SIGNED:
                    {
                      auto *f = (signed_field_s *) bf;
                      field_signed (f->name, f->val);
                    }
                    break;
-                 case field_kind::STRING:
+                 case field_kind::FIELD_STRING:
                    {
                      auto *f = (string_field_s *) bf;
                      field_string (f->name, f->str);
index 5c96a7825be4aaeca10a9b7ae976742127010fa3..c3ef8a57006a77a4717b12c20792bf25def6f35d 100644 (file)
@@ -77,8 +77,11 @@ enum ui_out_type
 /* The possible kinds of fields.  */
 enum class field_kind
   {
-    SIGNED,
-    STRING,
+    /* "FIELD_STRING" needs has a funny name to avoid clashes with
+       tokens named "STRING".  See PR build/25250.  FIELD_SIGNED is
+       given a similar name for consistency.  */
+    FIELD_SIGNED,
+    FIELD_STRING,
   };
 
 /* The base type of all fields that can be emitted using %pF.  */
@@ -105,7 +108,7 @@ signed_field (const char *name, LONGEST val,
              signed_field_s &&tmp = {})
 {
   tmp.name = name;
-  tmp.kind = field_kind::SIGNED;
+  tmp.kind = field_kind::FIELD_SIGNED;
   tmp.val = val;
   return &tmp;
 }
@@ -126,7 +129,7 @@ string_field (const char *name, const char *str,
              string_field_s &&tmp = {})
 {
   tmp.name = name;
-  tmp.kind = field_kind::STRING;
+  tmp.kind = field_kind::FIELD_STRING;
   tmp.str = str;
   return &tmp;
 }