Module Name:    src
Committed By:   rillig
Date:           Fri Sep 25 23:24:49 UTC 2020

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/usr.bin/make/unit-tests: Makefile dep-wildcards.exp
Added Files:
        src/usr.bin/make/unit-tests: dep-colon-bug-cross-file.exp
            dep-colon-bug-cross-file.mk

Log Message:
make(1): add test for harmless bug in Parse_File

When there is a dependency group at the end of a top-level makefile,
this dependency group is not finished properly.  This allows to add
further commands to the targets of this dependency group, which was not
intended.


To generate a diff of this commit:
cvs rdiff -u -r1.929 -r1.930 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.151 -r1.152 src/usr.bin/make/unit-tests/Makefile
cvs rdiff -u -r0 -r1.1 \
    src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.exp \
    src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk
cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/dep-wildcards.exp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.929 src/distrib/sets/lists/tests/mi:1.930
--- src/distrib/sets/lists/tests/mi:1.929	Fri Sep 25 18:18:25 2020
+++ src/distrib/sets/lists/tests/mi	Fri Sep 25 23:24:49 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.929 2020/09/25 18:18:25 rillig Exp $
+# $NetBSD: mi,v 1.930 2020/09/25 23:24:49 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4614,6 +4614,8 @@
 ./usr/tests/usr.bin/make/unit-tests/counter-append.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/counter.exp					tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/counter.mk					tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/dep-colon-bug-cross-file.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/dep-colon.exp				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/dep-colon.mk				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/make/unit-tests/dep-double-colon.exp			tests-usr.bin-tests	compattestfile,atf

Index: src/usr.bin/make/unit-tests/Makefile
diff -u src/usr.bin/make/unit-tests/Makefile:1.151 src/usr.bin/make/unit-tests/Makefile:1.152
--- src/usr.bin/make/unit-tests/Makefile:1.151	Fri Sep 25 20:11:06 2020
+++ src/usr.bin/make/unit-tests/Makefile	Fri Sep 25 23:24:49 2020
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.151 2020/09/25 20:11:06 rillig Exp $
+# $NetBSD: Makefile,v 1.152 2020/09/25 23:24:49 rillig Exp $
 #
 # Unit tests for make(1)
 #
@@ -74,6 +74,7 @@ TESTS+=		counter
 TESTS+=		counter-append
 TESTS+=		dep
 TESTS+=		dep-colon
+TESTS+=		dep-colon-bug-cross-file
 TESTS+=		dep-double-colon
 TESTS+=		dep-exclam
 TESTS+=		dep-none

Index: src/usr.bin/make/unit-tests/dep-wildcards.exp
diff -u src/usr.bin/make/unit-tests/dep-wildcards.exp:1.2 src/usr.bin/make/unit-tests/dep-wildcards.exp:1.3
--- src/usr.bin/make/unit-tests/dep-wildcards.exp:1.2	Tue Sep  8 05:33:05 2020
+++ src/usr.bin/make/unit-tests/dep-wildcards.exp	Fri Sep 25 23:24:49 2020
@@ -1,3 +1,4 @@
+dep-colon-bug-cross-file.mk
 dep-colon.mk
 dep-double-colon.mk
 dep-exclam.mk

Added files:

Index: src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.exp
diff -u /dev/null src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.exp:1.1
--- /dev/null	Fri Sep 25 23:24:49 2020
+++ src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.exp	Fri Sep 25 23:24:49 2020
@@ -0,0 +1,3 @@
+: pass 1
+: pass 2
+exit status 0
Index: src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk
diff -u /dev/null src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk:1.1
--- /dev/null	Fri Sep 25 23:24:49 2020
+++ src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk	Fri Sep 25 23:24:49 2020
@@ -0,0 +1,43 @@
+# $NetBSD: dep-colon-bug-cross-file.mk,v 1.1 2020/09/25 23:24:49 rillig Exp $
+#
+# Until 2020-09-25, the very last dependency group of a top-level makefile
+# was not finished properly.  This made it possible to add further commands
+# to that target.
+#
+# In pass 1, there is a dependency group at the bottom of the file.
+# This dependency group is not finished properly.  Finishing the dependency
+# group would add the OP_HAS_COMMANDS flag to the "all" target, thereby
+# preventing any commands from being added later.
+#
+# After the file has been parsed completely, it is parsed again in pass 2.
+# In this pass, another command is added to the "current dependency group",
+# which is still the one from pass 1, which means it is possible to even
+# cross file boundaries.
+#
+# TODO: Finish the file properly in Parse_File.
+#
+# Oops, even worse.  Running this test in a make from 2020-09-25 or earlier
+# on NetBSD 8.0 x86_64 with MALLOC_OPTIONS=JA produces this or a similar
+# output:
+#
+#	make: cannot open ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.
+#
+# The 'Z' means access to already freed memory; see jemalloc(3).  The cause
+# for this is that in MainParseArgs, the command line arguments were not
+# properly copied before storing them with global variables.
+
+PASS?=	1
+
+.if ${PASS} == 2
+all:
+	: pass 2
+.endif
+
+.if ${PASS} == 1
+
+PASS=	2
+.MAKEFLAGS: -f ${.PARSEDIR:q}/${.PARSEFILE:q}
+
+all:
+	: pass 1
+.endif

Reply via email to