[Bug c/24839] New: Mudflap not registering unreferenced globals
dgraham at nortel dot com
gcc-bugzilla@gcc.gnu.org
Mon Nov 14 00:14:00 GMT 2005
Mudflap is not registering global variable definitions that are not referenced
within the source file that they are defined in. Compile a C file
with the single line "short globalvar;" in it with gcc -c -fmudflap.
Note that there are no calls to __mf_register emitted.
The culprit seems to be this code in tree-mudflap.c, function
mudflap_finish_file():
/* Omit registration for static unaddressed objects. NB:
Perform registration for non-static objects regardless of
TREE_USED or TREE_ADDRESSABLE, because they may be used
from other compilation units. */
if (TREE_STATIC (obj) && ! TREE_ADDRESSABLE (obj))
continue;
The continue is being taken, which must mean that TREE_STATIC
doesn't mean what this code thinks it means. I think it means static
storage class, not, as this code assumes, file scope.
On a related note, mudflap will register a variable when it sees
an extern in another compilation unit (if it knows the size),
but I don't think it should trust externs, since one of the
classes of bugs that it could be catching is declarations that
don't match the definitions. There needs to be a way to make the
actual definitions take precedence.
Note: I have no idea what to use for "Component" here.
--
Summary: Mudflap not registering unreferenced globals
Product: gcc
Version: 4.0.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dgraham at nortel dot com
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24839
More information about the Gcc-bugs
mailing list