Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src tests/lint: add tests for ILP32 platforms



details:   https://anonhg.NetBSD.org/src/rev/6c954965c5c5
branches:  trunk
changeset: 379963:6c954965c5c5
user:      rillig <rillig%NetBSD.org@localhost>
date:      Tue Jun 29 09:19:17 2021 +0000

description:
tests/lint: add tests for ILP32 platforms

Previously, all tests for lint had to produce the exact same output, no
matter which platform they ran on.  This differs from practical needs
since lint is intended to produce different results depending on whether
the platform is ILP32 or LP64.

Examples for these are type conversions and the widths of the integer
types during lexical analysis.

diffstat:

 distrib/sets/lists/tests/mi                     |   6 ++-
 tests/usr.bin/xlint/lint1/Makefile              |   6 ++-
 tests/usr.bin/xlint/lint1/lex_integer_ilp32.c   |  44 +++++++++++++++++++++++++
 tests/usr.bin/xlint/lint1/lex_integer_ilp32.exp |   4 ++
 tests/usr.bin/xlint/lint1/msg_259.c             |   3 +-
 tests/usr.bin/xlint/lint1/msg_259.exp           |   2 +-
 tests/usr.bin/xlint/lint1/msg_259_ilp32.c       |  30 +++++++++++++++++
 tests/usr.bin/xlint/lint1/msg_259_ilp32.exp     |   3 +
 tests/usr.bin/xlint/lint1/t_integration.sh      |   4 +-
 9 files changed, 96 insertions(+), 6 deletions(-)

diffs (189 lines):

diff -r 300a04aef23b -r 6c954965c5c5 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi       Tue Jun 29 08:51:03 2021 +0000
+++ b/distrib/sets/lists/tests/mi       Tue Jun 29 09:19:17 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1067 2021/06/27 19:10:29 rillig Exp $
+# $NetBSD: mi,v 1.1068 2021/06/29 09:19:17 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -6228,6 +6228,8 @@
 ./usr/tests/usr.bin/xlint/lint1/lex_floating.exp               tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/lex_integer.c                  tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/lex_integer.exp                        tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c            tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/lex_integer_ilp32.exp          tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/lex_string.c                   tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/lex_string.exp                 tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/lex_wide_char.c                        tests-usr.bin-tests     compattestfile,atf
@@ -6754,6 +6756,8 @@
 ./usr/tests/usr.bin/xlint/lint1/msg_258.exp                    tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_259.c                      tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_259.exp                    tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_259_ilp32.c                        tests-usr.bin-tests     compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_259_ilp32.exp              tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_260.c                      tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_260.exp                    tests-usr.bin-tests     compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_261.c                      tests-usr.bin-tests     compattestfile,atf
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/Makefile
--- a/tests/usr.bin/xlint/lint1/Makefile        Tue Jun 29 08:51:03 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/Makefile        Tue Jun 29 09:19:17 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.68 2021/06/27 19:10:29 rillig Exp $
+# $NetBSD: Makefile,v 1.69 2021/06/29 09:19:17 rillig Exp $
 
 NOMAN=         # defined
 MAX_MESSAGE=   345             # see lint1/err.c
@@ -131,6 +131,8 @@ FILES+=             lex_floating.c
 FILES+=                lex_floating.exp
 FILES+=                lex_integer.c
 FILES+=                lex_integer.exp
+FILES+=                lex_integer_ilp32.c
+FILES+=                lex_integer_ilp32.exp
 FILES+=                lex_string.c
 FILES+=                lex_string.exp
 FILES+=                lex_wide_char.c
@@ -138,6 +140,8 @@ FILES+=             lex_wide_char.exp
 FILES+=                lex_wide_string.c
 FILES+=                lex_wide_string.exp
 FILES+=                ${:U0 ${:U:${:Urange=${MAX_MESSAGE}}}:C,^.$,0&,:C,^..$,0&,:@i@msg_${i}.c msg_${i}.exp@:Nmsg_176.exp}
