Module Name: src Committed By: rillig Date: Sat Aug 28 12:59:26 UTC 2021
Modified Files: src/usr.bin/xlint/common: lint.h src/usr.bin/xlint/lint1: decl.c externs1.h mem1.c tree.c src/usr.bin/xlint/lint2: mem2.c Log Message: lint: use 'unsigned int' for bit-size of types Lint does not need to support any types larger than 256 MB since they don't occur in practice. Practically, such large types have never been supported at all since the function type_size_in_bits used int for the internal calculations, resulting in overflows. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/usr.bin/xlint/common/lint.h cvs rdiff -u -r1.225 -r1.226 src/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.133 -r1.134 src/usr.bin/xlint/lint1/externs1.h cvs rdiff -u -r1.49 -r1.50 src/usr.bin/xlint/lint1/mem1.c cvs rdiff -u -r1.354 -r1.355 src/usr.bin/xlint/lint1/tree.c cvs rdiff -u -r1.12 -r1.13 src/usr.bin/xlint/lint2/mem2.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/common/lint.h diff -u src/usr.bin/xlint/common/lint.h:1.29 src/usr.bin/xlint/common/lint.h:1.30 --- src/usr.bin/xlint/common/lint.h:1.29 Sun Aug 22 15:06:49 2021 +++ src/usr.bin/xlint/common/lint.h Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: lint.h,v 1.29 2021/08/22 15:06:49 rillig Exp $ */ +/* $NetBSD: lint.h,v 1.30 2021/08/28 12:59:25 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -92,9 +92,9 @@ typedef enum { * size of types, name and classification */ typedef struct { - size_t tt_size_in_bits; - size_t tt_portable_size_in_bits; /* different from tt_size_in_bits - * if pflag is set */ + unsigned int tt_size_in_bits; + unsigned int tt_portable_size_in_bits; /* different from + * tt_size_in_bits if pflag is set */ tspec_t tt_signed_counterpart; tspec_t tt_unsigned_counterpart; bool tt_is_integer : 1; /* integer type */ Index: src/usr.bin/xlint/lint1/decl.c diff -u src/usr.bin/xlint/lint1/decl.c:1.225 src/usr.bin/xlint/lint1/decl.c:1.226 --- src/usr.bin/xlint/lint1/decl.c:1.225 Sat Aug 28 12:41:03 2021 +++ src/usr.bin/xlint/lint1/decl.c Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.225 2021/08/28 12:41:03 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.226 2021/08/28 12:59:25 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.225 2021/08/28 12:41:03 rillig Exp $"); +__RCSID("$NetBSD: decl.c,v 1.226 2021/08/28 12:59:25 rillig Exp $"); #endif #include <sys/param.h> @@ -581,7 +581,7 @@ setpackedsize(type_t *tp) if (mem == NULL) break; } - size_t x = (size_t)type_size_in_bits(mem->s_type); + unsigned int x = type_size_in_bits(mem->s_type); if (tp->t_tspec == STRUCT) sp->sou_size_in_bits += x; else if (x > sp->sou_size_in_bits) @@ -1227,7 +1227,7 @@ declarator_1_struct_union(sym_t *dsym) if (dsym->s_bitfield) { align(alignment_in_bits(tp), tp->t_flen); dsym->s_value.v_quad = - (dcs->d_offset / size_in_bits(t)) * size_in_bits(t); + dcs->d_offset - dcs->d_offset % size_in_bits(t); tp->t_foffs = dcs->d_offset - (int)dsym->s_value.v_quad; dcs->d_offset += tp->t_flen; } else { @@ -1852,7 +1852,7 @@ complete_tag_struct_or_union(type_t *tp, break; } sp->sou_size_in_bits += - (u_int)type_size_in_bits(mem->s_type); + type_size_in_bits(mem->s_type); } if (mem->s_name != unnamed) n++; Index: src/usr.bin/xlint/lint1/externs1.h diff -u src/usr.bin/xlint/lint1/externs1.h:1.133 src/usr.bin/xlint/lint1/externs1.h:1.134 --- src/usr.bin/xlint/lint1/externs1.h:1.133 Sat Aug 28 12:41:03 2021 +++ src/usr.bin/xlint/lint1/externs1.h Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: externs1.h,v 1.133 2021/08/28 12:41:03 rillig Exp $ */ +/* $NetBSD: externs1.h,v 1.134 2021/08/28 12:59:25 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -262,7 +262,7 @@ extern void check_expr_misc(const tnode_ bool, bool, bool); extern bool constant_addr(const tnode_t *, const sym_t **, ptrdiff_t *); extern strg_t *cat_strings(strg_t *, strg_t *); -extern int64_t type_size_in_bits(const type_t *); +extern unsigned int type_size_in_bits(const type_t *); /* * func.c Index: src/usr.bin/xlint/lint1/mem1.c diff -u src/usr.bin/xlint/lint1/mem1.c:1.49 src/usr.bin/xlint/lint1/mem1.c:1.50 --- src/usr.bin/xlint/lint1/mem1.c:1.49 Tue Aug 10 17:57:16 2021 +++ src/usr.bin/xlint/lint1/mem1.c Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mem1.c,v 1.49 2021/08/10 17:57:16 rillig Exp $ */ +/* $NetBSD: mem1.c,v 1.50 2021/08/28 12:59:25 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: mem1.c,v 1.49 2021/08/10 17:57:16 rillig Exp $"); +__RCSID("$NetBSD: mem1.c,v 1.50 2021/08/28 12:59:25 rillig Exp $"); #endif #include <sys/types.h> @@ -285,11 +285,8 @@ xfreeblk(memory_block **fmbp) void initmem(void) { - int pgsz; - - pgsz = getpagesize(); - mblklen = ((MBLKSIZ + pgsz - 1) / pgsz) * pgsz; + mblklen = MBLKSIZ - MBLKSIZ % (unsigned int)getpagesize(); mblks = xcalloc(nmblks = ML_INC, sizeof(*mblks)); } Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.354 src/usr.bin/xlint/lint1/tree.c:1.355 --- src/usr.bin/xlint/lint1/tree.c:1.354 Sat Aug 28 12:29:40 2021 +++ src/usr.bin/xlint/lint1/tree.c Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.354 2021/08/28 12:29:40 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.355 2021/08/28 12:59:25 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: tree.c,v 1.354 2021/08/28 12:29:40 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.355 2021/08/28 12:59:25 rillig Exp $"); #endif #include <float.h> @@ -3296,7 +3296,7 @@ fold_float(tnode_t *tn) tnode_t * build_sizeof(const type_t *tp) { - int64_t size_in_bytes = type_size_in_bits(tp) / CHAR_SIZE; + unsigned int size_in_bytes = type_size_in_bits(tp) / CHAR_SIZE; tnode_t *tn = build_integer_constant(SIZEOF_TSPEC, size_in_bytes); tn->tn_system_dependent = true; return tn; @@ -3314,16 +3314,16 @@ build_offsetof(const type_t *tp, const s error(111, "offsetof"); // XXX: wrong size, no checking for sym fixme - int64_t offset_in_bytes = type_size_in_bits(tp) / CHAR_SIZE; + unsigned int offset_in_bytes = type_size_in_bits(tp) / CHAR_SIZE; tnode_t *tn = build_integer_constant(SIZEOF_TSPEC, offset_in_bytes); tn->tn_system_dependent = true; return tn; } -int64_t +unsigned int type_size_in_bits(const type_t *tp) { - int elem, elsz; + unsigned int elem, elsz; bool flex; elem = 1; @@ -3378,7 +3378,7 @@ type_size_in_bits(const type_t *tp) break; } - return (int64_t)elem * elsz; + return elem * elsz; } tnode_t * Index: src/usr.bin/xlint/lint2/mem2.c diff -u src/usr.bin/xlint/lint2/mem2.c:1.12 src/usr.bin/xlint/lint2/mem2.c:1.13 --- src/usr.bin/xlint/lint2/mem2.c:1.12 Sun Aug 1 17:59:47 2021 +++ src/usr.bin/xlint/lint2/mem2.c Sat Aug 28 12:59:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mem2.c,v 1.12 2021/08/01 17:59:47 rillig Exp $ */ +/* $NetBSD: mem2.c,v 1.13 2021/08/28 12:59:25 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: mem2.c,v 1.12 2021/08/01 17:59:47 rillig Exp $"); +__RCSID("$NetBSD: mem2.c,v 1.13 2021/08/28 12:59:25 rillig Exp $"); #endif #include <sys/param.h> @@ -59,11 +59,8 @@ static void *mbuf; void initmem(void) { - int pgsz; - - pgsz = getpagesize(); - mblklen = ((MBLKSIZ + pgsz - 1) / pgsz) * pgsz; + mblklen = MBLKSIZ - MBLKSIZ % (unsigned int)getpagesize(); nxtfree = mblklen; }