Module Name:    src
Committed By:   rillig
Date:           Sun Sep 26 03:18:00 UTC 2021

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: Makefile t_integration.sh
Added Files:
        src/tests/usr.bin/xlint/lint1: platform_ilp32.c platform_ilp32.exp
            platform_int.c platform_int.exp platform_ldbl128.c
            platform_ldbl128.exp platform_ldbl64.c platform_ldbl64.exp
            platform_ldbl96.c platform_ldbl96.exp platform_long.c
            platform_long.exp platform_lp64.c platform_lp64.exp
            platform_schar.c platform_schar.exp platform_uchar.c
            platform_uchar.exp

Log Message:
tests/lint: add tests for platform characteristics

Running lint in usr.bin/make on i386 fails due to this warning:

cond.c(800): warning: argument #3 is converted from 'unsigned char' to
    'unsigned int' due to prototype [259]

This warning only occurred on i386 but not on sparc or x86_64. Try to
reproduce the test situation in platform_int.

The platform code in t_integration.sh was not strict enough, it didn't
check for multiple conditions, such as in msg_132_ilp32. That test was
only supposed to run on ILP32 platforms where size_t is unsigned int. It
also ran on sparc, even though size_t is long there.


To generate a diff of this commit:
cvs rdiff -u -r1.1129 -r1.1130 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.112 -r1.113 src/tests/usr.bin/xlint/lint1/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/platform_ilp32.c \
    src/tests/usr.bin/xlint/lint1/platform_ilp32.exp \
    src/tests/usr.bin/xlint/lint1/platform_int.c \
    src/tests/usr.bin/xlint/lint1/platform_int.exp \
    src/tests/usr.bin/xlint/lint1/platform_ldbl128.c \
    src/tests/usr.bin/xlint/lint1/platform_ldbl128.exp \
    src/tests/usr.bin/xlint/lint1/platform_ldbl64.c \
    src/tests/usr.bin/xlint/lint1/platform_ldbl64.exp \
    src/tests/usr.bin/xlint/lint1/platform_ldbl96.c \
    src/tests/usr.bin/xlint/lint1/platform_ldbl96.exp \
    src/tests/usr.bin/xlint/lint1/platform_long.c \
    src/tests/usr.bin/xlint/lint1/platform_long.exp \
    src/tests/usr.bin/xlint/lint1/platform_lp64.c \
    src/tests/usr.bin/xlint/lint1/platform_lp64.exp \
    src/tests/usr.bin/xlint/lint1/platform_schar.c \
    src/tests/usr.bin/xlint/lint1/platform_schar.exp \
    src/tests/usr.bin/xlint/lint1/platform_uchar.c \
    src/tests/usr.bin/xlint/lint1/platform_uchar.exp
cvs rdiff -u -r1.70 -r1.71 src/tests/usr.bin/xlint/lint1/t_integration.sh

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.1129 src/distrib/sets/lists/tests/mi:1.1130
--- src/distrib/sets/lists/tests/mi:1.1129	Sat Sep 25 13:06:05 2021
+++ src/distrib/sets/lists/tests/mi	Sun Sep 26 03:17:59 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1129 2021/09/25 13:06:05 rillig Exp $
+# $NetBSD: mi,v 1.1130 2021/09/26 03:17:59 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -7056,6 +7056,24 @@
 ./usr/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.exp	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/parse_type_name.c		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/parse_type_name.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ilp32.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ilp32.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_int.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_int.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl128.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl128.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl64.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl64.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl96.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_ldbl96.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_long.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_long.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_lp64.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_lp64.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_schar.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_schar.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_uchar.c		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/platform_uchar.exp		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/stmt_for.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/stmt_for.exp			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/stmt_goto.c			tests-usr.bin-tests	compattestfile,atf

Index: src/tests/usr.bin/xlint/lint1/Makefile
diff -u src/tests/usr.bin/xlint/lint1/Makefile:1.112 src/tests/usr.bin/xlint/lint1/Makefile:1.113
--- src/tests/usr.bin/xlint/lint1/Makefile:1.112	Mon Sep 13 22:09:06 2021
+++ src/tests/usr.bin/xlint/lint1/Makefile	Sun Sep 26 03:17:59 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.112 2021/09/13 22:09:06 rillig Exp $
+# $NetBSD: Makefile,v 1.113 2021/09/26 03:17:59 rillig Exp $
 
 NOMAN=		# defined
 MAX_MESSAGE=	347		# see lint1/err.c
