Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make make(1): fix assertion failure in debug output ...
details: https://anonhg.NetBSD.org/src/rev/2c9dbf194735
branches: trunk
changeset: 1013233:2c9dbf194735
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Aug 23 09:28:52 2020 +0000
description:
make(1): fix assertion failure in debug output for read-only variables
diffstat:
usr.bin/make/enum.h | 13 ++++++++-----
usr.bin/make/nonints.h | 4 +++-
usr.bin/make/unit-tests/Makefile | 6 ++++--
usr.bin/make/unit-tests/varname-dot-shell.exp | 5 +++++
usr.bin/make/unit-tests/varname-dot-shell.mk | 5 ++---
usr.bin/make/var.c | 23 ++++++++++++-----------
6 files changed, 34 insertions(+), 22 deletions(-)
diffs (165 lines):
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/enum.h
--- a/usr.bin/make/enum.h Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/enum.h Sun Aug 23 09:28:52 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: enum.h,v 1.5 2020/08/09 09:44:14 rillig Exp $ */
+/* $NetBSD: enum.h,v 1.6 2020/08/23 09:28:52 rillig Exp $ */
/*
Copyright (c) 2020 Roland Illig <rillig%NetBSD.org@localhost>
@@ -59,6 +59,8 @@
#v1 ENUM__SEP ENUM__JOIN_5(v2, v3, v4, v5, v6)
#define ENUM__JOIN_7(v1, v2, v3, v4, v5, v6, v7) \
#v1 ENUM__SEP ENUM__JOIN_6(v2, v3, v4, v5, v6, v7)
+#define ENUM__JOIN_8(v1, v2, v3, v4, v5, v6, v7, v8) \
+ #v1 ENUM__SEP ENUM__JOIN_7(v2, v3, v4, v5, v6, v7, v8)
#define ENUM__RTTI(typnam, specs, joined) \
static const EnumToStringSpec typnam ## _ ## ToStringSpecs[] = specs; \
@@ -72,7 +74,7 @@
ENUM__SPEC(v3), \
{ 0, "" } }
-#define ENUM__SPEC_7(v1, v2, v3, v4, v5, v6, v7) { \
+#define ENUM__SPEC_8(v1, v2, v3, v4, v5, v6, v7, v8) { \
ENUM__SPEC(v1), \
ENUM__SPEC(v2), \
ENUM__SPEC(v3), \
@@ -80,6 +82,7 @@
ENUM__SPEC(v5), \
ENUM__SPEC(v6), \
ENUM__SPEC(v7), \
+ ENUM__SPEC(v8), \
{ 0, "" } }
#define ENUM_RTTI_3(typnam, v1, v2, v3) \
@@ -87,9 +90,9 @@
ENUM__SPEC_3(v1, v2, v3), \
ENUM__JOIN_3(v1, v2, v3))
-#define ENUM_RTTI_7(typnam, v1, v2, v3, v4, v5, v6, v7) \
+#define ENUM_RTTI_8(typnam, v1, v2, v3, v4, v5, v6, v7, v8) \
ENUM__RTTI(typnam, \
- ENUM__SPEC_7(v1, v2, v3, v4, v5, v6, v7), \
- ENUM__JOIN_7(v1, v2, v3, v4, v5, v6, v7))
+ ENUM__SPEC_8(v1, v2, v3, v4, v5, v6, v7, v8), \
+ ENUM__JOIN_8(v1, v2, v3, v4, v5, v6, v7, v8))
#endif
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/nonints.h
--- a/usr.bin/make/nonints.h Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/nonints.h Sun Aug 23 09:28:52 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: nonints.h,v 1.96 2020/08/22 19:30:58 sjg Exp $ */
+/* $NetBSD: nonints.h,v 1.97 2020/08/23 09:28:52 rillig Exp $ */
/*-
* Copyright (c) 1988, 1989, 1990, 1993
@@ -188,6 +188,8 @@
typedef enum {
VAR_NO_EXPORT = 0x01, /* do not export */
+ /* Make the variable read-only. No further modification is possible,
+ * except for another call to Var_Set with the same flag. */
VAR_SET_READONLY = 0x02
} VarSet_Flags;
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/unit-tests/Makefile
--- a/usr.bin/make/unit-tests/Makefile Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/unit-tests/Makefile Sun Aug 23 09:28:52 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.115 2020/08/23 09:18:25 rillig Exp $
+# $NetBSD: Makefile,v 1.116 2020/08/23 09:28:52 rillig Exp $
#
# Unit tests for make(1)
#
@@ -335,7 +335,9 @@
SED_CMDS.varmod-edge+= -e 's, line [0-9]*:, line omitted:,'
SED_CMDS.varshell+= -e 's,^${.SHELL:T}: ,,'
SED_CMDS.varshell+= -e '/command/s,No such.*,not found,'
-SED_CMDS.varname-dot-shell= -e 's, = /.*, = (details omitted),'
+SED_CMDS.varname-dot-shell= -e 's, = /.*, = (details omitted),'
+SED_CMDS.varname-dot-shell+= -e 's,"/[^"]*","(details omitted)",'
+SED_CMDS.varname-dot-shell+= -e 's,\[/[^]]*\],[(details omitted)],'
# Some tests need an additional round of postprocessing.
POSTPROC.counter= ${TOOL_SED} -n -e '/:RELEVANT = yes/,/:RELEVANT = no/p'
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/unit-tests/varname-dot-shell.exp
--- a/usr.bin/make/unit-tests/varname-dot-shell.exp Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/unit-tests/varname-dot-shell.exp Sun Aug 23 09:28:52 2020 +0000
@@ -11,4 +11,9 @@
Global:.SHELL = newly overwritten
Var_Parse: ${.SHELL} != ${ORIG_SHELL} with VARE_UNDEFERR|VARE_WANTRES
ParseReadLine (24): 'all:'
+ParseReadLine (25): ' @echo ${.SHELL:M*}'
+Var_Parse: ${.SHELL:M*} with VARE_WANTRES
+Applying ${.SHELL:M...} to "(details omitted)" (eflags = VARE_WANTRES, vflags = VAR_READONLY)
+Pattern[.SHELL] for [(details omitted)] is [*]
+Result of ${.SHELL:M*} is "(details omitted)" (eflags = VARE_WANTRES, vflags = VAR_READONLY)
exit status 0
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/unit-tests/varname-dot-shell.mk
--- a/usr.bin/make/unit-tests/varname-dot-shell.mk Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/unit-tests/varname-dot-shell.mk Sun Aug 23 09:28:52 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: varname-dot-shell.mk,v 1.1 2020/08/23 09:18:25 rillig Exp $
+# $NetBSD: varname-dot-shell.mk,v 1.2 2020/08/23 09:28:52 rillig Exp $
#
# Tests for the special .SHELL variable, which contains the shell used for
# running the commands.
@@ -22,5 +22,4 @@
.endif
all:
-# Cannot be activated yet because VAR_READONLY is not in the debug info.
-# @echo ${.SHELL:M*}
+ @echo ${.SHELL:M*}
diff -r b551521444a6 -r 2c9dbf194735 usr.bin/make/var.c
--- a/usr.bin/make/var.c Sun Aug 23 09:18:25 2020 +0000
+++ b/usr.bin/make/var.c Sun Aug 23 09:28:52 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.462 2020/08/23 08:32:57 rillig Exp $ */
+/* $NetBSD: var.c,v 1.463 2020/08/23 09:28:52 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.462 2020/08/23 08:32:57 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.463 2020/08/23 09:28:52 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: var.c,v 1.462 2020/08/23 08:32:57 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.463 2020/08/23 09:28:52 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -229,14 +229,15 @@
VAR_READONLY = 0x80
} VarFlags;
-ENUM_RTTI_7(VarFlags,
- VAR_IN_USE,
- VAR_FROM_ENV,
- VAR_JUNK,
- VAR_KEEP,
- VAR_EXPORTED,
- VAR_REEXPORT,
- VAR_FROM_CMD);
+ENUM_RTTI_8(VarFlags,
+ VAR_IN_USE,
+ VAR_FROM_ENV,
+ VAR_JUNK,
+ VAR_KEEP,
+ VAR_EXPORTED,
+ VAR_REEXPORT,
+ VAR_FROM_CMD,
+ VAR_READONLY);
typedef struct Var {
char *name; /* the variable's name; it is allocated for
Home |
Main Index |
Thread Index |
Old Index