[Bug c/42384] New: attribute((warning(""))) should warn on function addresses
ebb9 at byu dot net
gcc-bugzilla@gcc.gnu.org
Tue Dec 15 21:16:00 GMT 2009
Right now, use of attribute((warning)) only triggers a warning when
encountering a direct call of a labeled function (line 13 in the example below)
or simple indirection that can trivially be reduced to a direct call (line 17).
But there is a hole: any time the address of a function is not immediately
used for a function call, the warning is lost. It would be nice if a warning
were instead issued at any place where the address of a function is taken (and
not further optimized out of the program), thus causing additional warnings on
lines 14 and 15 in the example. After all, the resulting function calls in
lines 14 and 16 are no safer than any of the other calls in the example.
$ cat foo.c
static int oops (int) __attribute__ ((__warning__ ("message")));
static int
oops (int x)
{
return x;
}
int
main (int argc, char **argv)
{
int (*func) (int);
oops (1);
(func = &oops) (1);
func = oops;
func (1);
(&oops) (1);
return 0;
}
$ gcc -o foo foo.c
foo.c: In function ÂmainÂ:
foo.c:13: warning: call to Âoops declared with attribute warning: message
foo.c:17: warning: call to Âoops declared with attribute warning: message
$
--
Summary: attribute((warning(""))) should warn on function
addresses
Product: gcc
Version: 4.3.4
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ebb9 at byu dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42384
More information about the Gcc-bugs
mailing list