[Bug c/49975] New: warn on malformed __attribute((...))__
ext at sidvind dot com
gcc-bugzilla@gcc.gnu.org
Thu Aug 4 13:17:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49975
Summary: warn on malformed __attribute((...))__
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ext@sidvind.com
Recently I ran into a linker error "multiple definition of `__'" which was
caused by struct with a IMO malformed attribute. Consider the following struct
in a header:
struct foo {
int bar;
} __attribute((unused))__;
At a first glance it seems like there is nothing wrong here but since the "__"
is placed after "))" it happily creates an uninitialized global called "__".
This global will then be created in multiple files and when linking will lead
to the "multiple definition" error.
First of all, I think whitespace should be required after "))" to make it
really clear what is going happen. Secondly I don't think "__attribute(("
should work at all since the documentation states that "__attribute__" is the
keyword.
I've tried this with many different versions of gcc (including older versions
like gcc-3.3) and they all have this behaviour.
More information about the Gcc-bugs
mailing list