+FILES+=                msg_259_ilp32.c
+FILES+=                msg_259_ilp32.exp
 FILES+=                op_colon.c
 FILES+=                op_colon.exp
 FILES+=                stmt_for.c
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/lex_integer_ilp32.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c     Tue Jun 29 09:19:17 2021 +0000
@@ -0,0 +1,44 @@
+/*     $NetBSD: lex_integer_ilp32.c,v 1.1 2021/06/29 09:19:17 rillig Exp $     */
+# 3 "lex_integer_ilp32.c"
+
+/*
+ * Tests for lexical analysis of integer constants.
+ *
+ * C99 6.4.4.1 "Integer constants"
+ */
+
+/* lint1-only-on-ilp32 */
+
+void sinki(int);
+void sinku(unsigned int);
+
+/* All platforms supported by lint have 32-bit int in two's complement. */
+void
+test_signed_int(void)
+{
+       sinki(0);
+
+       sinki(-1);
+
+       sinki(2147483647);
+
+       /* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */
+       sinki(2147483648);
+
+       sinki(-2147483647);
+
+       /* expect+2: ANSI C treats constant as unsigned, op - [218] */
+       /* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */
+       sinki(-2147483648);
+}
+
+void
+test_unsigned_int(void)
+{
+       sinku(0);
+
+       sinku(4294967295U);
+
+       /* expect+1: integer constant out of range [252] */
+       sinku(4294967296U);
+}
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/lex_integer_ilp32.exp
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/usr.bin/xlint/lint1/lex_integer_ilp32.exp   Tue Jun 29 09:19:17 2021 +0000
@@ -0,0 +1,4 @@
+lex_integer_ilp32.c(26): warning: conversion of 'unsigned long' to 'int' is out of range, arg #1 [295]
+lex_integer_ilp32.c(32): warning: ANSI C treats constant as unsigned, op - [218]
+lex_integer_ilp32.c(32): warning: conversion of 'unsigned long' to 'int' is out of range, arg #1 [295]
+lex_integer_ilp32.c(43): warning: integer constant out of range [252]
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/msg_259.c
--- a/tests/usr.bin/xlint/lint1/msg_259.c       Tue Jun 29 08:51:03 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_259.c       Tue Jun 29 09:19:17 2021 +0000
@@ -1,8 +1,9 @@
-/*     $NetBSD: msg_259.c,v 1.6 2021/02/04 07:39:39 rillig Exp $       */
+/*     $NetBSD: msg_259.c,v 1.7 2021/06/29 09:19:17 rillig Exp $       */
 # 3 "msg_259.c"
 
 // Test for message: argument #%d is converted from '%s' to '%s' due to prototype [259]
 
+/* lint1-only-on-lp64 */
 /* lint1-extra-flags: -h */
 
 void farg_char(char);
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/msg_259.exp
--- a/tests/usr.bin/xlint/lint1/msg_259.exp     Tue Jun 29 08:51:03 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_259.exp     Tue Jun 29 09:19:17 2021 +0000
@@ -1,1 +1,1 @@
-msg_259.c(22): warning: argument #1 is converted from 'long' to 'int' due to prototype [259]
+msg_259.c(23): warning: argument #1 is converted from 'long' to 'int' due to prototype [259]
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/msg_259_ilp32.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_259_ilp32.c Tue Jun 29 09:19:17 2021 +0000
@@ -0,0 +1,30 @@
+/*     $NetBSD: msg_259_ilp32.c,v 1.1 2021/06/29 09:19:17 rillig Exp $ */
+# 3 "msg_259_ilp32.c"
+
+// Test for message: argument #%d is converted from '%s' to '%s' due to prototype [259]
+
+/* lint1-only-on-ilp32 */
+/* lint1-extra-flags: -h */
+
+void farg_char(char);
+void farg_int(int);
+void farg_long(long);
+
+void
+example(char c, int i, long l)
+{
+       farg_char(c);
+       farg_int(c);
+       /* expect+1: from 'char' to 'long' due to prototype [259] */
+       farg_long(c);
+
+       farg_char(i);           /* XXX: why no warning? */
+       farg_int(i);
+       /* expect+1: from 'int' to 'long' due to prototype [259] */
+       farg_long(i);
+
+       farg_char(l);           /* XXX: why no warning? */
+       /* expect+1: from 'long' to 'int' due to prototype [259] */
+       farg_int(l);
+       farg_long(l);
+}
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/msg_259_ilp32.exp
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_259_ilp32.exp       Tue Jun 29 09:19:17 2021 +0000
@@ -0,0 +1,3 @@
+msg_259_ilp32.c(19): warning: argument #1 is converted from 'char' to 'long' due to prototype [259]
+msg_259_ilp32.c(24): warning: argument #1 is converted from 'int' to 'long' due to prototype [259]
+msg_259_ilp32.c(28): warning: argument #1 is converted from 'long' to 'int' due to prototype [259]
diff -r 300a04aef23b -r 6c954965c5c5 tests/usr.bin/xlint/lint1/t_integration.sh
--- a/tests/usr.bin/xlint/lint1/t_integration.sh        Tue Jun 29 08:51:03 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/t_integration.sh        Tue Jun 29 09:19:17 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: t_integration.sh,v 1.64 2021/06/29 08:46:10 rillig Exp $
+# $NetBSD: t_integration.sh,v 1.65 2021/06/29 09:19:17 rillig Exp $
 #
 # Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -27,7 +27,7 @@
 
 lint1=/usr/libexec/lint1
 
-machine_arch="$(sysctl -n hw.machine_arch)"
+: "${machine_arch:="$(sysctl -n hw.machine_arch)"}"
 
 
 configure_test_case()



Home | Main Index | Thread Index | Old Index