Hi Martin, > The compute_objsize() function started out as a thin wrapper around > compute_builtin_object_size(), but over time developed its own > features to compensate for the other function's limitations (such > as its inability to work with ranges). The interaction of these > features and the limitations has started to become increasingly > problematic as the former function is used in more contexts. > > A complete "fix" for all the problems (as well as some other > limitations) that I'm working on will be more extensive and won't > be appropriate for backports. Until then, the attached patch > cleans up the extensions compute_objsize() has accumulated over > the years to avoid a class of false positives. > > To make the warnings issued based on the results of the function > easier to understand and fix, the patch also adds an informative > message to many instances of -Wstringop-overflow to point to > the object to which the warning refers. This is especially > helpful when the object is referenced by a series of pointer > operations. > > Tested by boostrapping on x86_64-linux and building Binutils/GDB, > Glibc, and the Linux kernel with no new warnings. > > Besides applying it to trunk I'm looking to backport the fix to > GCC 10.
it seems you were over-eager in removing xfail's from gcc.dg/builtin-stringop-chk-5.c: on both Solaris/SPARC and x86 (32-bit only) I see +FAIL: gcc.dg/builtin-stringop-chk-5.c (test for excess errors) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 136) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 139) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 142) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 145) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 148) +FAIL: gcc.dg/builtin-stringop-chk-5.c memcpy into allocated (test for warnings, line 151) Excess errors: /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:136:3: warning: 'memset' writing 4 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:139:3: warning: 'memset' writing 4 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:142:3: warning: 'memset' writing 3 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:145:3: warning: 'memset' writing 3 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:148:3: warning: 'memset' writing 2 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] /vol/gcc/src/hg/master/local/gcc/testsuite/gcc.dg/builtin-stringop-chk-5.c:151:3: warning: 'memset' writing 2 bytes into a region of size 1 overflows the destination [-Wstringop-overflow=] Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University