Module Name: src Committed By: rillig Date: Tue Aug 1 16:08:58 UTC 2023
Modified Files: src/usr.bin/xlint/lint1: cgram.y debug.c decl.c externs1.h lex.c Log Message: lint: improve debug logging for declarators To generate a diff of this commit: cvs rdiff -u -r1.466 -r1.467 src/usr.bin/xlint/lint1/cgram.y cvs rdiff -u -r1.58 -r1.59 src/usr.bin/xlint/lint1/debug.c cvs rdiff -u -r1.370 -r1.371 src/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.203 -r1.204 src/usr.bin/xlint/lint1/externs1.h cvs rdiff -u -r1.189 -r1.190 src/usr.bin/xlint/lint1/lex.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/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.466 src/usr.bin/xlint/lint1/cgram.y:1.467 --- src/usr.bin/xlint/lint1/cgram.y:1.466 Fri Jul 28 21:50:03 2023 +++ src/usr.bin/xlint/lint1/cgram.y Tue Aug 1 16:08:58 2023 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.466 2023/07/28 21:50:03 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.467 2023/08/01 16:08:58 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: cgram.y,v 1.466 2023/07/28 21:50:03 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.467 2023/08/01 16:08:58 rillig Exp $"); #endif #include <limits.h> @@ -163,7 +163,11 @@ is_either(const char *s, const char *a, fprintf(yyo, "%Lg", $$->u.floating); } <y_val> %printer { fprintf(yyo, "'%s'", $$ != NULL ? $$->sb_name : "<null>"); } <y_name> -%printer { debug_sym("", $$, ""); } <y_sym> +%printer { + bool indented = debug_push_indented(true); + debug_sym("", $$, ""); + debug_pop_indented(indented); +} <y_sym> %printer { fprintf(yyo, "%s", op_name($$)); } <y_op> %printer { fprintf(yyo, "%s", scl_name($$)); } <y_scl> %printer { fprintf(yyo, "%s", tspec_name($$)); } <y_tspec> Index: src/usr.bin/xlint/lint1/debug.c diff -u src/usr.bin/xlint/lint1/debug.c:1.58 src/usr.bin/xlint/lint1/debug.c:1.59 --- src/usr.bin/xlint/lint1/debug.c:1.58 Sun Jul 30 22:27:21 2023 +++ src/usr.bin/xlint/lint1/debug.c Tue Aug 1 16:08:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: debug.c,v 1.58 2023/07/30 22:27:21 rillig Exp $ */ +/* $NetBSD: debug.c,v 1.59 2023/08/01 16:08:58 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.58 2023/07/30 22:27:21 rillig Exp $"); +__RCSID("$NetBSD: debug.c,v 1.59 2023/08/01 16:08:58 rillig Exp $"); #endif #include <stdlib.h> @@ -108,6 +108,20 @@ debug_indent_dec(void) debug_indentation--; } +bool +debug_push_indented(bool indented) +{ + bool prev = did_indentation; + did_indentation = indented; + return prev; +} + +void +debug_pop_indented(bool indented) +{ + did_indentation = indented; +} + void debug_step(const char *fmt, ...) { @@ -426,7 +440,7 @@ static void debug_decl_level(const decl_level *dl) { - debug_printf("decl_level: %s", decl_level_kind_name(dl->d_kind)); + debug_printf("kind=%s", decl_level_kind_name(dl->d_kind)); if (dl->d_scl != NOSCL) debug_printf(" %s", scl_name(dl->d_scl)); if (dl->d_type != NULL) @@ -477,15 +491,19 @@ debug_decl_level(const decl_level *dl) } void -debug_dcs(bool all) +debug_dcs(void) +{ + debug_printf("dcs "); + debug_decl_level(dcs); +} + +void +debug_dcs_all(void) { - int prev_indentation = debug_indentation; + size_t i = 0; for (const decl_level *dl = dcs; dl != NULL; dl = dl->d_enclosing) { + debug_printf("dcs[%zu] ", i++); debug_decl_level(dl); - if (!all) - return; - debug_indentation++; } - debug_indentation = prev_indentation; } #endif Index: src/usr.bin/xlint/lint1/decl.c diff -u src/usr.bin/xlint/lint1/decl.c:1.370 src/usr.bin/xlint/lint1/decl.c:1.371 --- src/usr.bin/xlint/lint1/decl.c:1.370 Mon Jul 31 20:31:58 2023 +++ src/usr.bin/xlint/lint1/decl.c Tue Aug 1 16:08:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.370 2023/07/31 20:31:58 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: decl.c,v 1.370 2023/07/31 20:31:58 rillig Exp $"); +__RCSID("$NetBSD: decl.c,v 1.371 2023/08/01 16:08:58 rillig Exp $"); #endif #include <sys/param.h> @@ -216,8 +216,8 @@ dcs_add_storage_class(scl_t sc) dcs->d_scl = STATIC; /* ignore thread_local */ else dcs->d_multiple_storage_classes = true; - debug_step("%s:", __func__); - debug_dcs(false); + debug_printf("%s: ", __func__); + debug_dcs(); } /* Merge the signedness into the abstract type. */ @@ -315,7 +315,7 @@ dcs_add_type(type_t *tp) { debug_step("%s: %s", __func__, type_name(tp)); - debug_dcs(false); + debug_dcs(); if (tp->t_typedef) { /* * something like "typedef int a; int a b;" @@ -344,7 +344,7 @@ dcs_add_type(type_t *tp) dcs->d_rank_mod = NO_TSPEC; } dcs->d_type = tp; - debug_dcs(false); + debug_dcs(); return; } @@ -412,7 +412,7 @@ dcs_add_type(type_t *tp) dcs->d_invalid_type_combination = true; dcs->d_abstract_type = t; } - debug_dcs(false); + debug_dcs(); } static void @@ -470,7 +470,7 @@ pack_struct_or_union(type_t *tp) bits = mem_bits; } tp->t_sou->sou_size_in_bits = bits; - debug_dcs(false); + debug_dcs(); } void @@ -509,14 +509,14 @@ begin_declaration_level(decl_level_kind dl->d_last_dlsym = &dl->d_first_dlsym; dcs = dl; debug_enter(); - debug_dcs(true); + debug_dcs_all(); } void end_declaration_level(void) { - debug_dcs(true); + debug_dcs_all(); decl_level *dl = dcs; dcs = dl->d_enclosing; @@ -657,8 +657,6 @@ dcs_merge_declaration_specifiers(void) return; } - debug_step("%s: %s", __func__, type_name(tp)); - if (t == NO_TSPEC && s == NO_TSPEC && l == NO_TSPEC && c == NO_TSPEC) dcs->d_no_type_specifier = true; if (t == NO_TSPEC && s == NO_TSPEC && (l == NO_TSPEC || l == LONG)) @@ -699,7 +697,8 @@ dcs_merge_declaration_specifiers(void) if (l != NO_TSPEC) t = l; dcs->d_type = gettyp(merge_signedness(t, s)); - debug_dcs(false); + debug_printf("%s: ", __func__); + debug_dcs(); } /* Create a type in 'dcs->d_type' from the information gathered in 'dcs'. */ @@ -739,7 +738,7 @@ dcs_end_type(void) dcs->d_type->t_volatile |= dcs->d_qual.tq_volatile; } - debug_dcs(false); + debug_dcs(); debug_leave(); } @@ -1050,7 +1049,7 @@ dcs_add_member(sym_t *mem) if (union_size > dcs->d_sou_size_in_bits) dcs->d_sou_size_in_bits = union_size; - debug_dcs(false); + debug_dcs(); } sym_t * @@ -1195,7 +1194,7 @@ sym_t * add_pointer(sym_t *decl, qual_ptr *p) { - debug_dcs(false); + debug_dcs(); type_t **tpp = &decl->s_type; while (*tpp != NULL && *tpp != dcs->d_type) @@ -1266,7 +1265,7 @@ sym_t * add_array(sym_t *decl, bool dim, int n) { - debug_dcs(false); + debug_dcs(); type_t **tpp = &decl->s_type; while (*tpp != NULL && *tpp != dcs->d_type) @@ -1349,7 +1348,7 @@ add_function(sym_t *decl, struct paramet { debug_enter(); - debug_dcs(true); + debug_dcs_all(); debug_sym("decl: ", decl, "\n"); #ifdef DEBUG for (const sym_t *arg = params.first; arg != NULL; arg = arg->s_next) @@ -1407,7 +1406,7 @@ add_function(sym_t *decl, struct paramet params.prototype, params.first, params.vararg); debug_step("add_function: '%s'", type_name(decl->s_type)); - debug_dcs(true); + debug_dcs_all(); debug_leave(); return decl; } Index: src/usr.bin/xlint/lint1/externs1.h diff -u src/usr.bin/xlint/lint1/externs1.h:1.203 src/usr.bin/xlint/lint1/externs1.h:1.204 --- src/usr.bin/xlint/lint1/externs1.h:1.203 Sun Jul 30 22:27:21 2023 +++ src/usr.bin/xlint/lint1/externs1.h Tue Aug 1 16:08:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: externs1.h,v 1.203 2023/07/30 22:27:21 rillig Exp $ */ +/* $NetBSD: externs1.h,v 1.204 2023/08/01 16:08:58 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -136,7 +136,8 @@ const char *scl_name(scl_t); const char *symt_name(symt_t); const char *type_qualifiers_string(type_qualifiers); const char *function_specifier_name(function_specifier); -void debug_dcs(bool); +void debug_dcs(void); +void debug_dcs_all(void); void debug_node(const tnode_t *); void debug_type(const type_t *); void debug_sym(const char *, const sym_t *, const char *); @@ -145,6 +146,8 @@ void debug_printf(const char *fmt, ...) void debug_skip_indent(void); void debug_indent_inc(void); void debug_indent_dec(void); +bool debug_push_indented(bool); +void debug_pop_indented(bool); void debug_enter_func(const char *); void debug_step(const char *fmt, ...) __printflike(1, 2); void debug_leave_func(const char *); @@ -152,7 +155,8 @@ void debug_leave_func(const char *); #define debug_leave() debug_leave_func(__func__) #else #define debug_noop() do { } while (false) -#define debug_dcs(all) debug_noop() +#define debug_dcs() debug_noop() +#define debug_dcs_all() debug_noop() #define debug_sym(p, sym, s) debug_noop() #define debug_symtab() debug_noop() #define debug_node(tn) debug_noop() @@ -161,6 +165,8 @@ void debug_leave_func(const char *); #define debug_skip_indent() debug_noop() #define debug_indent_inc() debug_noop() #define debug_indent_dec() debug_noop() +#define debug_push_indented(c) true +#define debug_pop_indented(c) (void)(c) #define debug_enter() debug_noop() #define debug_step(...) debug_noop() #define debug_leave() debug_noop() Index: src/usr.bin/xlint/lint1/lex.c diff -u src/usr.bin/xlint/lint1/lex.c:1.189 src/usr.bin/xlint/lint1/lex.c:1.190 --- src/usr.bin/xlint/lint1/lex.c:1.189 Sun Jul 30 22:27:21 2023 +++ src/usr.bin/xlint/lint1/lex.c Tue Aug 1 16:08:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: lex.c,v 1.189 2023/07/30 22:27:21 rillig Exp $ */ +/* $NetBSD: lex.c,v 1.190 2023/08/01 16:08:58 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: lex.c,v 1.189 2023/07/30 22:27:21 rillig Exp $"); +__RCSID("$NetBSD: lex.c,v 1.190 2023/08/01 16:08:58 rillig Exp $"); #endif #include <ctype.h> @@ -1361,6 +1361,8 @@ getsym(sbuf_t *sb) set_symtyp(FVFT); if (!in_gcc_attribute) { + debug_printf("%s: symtab_add ", __func__); + debug_sym("", sym, "\n"); symtab_add(sym); *dl->d_last_dlsym = sym;