[Bug driver/105171] gcc/toplev.c: `local_tick` can overflow and become -1
jason at zx2c4 dot com
gcc-bugzilla@gcc.gnu.org
Tue Apr 5 22:52:11 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105171
Jason A. Donenfeld <jason at zx2c4 dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|plugins |driver
--- Comment #1 from Jason A. Donenfeld <jason at zx2c4 dot com> ---
Hi Andrew - I see you just changed the component to "plugins". That's partially
right, but partially wrong too, because this also affects components of gcc
itself. In particular, from gcc/coverage.c:
----------------------------------------------------------------------
void
coverage_finish (void)
{
if (bbg_file_name && gcov_close ())
unlink (bbg_file_name);
if (!flag_branch_probabilities && flag_test_coverage
&& (!local_tick || local_tick == (unsigned)-1))
/* Only remove the da file, if we're emitting coverage code and
cannot uniquely stamp it. If we can stamp it, libgcov will DTRT. */
unlink (da_file_name);
----------------------------------------------------------------------
Here we have two chances for local_tick to wrap around to 0 or to -1, when
perhaps that wasn't the intention.
So I'm going to set the component field back to driver, where the bug lives, as
this clearly affects multiple things (coverage, plugins, maybe other stuff I
don't know).
More information about the Gcc-bugs
mailing list