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

Reply via email to