Module Name:    src
Committed By:   rillig
Date:           Sun Sep 27 09:53:41 UTC 2020

Modified Files:
        src/usr.bin/make/unit-tests: dep-colon-bug-cross-file.mk
            varparse-undef-partial.mk

Log Message:
make(1): fix CRLF line endings in unit tests


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
    src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk
cvs rdiff -u -r1.1 -r1.2 \
    src/usr.bin/make/unit-tests/varparse-undef-partial.mk

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

Modified files:

Index: src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk
diff -u src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk:1.3 src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk:1.4
--- src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk:1.3	Fri Sep 25 23:42:43 2020
+++ src/usr.bin/make/unit-tests/dep-colon-bug-cross-file.mk	Sun Sep 27 09:53:41 2020
@@ -1,41 +1,41 @@
-# $NetBSD: dep-colon-bug-cross-file.mk,v 1.3 2020/09/25 23:42:43 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 was still the one from pass 1, which means it was possible to later
-# add commands to an existing target, even across file boundaries.
-#
-# 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 in 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
+# $NetBSD: dep-colon-bug-cross-file.mk,v 1.4 2020/09/27 09:53:41 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 was still the one from pass 1, which means it was possible to later
+# add commands to an existing target, even across file boundaries.
+#
+# 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 in 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

Index: src/usr.bin/make/unit-tests/varparse-undef-partial.mk
diff -u src/usr.bin/make/unit-tests/varparse-undef-partial.mk:1.1 src/usr.bin/make/unit-tests/varparse-undef-partial.mk:1.2
--- src/usr.bin/make/unit-tests/varparse-undef-partial.mk:1.1	Fri Sep 25 05:56:59 2020
+++ src/usr.bin/make/unit-tests/varparse-undef-partial.mk	Sun Sep 27 09:53:41 2020
@@ -1,64 +1,64 @@
-# $NetBSD: varparse-undef-partial.mk,v 1.1 2020/09/25 05:56:59 rillig Exp $
-
-# When an undefined variable is expanded in a ':=' assignment, only the
-# initial '$' of the variable expression is skipped by the parser, while
-# the remaining expression is evaluated.  In edge cases this can lead to
-# a completely different interpretation of the partially expanded text.
-
-LIST=	${DEF} ${UNDEF} ${VAR.${PARAM}} end
-DEF=	defined
-PARAM=	:Q
-
-# The expression ${VAR.{PARAM}} refers to the variable named "VAR.:Q",
-# with the ":Q" being part of the name.  This variable is not defined,
-# therefore the initial '$' of that whole expression is skipped by the
-# parser (see Var_Subst, the Buf_AddByte in the else branch) and the rest
-# of the expression is expanded as usual.
-#
-# The resulting variable expression is ${VAR.:Q}, which means that the
-# interpretation of the ":Q" has changed from being part of the variable
-# name to being a variable modifier.  This is a classical code injection.
-EVAL:=	${LIST}
-.if ${EVAL} != "defined   end"
-.  error ${EVAL}
-.endif
-
-# Define the possible outcomes, to see which of them gets expanded.
-VAR.=		var-dot without parameter
-${:UVAR.\:Q}=	var-dot with parameter :Q
-
-# At this point, the variable "VAR." is defined, therefore the expression
-# ${VAR.:Q} is expanded as usual.
-.if ${EVAL} != "defined  var-dot\\ without\\ parameter end"
-.  error ${EVAL}
-.endif
-
-# In contrast to the previous line, evaluating the original LIST again now
-# produces a different result since the ":Q" has already been inserted
-# literally into the expression.  The variable named "VAR.:Q" is defined,
-# therefore it is resolved as usual.  The ":Q" is interpreted as part of the
-# variable name, as would be expected from reading the variable expression.
-EVAL:=	${LIST}
-.if ${EVAL} != "defined  var-dot with parameter :Q end"
-.  error ${EVAL}
-.endif
-
-# It's difficult to decide what the best behavior is in this situation.
-# Should the whole expression be skipped for now, or should the inner
-# subexpressions be expanded already?
-#
-# Example 1:
-# CFLAGS:=	${CFLAGS:N-W*} ${COPTS.${COMPILER}}
-#
-# The variable COMPILER typically contains an identifier and the variable is
-# not modified later.  In this practical case, it does not matter whether the
-# expression is expanded early, or whether the whole ${COPTS.${COMPILER}} is
-# expanded as soon as the variable COPTS.${COMPILER} becomes defined.  The
-# expression ${COMPILER} would be expanded several times, but in this simple
-# scenario there would not be any side effects.
-#
-# TODO: Add a practical example where early/lazy expansion actually makes a
-# difference.
-
-all:
-	@:
+# $NetBSD: varparse-undef-partial.mk,v 1.2 2020/09/27 09:53:41 rillig Exp $
+
+# When an undefined variable is expanded in a ':=' assignment, only the
+# initial '$' of the variable expression is skipped by the parser, while
+# the remaining expression is evaluated.  In edge cases this can lead to
+# a completely different interpretation of the partially expanded text.
+
+LIST=	${DEF} ${UNDEF} ${VAR.${PARAM}} end
+DEF=	defined
+PARAM=	:Q
+
+# The expression ${VAR.{PARAM}} refers to the variable named "VAR.:Q",
+# with the ":Q" being part of the name.  This variable is not defined,
+# therefore the initial '$' of that whole expression is skipped by the
+# parser (see Var_Subst, the Buf_AddByte in the else branch) and the rest
+# of the expression is expanded as usual.
+#
+# The resulting variable expression is ${VAR.:Q}, which means that the
+# interpretation of the ":Q" has changed from being part of the variable
+# name to being a variable modifier.  This is a classical code injection.
+EVAL:=	${LIST}
+.if ${EVAL} != "defined   end"
+.  error ${EVAL}
+.endif
+
+# Define the possible outcomes, to see which of them gets expanded.
+VAR.=		var-dot without parameter
+${:UVAR.\:Q}=	var-dot with parameter :Q
+
+# At this point, the variable "VAR." is defined, therefore the expression
+# ${VAR.:Q} is expanded as usual.
+.if ${EVAL} != "defined  var-dot\\ without\\ parameter end"
+.  error ${EVAL}
+.endif
+
+# In contrast to the previous line, evaluating the original LIST again now
+# produces a different result since the ":Q" has already been inserted
+# literally into the expression.  The variable named "VAR.:Q" is defined,
+# therefore it is resolved as usual.  The ":Q" is interpreted as part of the
+# variable name, as would be expected from reading the variable expression.
+EVAL:=	${LIST}
+.if ${EVAL} != "defined  var-dot with parameter :Q end"
+.  error ${EVAL}
+.endif
+
+# It's difficult to decide what the best behavior is in this situation.
+# Should the whole expression be skipped for now, or should the inner
+# subexpressions be expanded already?
+#
+# Example 1:
+# CFLAGS:=	${CFLAGS:N-W*} ${COPTS.${COMPILER}}
+#
+# The variable COMPILER typically contains an identifier and the variable is
+# not modified later.  In this practical case, it does not matter whether the
+# expression is expanded early, or whether the whole ${COPTS.${COMPILER}} is
+# expanded as soon as the variable COPTS.${COMPILER} becomes defined.  The
+# expression ${COMPILER} would be expanded several times, but in this simple
+# scenario there would not be any side effects.
+#
+# TODO: Add a practical example where early/lazy expansion actually makes a
+# difference.
+
+all:
+	@:

Reply via email to