From: Nick Ing-Simmons Date: Thu, 14 Jun 2001 08:25:07 +0000 (+0000) Subject: Add new step to run_byacc which: X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f4db54055cd36d83622f77949fd6ab7c67198101;p=p5sagit%2Fp5-mst-13.2.git Add new step to run_byacc which: A. Corrects #line NNN "perly.c" lines so warnings etc. are trackable B. Adds extra () to the two if (var = ...) constructs gcc -Wall winges about. p4raw-id: //depot/perlio@10586 --- diff --git a/MANIFEST b/MANIFEST index 0ca5004..e5f39df 100644 --- a/MANIFEST +++ b/MANIFEST @@ -10,6 +10,7 @@ Changes5.005 Differences between 5.004 and 5.005 Changes5.6 Differences between 5.005 and 5.6 Configure Portability tool Copying The GNU General Public License +Cross/README Cross-compilation. EXTERN.h Included before foreign .h files INSTALL Detailed installation instructions INTERN.h Included before domestic .h files @@ -1193,6 +1194,7 @@ lib/validate.pl Perl library supporting wholesale file mode validation lib/vars.pm Declare pseudo-imported global variables lib/warnings.pm For "use warnings" lib/warnings/register.pm For "use warnings::register" +locale.c locale-specific utility functions makeaperl.SH perl script that produces a new perl binary makedef.pl Create symbol export lists for linking makedepend.SH Precursor to makedepend @@ -1215,6 +1217,7 @@ mpeix/relink MPE/iX port mv-if-diff Script to mv a file if it changed myconfig.SH Prints summary of the current configuration nostdio.h Cause compile error on stdio calls +numeric.c Miscellaneous numeric conversion routines objXSUB.h Scoping macros for Perl Object in extensions op.c Opcode syntax tree code op.h Opcode syntax tree header @@ -1288,6 +1291,7 @@ perly.c A byacc'ed perly.y perly.fixer A program to remove yacc stack limitations perly.h The header file for perly.c perly.y Yacc grammar for perl +perlyline.pl Perl code to fix #line directives and gcc warnings in perly.c perly_c.diff Fixup perly.c to allow recursion plan9/aperl Shell to make Perl error messages Acme-friendly plan9/arpa/inet.h Plan9 port: replacement C header file diff --git a/Makefile.SH b/Makefile.SH index 23b0e46..618f120 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -26,7 +26,7 @@ ldlibpth='' DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB' case "$useshrplib" in true) - # Prefix all runs of 'miniperl' and 'perl' with + # Prefix all runs of 'miniperl' and 'perl' with # $ldlibpth so that ./perl finds *this* shared libperl. case "$LD_LIBRARY_PATH" in '') @@ -263,13 +263,13 @@ h = $(h1) $(h2) $(h3) $(h4) $(h5) c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c -c4 = globals.c perlio.c perlapi.c +c4 = globals.c perlio.c perlapi.c numeric.c locale.c c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) locale$(OBJ_EXT) obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) @@ -295,7 +295,7 @@ all: $(FIRSTMAKEFILE) miniperl extra.pods $(private) $(public) $(dynamic_ext) $( compile: all echo "testing compilation" > testcompile; cd utils; $(MAKE) compile; - cd x2p; $(MAKE) compile; + cd x2p; $(MAKE) compile; cd pod; $(MAKE) compile; translators: miniperl lib/Config.pm FORCE @@ -559,7 +559,7 @@ perl.gprof: /usr/bin/gprof perl.gprof.config # Microperl. This is just a convenience thing if one happens to # build also the full Perl and therefore the real big Makefile: -# usually one should manually explicitly issue the below command. +# usually one should manually explicitly issue the below command. microperl: $(MAKE) -f Makefile.micro @@ -594,7 +594,7 @@ preplibrary: miniperl lib/Config.pm lib/lib.pm lib/re.pm autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm # Take care to avoid modifying lib/Config.pm without reason -# (If trying to create a new port and having problems with the configpm script, +# (If trying to create a new port and having problems with the configpm script, # try 'make minitest' and/or commenting out the tests at the end of configpm.) lib/Config.pm: config.sh miniperl configpm lib/re.pm $(LDLIBPTH) ./miniperl configpm configpm.tmp @@ -686,6 +686,7 @@ run_byacc: FORCE check_byacc -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c sed -e '/^extern YYSTYPE yy/D' y.tab.h >yh.tmp && mv yh.tmp y.tab.h cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h + perl -i perlyline.pl perly.c chmod 664 vms/perly_c.vms vms/perly_h.vms perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms @@ -855,11 +856,11 @@ _cleaner2: rm -f testcompile compilelog -rmdir lib/B lib/Data lib/Digest lib/Encode lib/IO/Socket lib/IO lib/Filter/Util lib/List lib/MIME lib/PerlIO lib/Scalar lib/Sys lib/Thread lib/XS -_realcleaner: +_realcleaner: @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=realclean @$(LDLIBPTH) $(MAKE) _cleaner2 -_verycleaner: +_verycleaner: @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean @$(LDLIBPTH) $(MAKE) _cleaner2 -rm -f *~ *.orig */*~ */*.orig */*/*~ */*/*.orig diff --git a/perly.c b/perly.c index 61a6fd3..a98279a 100644 --- a/perly.c +++ b/perly.c @@ -1405,7 +1405,7 @@ static char *yyrule[] = { #endif #define yyparse() Perl_yyparse(pTHX) -#line 1481 "perly.c" +#line 1409 "perly.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab @@ -1437,7 +1437,7 @@ yyparse() ysave->oldyylval = yylval; #if YYDEBUG - if (yys = getenv("YYDEBUG")) + if ((yys = getenv("YYDEBUG"))) { yyn = *yys; if (yyn >= '0' && yyn <= '9') @@ -1464,7 +1464,7 @@ yyparse() *yyssp = yystate = 0; yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; + if ((yyn = yydefred[yystate])) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; @@ -2455,7 +2455,7 @@ case 197: #line 786 "perly.y" { yyval.opval = yyvsp[0].opval; } break; -#line 2477 "perly.c" +#line 2459 "perly.c" } yyssp -= yym; yystate = *yyssp; diff --git a/perlyline.pl b/perlyline.pl new file mode 100644 index 0000000..f360fb4 --- /dev/null +++ b/perlyline.pl @@ -0,0 +1,11 @@ +$line = 1; +while (<>) + { + $line++; + # 1st correct #line directives for perly.c itself + s/^(#line\s+)\d+(\s*"perly\.c"\s*)$/$1$line$2/; + # now add () round things gcc dislikes + s/if \(yyn = yydefred\[yystate\]\)/if ((yyn = yydefred[yystate]))/; + s/if \(yys = getenv\("YYDEBUG"\)\)/if ((yys = getenv("YYDEBUG")))/; + print; + }