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]; +}