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 &&