@@ -236,6 +236,24 @@ FILES+=		parse_stmt_iter_error.c
 FILES+=		parse_stmt_iter_error.exp
 FILES+=		parse_type_name.c
 FILES+=		parse_type_name.exp
+FILES+=		platform_ilp32.c
+FILES+=		platform_ilp32.exp
+FILES+=		platform_int.c
+FILES+=		platform_int.exp
+FILES+=		platform_ldbl128.c
+FILES+=		platform_ldbl128.exp
+FILES+=		platform_ldbl64.c
+FILES+=		platform_ldbl64.exp
+FILES+=		platform_ldbl96.c
+FILES+=		platform_ldbl96.exp
+FILES+=		platform_long.c
+FILES+=		platform_long.exp
+FILES+=		platform_lp64.c
+FILES+=		platform_lp64.exp
+FILES+=		platform_schar.c
+FILES+=		platform_schar.exp
+FILES+=		platform_uchar.c
+FILES+=		platform_uchar.exp
 FILES+=		stmt_for.c
 FILES+=		stmt_for.exp
 FILES+=		stmt_goto.c

Index: src/tests/usr.bin/xlint/lint1/t_integration.sh
diff -u src/tests/usr.bin/xlint/lint1/t_integration.sh:1.70 src/tests/usr.bin/xlint/lint1/t_integration.sh:1.71
--- src/tests/usr.bin/xlint/lint1/t_integration.sh:1.70	Fri Sep 10 20:02:51 2021
+++ src/tests/usr.bin/xlint/lint1/t_integration.sh	Sun Sep 26 03:17:59 2021
@@ -1,4 +1,4 @@
-# $NetBSD: t_integration.sh,v 1.70 2021/09/10 20:02:51 rillig Exp $
+# $NetBSD: t_integration.sh,v 1.71 2021/09/26 03:17:59 rillig Exp $
 #
 # Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -86,11 +86,13 @@ configure_test_case()
 				for (i = 3; i < NF; i++)
 					flags = flags " " $i
 			} else if ($2 == "lint1-only-if:") {
-				if (!platform_has($3))
-					skip = "yes"
+				for (i = 3; i < NF; i++)
+					if (!platform_has($i))
+						skip = "yes"
 			} else if ($2 == "lint1-skip-if:") {
-				if (platform_has($3))
-					skip = "yes"
+				for (i = 3; i < NF; i++)
+					if (platform_has($i))
+						skip = "yes"
 			} else {
 				printf("bad lint1 comment '\''%s'\''\n", $2) > "/dev/stderr"
 				exit(1)

Added files:

Index: src/tests/usr.bin/xlint/lint1/platform_ilp32.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ilp32.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ilp32.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,13 @@
+/*	$NetBSD: platform_ilp32.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_ilp32.c"
+
+/*
+ * Test features that only apply to platforms that have 32-bit int, long and
+ * pointer types.
+ */
+
+/* lint1-only-if: ilp32 */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_ilp32.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ilp32.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ilp32.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_ilp32.c(14): warning: empty translation unit [272]
Index: src/tests/usr.bin/xlint/lint1/platform_int.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_int.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_int.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,19 @@
+/*	$NetBSD: platform_int.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_int.c"
+
+/*
+ * Test features that only apply to platforms on which size_t is unsigned
+ * int and ptr_diff is signed int.
+ */
+
+/* lint1-extra-flags: -h */
+/* lint1-only-if: int */
+
+void to_size(typeof(sizeof(int)));
+
+void
+convert_unsigned_char_to_size(unsigned char uc)
+{
+	/* expect+1: warning: argument #1 is converted from 'unsigned char' to 'unsigned int' due to prototype [259] */
+	to_size(uc);
+}
Index: src/tests/usr.bin/xlint/lint1/platform_int.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_int.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_int.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_int.c(18): warning: argument #1 is converted from 'unsigned char' to 'unsigned int' due to prototype [259]
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl128.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl128.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl128.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,12 @@
+/*	$NetBSD: platform_ldbl128.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_ldbl128.c"
+
+/*
+ * Test features that only apply to platforms that have 128-bit long double.
+ */
+
+/* lint1-only-if: ldbl-128 */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl128.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl128.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl128.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_ldbl128.c(13): warning: empty translation unit [272]
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl64.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl64.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl64.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,12 @@
+/*	$NetBSD: platform_ldbl64.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_ldbl64.c"
+
+/*
+ * Test features that only apply to platforms that have 64-bit long double.
+ */
+
+/* lint1-only-if: ldbl-64 */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl64.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl64.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl64.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_ldbl64.c(13): warning: empty translation unit [272]
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl96.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl96.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl96.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,12 @@
+/*	$NetBSD: platform_ldbl96.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_ldbl96.c"
+
+/*
+ * Test features that only apply to platforms that have 96-bit long double.
+ */
+
+/* lint1-only-if: ldbl-96 */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_ldbl96.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_ldbl96.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_ldbl96.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_ldbl96.c(13): warning: empty translation unit [272]
Index: src/tests/usr.bin/xlint/lint1/platform_long.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_long.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_long.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,29 @@
+/*	$NetBSD: platform_long.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_long.c"
+
+/*
+ * Test features that only apply to platforms on which size_t is unsigned
+ * long and ptr_diff is signed long.
+ */
+
+/* lint1-extra-flags: -h */
+/* lint1-only-if: long */
+
+void to_size(typeof(sizeof(int)));
+
+void
+convert_unsigned_char_to_size(unsigned char uc)
+{
+	/* no warning, unlike in platform_int */
+	to_size(uc);
+}
+
+/* expect+1: warning: static variable unused_variable unused [226] */
+static int unused_variable;
+
+/*
+ * XXX: On 2021-09-23, the releng build failed on i386 but not on sparc.
+ * usr.bin/make/cond.c, call to is_token with unsigned char as third argument.
+ * Based on that, this test should succeed on sparc, but with a cross-compiled
+ * lint on x86_64 with ARCHSUBDIR=sparc, it failed.
+ */
Index: src/tests/usr.bin/xlint/lint1/platform_long.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_long.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_long.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_long.c(22): warning: static variable unused_variable unused [226]
Index: src/tests/usr.bin/xlint/lint1/platform_lp64.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_lp64.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_lp64.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,21 @@
+/*	$NetBSD: platform_lp64.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_lp64.c"
+
+/*
+ * Test features that only apply to platforms that have 32-bit int and 64-bit
+ * long and pointer types.
+ */
+
+/* lint1-only-if: lp64 */
+
+void to_size_t(typeof(sizeof(int)));
+
+void
+convert_unsigned_char_to_size_t(unsigned char uc)
+{
+	/* no warning, unlike platform_int */
+	to_size_t(uc);
+}
+
+/* expect+1: warning: static variable unused_variable unused [226] */
+static int unused_variable;
Index: src/tests/usr.bin/xlint/lint1/platform_lp64.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_lp64.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_lp64.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_lp64.c(21): warning: static variable unused_variable unused [226]
Index: src/tests/usr.bin/xlint/lint1/platform_schar.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_schar.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_schar.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,13 @@
+/*	$NetBSD: platform_schar.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_schar.c"
+
+/*
+ * Test features that only apply to platforms where plain char has the same
+ * representation as signed char.
+ */
+
+/* lint1-only-if: schar */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_schar.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_schar.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_schar.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_schar.c(14): warning: empty translation unit [272]
Index: src/tests/usr.bin/xlint/lint1/platform_uchar.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_uchar.c:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_uchar.c	Sun Sep 26 03:17:59 2021
@@ -0,0 +1,13 @@
+/*	$NetBSD: platform_uchar.c,v 1.1 2021/09/26 03:17:59 rillig Exp $	*/
+# 3 "platform_uchar.c"
+
+/*
+ * Test features that only apply to platforms where plain char has the same
+ * representation as unsigned char.
+ */
+
+/* lint1-only-if: uchar */
+
+// TODO: Add some code that passes.
+// TODO: Add some code that fails.
+/* expect+1: warning: empty translation unit [272] */
Index: src/tests/usr.bin/xlint/lint1/platform_uchar.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/platform_uchar.exp:1.1
--- /dev/null	Sun Sep 26 03:18:00 2021
+++ src/tests/usr.bin/xlint/lint1/platform_uchar.exp	Sun Sep 26 03:17:59 2021
@@ -0,0 +1 @@
+platform_uchar.c(14): warning: empty translation unit [272]

Reply via email to