]> git.saurik.com Git - bison.git/commitdiff
yacc.c: do not use __attribute__ unprotected
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 8 Apr 2013 08:39:48 +0000 (10:39 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 8 Apr 2013 08:44:09 +0000 (10:44 +0200)
Reported by Victor Khomenko.
http://lists.gnu.org/archive/html/bug-bison/2013-04/msg00001.html

* data/glr.c (YYUSE, __attribute__): Fuse their definition into...
* data/c.m4 (b4_attribute_define): this new macro.
* data/yacc.c, data/glr.c: Use it.

NEWS
THANKS
data/c.m4
data/glr.c
data/yacc.c

diff --git a/NEWS b/NEWS
index 8da9cf9f855d2ca35b40ba1a556e37f07c53b81d..b499cc1359ed315f1a1931e9cbe2d9a2c074c38c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,11 @@ GNU Bison NEWS
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
+** Bug fixes
+
+*** Fix compiler attribute portability (yacc.c)
+
+  With locations enabled, __attribute__ was used unprotected.
 
 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
diff --git a/THANKS b/THANKS
index ed978d3760b10028ae7bac7079d3f9960f7b9f2f..9b24974f878b8c25dcd503ee836c428ca5b9a160 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -121,6 +121,7 @@ Tom Tromey                tromey@cygnus.com
 Tommy Nordgren            tommy.nordgren@chello.se
 Troy A. Johnson           troyj@ecn.purdue.edu
 Tys Lefering              gccbison@gmail.com
+Victor Khomenko           victor.khomenko@newcastle.ac.uk
 Vin Shelton               acs@alumni.princeton.edu
 W.C.A. Wijngaards         wouter@NLnetLabs.nl
 Wayne Green               wayne@infosavvy.com
index dc3d303616d7e3c746756ccf7252de28e9b67fa6..a1dc2c583a4f5f6b654c10928648a708c7d2aa49 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -187,9 +187,29 @@ m4_define([b4_table_value_equals],
        [(!!(($2) == ($3)))])])
 
 
-## ---------##
-## Values.  ##
-## ---------##
+## ----------------- ##
+## Compiler issues.  ##
+## ----------------- ##
+
+# b4_attribute_define
+# -------------------
+# Provide portability for __attribute__.
+m4_define([b4_attribute_define],
+[#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+#  define __attribute__(Spec) /* empty */
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+])
 
 
 # b4_null_define
@@ -405,7 +425,7 @@ m4_define([b4_c_arg],
 ## ----------- ##
 
 # b4_sync_start(LINE, FILE)
-# -----------------------
+# -------------------------
 m4_define([b4_sync_start], [[#]line $1 $2])
 
 
index 02a76c211dece970df0c1e750c7c97179bb21490..958b0403defbd4283ca6d8494eb273fbc37b0a27 100644 (file)
@@ -246,13 +246,6 @@ b4_percent_code_get[]dnl
 # endif
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
 # define YYID(N) (N)
@@ -291,17 +284,7 @@ b4_percent_code_get[]dnl
 # define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0))
 #endif
 
-/*-----------------.
-| GCC extensions.  |
-`-----------------*/
-
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
-# endif
-#endif
+]b4_attribute_define[
 
 #ifndef YYASSERT
 # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
index b34549f10a280c346740a907983f523e9a3dcc26..abc949b6985f2d42a6e93ec2b4fce8e3896dc6cf 100644 (file)
@@ -447,12 +447,7 @@ typedef short int yytype_int16;
 # endif
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
+]b4_attribute_define[
 
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint