Module Name:    src
Committed By:   rillig
Date:           Sat Jun 19 14:08:45 UTC 2021

Modified Files:
        src/usr.bin/xlint/lint1: decl.c externs1.h print.c

Log Message:
lint: in debug mode, print name of the "storage class"

This helps in tracking down the internal errors related to declarations,
found by running afl.


To generate a diff of this commit:
cvs rdiff -u -r1.183 -r1.184 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.109 -r1.110 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.11 -r1.12 src/usr.bin/xlint/lint1/print.c

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/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.183 src/usr.bin/xlint/lint1/decl.c:1.184
--- src/usr.bin/xlint/lint1/decl.c:1.183	Sat Jun 19 11:01:23 2021
+++ src/usr.bin/xlint/lint1/decl.c	Sat Jun 19 14:08:45 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.183 2021/06/19 11:01:23 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.184 2021/06/19 14:08:45 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: decl.c,v 1.183 2021/06/19 11:01:23 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.184 2021/06/19 14:08:45 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -601,8 +601,7 @@ begin_declaration_level(scl_t sc)
 	di->d_ctx = sc;
 	di->d_ldlsym = &di->d_dlsyms;
 	if (dflag)
-		(void)printf("%s(%p %d)\n", __func__, dcs, (int)sc);
-
+		(void)printf("%s(%p %s)\n", __func__, dcs, scl_name(sc));
 }
 
 /*
@@ -614,7 +613,8 @@ end_declaration_level(void)
 	dinfo_t	*di;
 
 	if (dflag)
-		(void)printf("%s(%p %d)\n", __func__, dcs, (int)dcs->d_ctx);
+		(void)printf("%s(%p %s)\n",
+		    __func__, dcs, scl_name(dcs->d_ctx));
 
 	lint_assert(dcs->d_next != NULL);
 	di = dcs;

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.109 src/usr.bin/xlint/lint1/externs1.h:1.110
--- src/usr.bin/xlint/lint1/externs1.h:1.109	Tue Jun 15 20:46:45 2021
+++ src/usr.bin/xlint/lint1/externs1.h	Sat Jun 19 14:08:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.109 2021/06/15 20:46:45 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.110 2021/06/19 14:08:45 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -339,6 +339,7 @@ extern	int	lex_input(void);
  * print.c
  */
 extern	char	*print_tnode(char *, size_t, const tnode_t *);
+const char	*scl_name(scl_t);
 
 /*
  * ckbool.c

Index: src/usr.bin/xlint/lint1/print.c
diff -u src/usr.bin/xlint/lint1/print.c:1.11 src/usr.bin/xlint/lint1/print.c:1.12
--- src/usr.bin/xlint/lint1/print.c:1.11	Sat Mar 20 20:56:58 2021
+++ src/usr.bin/xlint/lint1/print.c	Sat Jun 19 14:08:45 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: print.c,v 1.11 2021/03/20 20:56:58 rillig Exp $	*/
+/*	$NetBSD: print.c,v 1.12 2021/06/19 14:08:45 rillig Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: print.c,v 1.11 2021/03/20 20:56:58 rillig Exp $");
+__RCSID("$NetBSD: print.c,v 1.12 2021/06/19 14:08:45 rillig Exp $");
 #endif
 
 #include <stdio.h>
@@ -87,3 +87,17 @@ print_tnode(char *buf, size_t bufsiz, co
 	}
 	return buf;
 }
+
+/* Return the name of the "storage class" in the wider sense. */
+const char *
+scl_name(scl_t scl)
+{
+	static const char *const names[] = {
+	    "none", "extern", "static", "auto", "register", "typedef",
+	    "struct", "union", "enum", "member of struct", "member of union",
+	    "compile-time constant", "abstract", "argument",
+	    "prototype argument", "inline"
+	};
+
+	return names[scl];
+}

Reply via email to