[gdb/build] Fix yysymbol_kind_t odr violation
authorTom de Vries <tdevries@suse.de>
Thu, 17 Aug 2023 15:09:39 +0000 (17:09 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 17 Aug 2023 15:09:39 +0000 (17:09 +0200)
When building gdb with -O2 -flto on openSUSE Tumbleweed (using bison 3.8.2) I
run into:
...
ada-exp.c.tmp:653: warning: type 'yysymbol_kind_t' violates the C++ One \
  Definition Rule [-Wodr]
c-exp.c.tmp:398: note: an enum with different value name is defined in \
  another translation unit
ada-exp.c.tmp:660: note: name 'YYSYMBOL_NULL_PTR' differs from name \
  'YYSYMBOL_COMPLEX_INT' defined in another translation unit
c-exp.c.tmp:405: note: mismatching definition
...

Fix this by renaming to ada_exp_yysymbol_kind_t and likewise for other .y
files.

Tested on x86_64-linux.

PR build/22395
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395

gdb/Makefile.in

index ccdd84beea63b21c7e7bffb2e57dbb4cd585af30..54c5312e19ae654580ffce13e15e0150f5d55468 100644 (file)
@@ -2511,6 +2511,7 @@ po/$(PACKAGE).pot: force
             -e 's/YY_NULL/YY_NULLPTR/g' \
             -e "s/YYSTYPE/$(subst -,_,$*)_YYSTYPE/g" \
             -e "s/yyalloc/$(subst -,_,$*)_yyalloc/g" \
+            -e "s/yysymbol_kind_t/$(subst -,_,$*)_yysymbol_kind_t/g" \
          < $@.tmp > $@.new && \
          rm -f $@.tmp && \
          mv $@.new $@