Browse Source

include my yyget/yyset patch

Ralf S. Engelschall 23 years ago
parent
commit
895b733e2d
2 changed files with 79 additions and 1 deletions
  1. 75 0
      flex/flex.patch
  2. 4 1
      flex/flex.spec

+ 75 - 0
flex/flex.patch

@@ -0,0 +1,75 @@
+From rse@en1.engelschall.com Wed Jul  3 10:25:57 2002
+Date: Wed, 3 Jul 2002 10:25:57 +0200
+From: "Ralf S. Engelschall" <rse@en1.engelschall.com>
+To: help-flex@gnu.org
+Cc: john43@astro.temple.edu
+Subject: [PATCH] YYLTYPE, yy[gs]et_lloc, -P
+Message-ID: <20020703082557.GA68291@engelschall.com>
+Reply-To: rse@engelschall.com
+References: <20011106161709.A67206@engelschall.com>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+In-Reply-To: <20011106161709.A67206@engelschall.com>
+User-Agent: Mutt/1.4i
+Organization: Engelschall, Germany.
+X-Web-Homepage: http://www.engelschall.com/
+X-PGP-Public-Key: http://www.engelschall.com/ho/rse/pgprse.asc
+X-PGP-Fingerprint: 00 C9 21 8E D1 AB 70 37 DD 67 A2 3A 0A 6F 8D A5
+Status: RO
+Content-Length: 2064
+Lines: 52
+
+[the following was already reported in November 2001 for Flex
+2.5.6-developer-2001-11-01, but the bug is still present in Flex 2.5.8]
+
+Just a little thing I've recognized while hacking on a scanner which is
+generated by flex-2.5.8: Although I used "flex ... -Pl2_spec_ ..." the
+generated object file still has two "yy"-prefixed symbols:
+
+| :> nm -g l2_spec_scan.o  | grep yy
+| 00000c04 T yyget_lloc
+| 00000c10 T yyset_lloc
+
+This is because at the top of the generated l2_spec_scan.c there is:
+
+| #ifdef YYLTYPE
+| #define yyget_lloc l2_spec_get_lloc
+| #define yyset_lloc l2_spec_set_lloc
+| #endif
+
+Unfortunately the YYLTYPE will _never_ be defined at this point, because
+it is defined by the parser and the parsers' include file can be included
+only in %{ ..%} sections, which in turn are inserted in the generated
+code always _after_ the above sequence.
+
+It certainly is not correct to change the position of inserting
+the %{...%} sections, of course. But we can just leave out the
+#ifdef..#endif, because even if YYLTYPE is not used (no location
+tracking is used) or not defined, the extra namespace-preserving
+definitions of yy[gs]et_lloc will not hurt.
+
+So, I recommend to apply the following patch to Flex 2.5.8 and hope it
+is finally considered for inclusion into forthcoming versions:
+
+=================================================================
+--- main.c.orig	Wed Jun 19 15:26:44 2002
++++ main.c	Wed Jul  3 10:12:43 2002
+@@ -384,10 +384,8 @@
+             outn( "#ifdef YY_REENTRANT_BISON_PURE" );
+             GEN_PREFIX( "get_lval" );
+             GEN_PREFIX( "set_lval" );
+-            outn( "#ifdef YYLTYPE" );
+             GEN_PREFIX( "get_lloc" );
+             GEN_PREFIX( "set_lloc" );
+-            outn( "#endif" );
+             outn( "#endif" );
+
+             if ( do_yylineno && reentrant)
+=================================================================
+
+Yours,
+                                       Ralf S. Engelschall
+                                       rse@engelschall.com
+                                       www.engelschall.com
+

+ 4 - 1
flex/flex.spec

@@ -43,11 +43,12 @@ Distribution: OpenPKG [REL]
 Group:        Language
 License:      BSD
 Version:      %{V_release}
-Release:      20020701
+Release:      20020717
 
 #   list of sources
 Source0:      ftp://ftp.gnu.org/non-gnu/flex/flex-%{V_release}.tar.gz
 Source1:      ftp://ftp.uncg.edu/people/wlestes/flex-%{V_beta}.tar.gz
+Patch1:       flex.patch
 
 #   build information
 Prefix:       %{l_prefix}
@@ -73,6 +74,8 @@ AutoReqProv:  no
     %setup0 -q -c -n flex-%{version}
 %if "%{with_beta}" == "yes"
     %setup1 -q -T -D -a 1
+    cd flex-%{V_beta}
+    %patch1 -p0
 %endif
 
 %build