Module Name:    src
Committed By:   rillig
Date:           Sun Jul  3 14:15:38 UTC 2022

Modified Files:
        src/usr.bin/xlint/lint1: debug.c externs1.h tree.c

Log Message:
lint: add debug logging for struct and enum details


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/usr.bin/xlint/lint1/debug.c
cvs rdiff -u -r1.163 -r1.164 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.469 -r1.470 src/usr.bin/xlint/lint1/tree.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/debug.c
diff -u src/usr.bin/xlint/lint1/debug.c:1.21 src/usr.bin/xlint/lint1/debug.c:1.22
--- src/usr.bin/xlint/lint1/debug.c:1.21	Thu May 26 16:45:25 2022
+++ src/usr.bin/xlint/lint1/debug.c	Sun Jul  3 14:15:38 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: debug.c,v 1.21 2022/05/26 16:45:25 rillig Exp $ */
+/* $NetBSD: debug.c,v 1.22 2022/07/03 14:15:38 rillig Exp $ */
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: debug.c,v 1.21 2022/05/26 16:45:25 rillig Exp $");
+__RCSID("$NetBSD: debug.c,v 1.22 2022/07/03 14:15:38 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -106,6 +106,37 @@ void
 	printf("%*s- %s\n", 2 * --debug_indentation, "", func);
 }
 
+static void
+debug_type_details(const type_t *tp)
+{
+
+	if (is_struct_or_union(tp->t_tspec)) {
+		debug_indent_inc();
+		for (const sym_t *mem = tp->t_str->sou_first_member;
+		     mem != NULL; mem = mem->s_next) {
+			debug_sym("", mem, "\n");
+			debug_type_details(mem->s_type);
+		}
+		debug_indent_dec();
+	}
+	if (tp->t_is_enum) {
+		debug_indent_inc();
+		for (const sym_t *en = tp->t_enum->en_first_enumerator;
+		     en != NULL; en = en->s_next) {
+			debug_sym("", en, "\n");
+		}
+		debug_indent_dec();
+	}
+}
+
+void
+debug_type(const type_t *tp)
+{
+
+	debug_step("type details for '%s':", type_name(tp));
+	debug_type_details(tp);
+}
+
 void
 debug_node(const tnode_t *tn) // NOLINT(misc-no-recursion)
 {

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.163 src/usr.bin/xlint/lint1/externs1.h:1.164
--- src/usr.bin/xlint/lint1/externs1.h:1.163	Fri Jul  1 21:25:39 2022
+++ src/usr.bin/xlint/lint1/externs1.h	Sun Jul  3 14:15:38 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.163 2022/07/01 21:25:39 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.164 2022/07/03 14:15:38 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -122,6 +122,7 @@ const char *symt_name(symt_t);
 const char *tqual_name(tqual_t);
 void	debug_dinfo(const dinfo_t *);
 void	debug_node(const tnode_t *);
+void	debug_type(const type_t *);
 void	debug_sym(const char *, const sym_t *, const char *);
 void	debug_symtab(void);
 void	debug_printf(const char *fmt, ...) __printflike(1, 2);
@@ -139,6 +140,7 @@ void	debug_leave(const char *);
 #define	debug_sym(p, sym, s)	debug_noop()
 #define	debug_symtab()		debug_noop()
 #define	debug_node(tn)		debug_noop()
+#define	debug_type(tp)		debug_noop()
 #define	debug_printf(...)	debug_noop()
 #define	debug_print_indent()	debug_noop()
 #define	debug_indent_inc()	debug_noop()

Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.469 src/usr.bin/xlint/lint1/tree.c:1.470
--- src/usr.bin/xlint/lint1/tree.c:1.469	Sat Jul  2 10:47:29 2022
+++ src/usr.bin/xlint/lint1/tree.c	Sun Jul  3 14:15:38 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: tree.c,v 1.469 2022/07/02 10:47:29 rillig Exp $	*/
+/*	$NetBSD: tree.c,v 1.470 2022/07/03 14:15:38 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: tree.c,v 1.469 2022/07/02 10:47:29 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.470 2022/07/03 14:15:38 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -2546,6 +2546,8 @@ should_warn_about_pointer_cast(const typ
 
 	/* Allow cast between pointers to sockaddr variants. */
 	if (nst == STRUCT && ost == STRUCT) {
+		debug_type(nstp);
+		debug_type(ostp);
 		const sym_t *nmem = nstp->t_str->sou_first_member;
 		const sym_t *omem = ostp->t_str->sou_first_member;
 		while (nmem != NULL && omem != NULL &&

Reply via email to