Replace YY_NULL with YY_NULLPTR in LANG-exp.c
authorYao Qi <yao.qi@linaro.org>
Thu, 3 Nov 2016 16:09:42 +0000 (16:09 +0000)
committerYao Qi <yao.qi@linaro.org>
Thu, 3 Nov 2016 16:09:42 +0000 (16:09 +0000)
As we require c++11, GDB fails to build if bison is not new enough.
I see the following error on the system (fedora 19) that bison is
2.6.4,

g++ -std=gnu++11 .... \
-c -o ada-exp.o -MT ada-exp.o -MMD -MP -MF .deps/ada-exp.Tpo 'if test -f ada-exp.c; then echo ada-exp.c; else echo ../../binutils-gdb/gdb/ada-exp.c; fi`
In file included from ../../binutils-gdb/gdb/ada-exp.y:731:0:
ada-lex.c:113:0: error: "YY_NULL" redefined [-Werror]
 #define YY_NULL 0
 ^
ada-exp.c:158:0: note: this is the location of the previous definition
 #   define YY_NULL nullptr
 ^
cc1plus: all warnings being treated as errors
make: *** [ada-exp.o] Error 1

Both ada-exp.c and ada-lex.c has macro YY_NULL, like this,

 $ cat 1.c
 # ifndef YY_NULL
 #  if defined __cplusplus && 201103L <= __cplusplus
 #   define YY_NULL nullptr
 #  else
 #   define YY_NULL 0
 #  endif
 # endif

 #define YY_NULL 0

as we can see, YY_NULL is defined differently (nullptr vs 0)

$ g++ -std=c++11 -Wall 1.c -c
1.c:9:0: warning: "YY_NULL" redefined
 #define YY_NULL 0
 ^
1.c:3:0: note: this is the location of the previous definition
 #   define YY_NULL nullptr
 ^
$ g++ -Wall 1.c -c

bison renames YY_NULL to YY_NULLPTR in 2013 Nov,
https://lists.gnu.org/archive/html/bison-patches/2013-11/msg00002.html
and bison released later than 2013 Nov have this patch.  Bison 3.0.2,
released on 2013 Dec, is OK.

The fix is to replace YY_NULL with YY_NULLPTR via sed.  With old bison,
YY_NULL becomes YY_NULLPTR; with new bison, YY_NULLPTR becomes
YY_NULLPTRPTR,

gdb:

2016-11-03  Yao Qi  <yao.qi@linaro.org>

* Makefile.in (.y.c): Replace YY_NULL with YY_NULLPTR.

gdb/ChangeLog
gdb/Makefile.in

index c1339517e07ad0beb0b499b9140bfedea073d23e..1fd85cede301e06579a7a217b4d587d550487be6 100644 (file)
@@ -1,3 +1,7 @@
+2016-11-03  Yao Qi  <yao.qi@linaro.org>
+
+       * Makefile.in (.y.c): Replace YY_NULL with YY_NULLPTR.
+
 2016-11-03  Yao Qi  <yao.qi@linaro.org>
            Pedro Alves <palves@redhat.com>
 
index d035d8e242a166de0346e5ee3452b59a193104b4..6db63c7e90d4e6db3567ec1a11942fb28f6ee707 100644 (file)
@@ -1894,6 +1894,7 @@ po/$(PACKAGE).pot: force
             -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \
             -e 's/\([ \t;,(]\)free$$/\1xfree/g' \
             -e '/^#line.*y.tab.c/d' \
+            -e 's/YY_NULL/YY_NULLPTR/g' \
          < $@.tmp > $@
        rm -f $@.tmp
 .l.c:
This page took 0.028934 seconds and 4 git commands to generate.