Messages in this thread | | | Date | Thu, 14 Oct 2004 23:08:02 +0100 | From | Russell King <> | Subject | Re: __attribute__((unused)) |
| |
On Thu, Oct 14, 2004 at 11:04:56PM +0100, David Woodhouse wrote: > On Thu, 2004-10-14 at 22:02 +0100, Russell King wrote: > > Hi, > > > > I notice that module.h contains stuff like: > > > > #define MODULE_GENERIC_TABLE(gtype,name) \ > > extern const struct gtype##_id __mod_##gtype##_table \ > > __attribute__ ((unused, alias(__stringify(name)))) > > > > and even: > > > > #define __MODULE_INFO(tag, name, info) \ > > static const char __module_cat(name,__LINE__)[] \ > > __attribute_used__ \ > > __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info > > > > My understanding is that we shouldn't be using __attribute__((unused)) > > in either of these - can someone confirm. > > Since the structure in question isn't explicitly referenced from > elsewhere, the compiler may feel free to omit it. Since we want the > compiler to emit it, not omit it, we use "unused" to say "yes, I know it > looks unused; please emit it anyway". Later compilers use "used" to say > "I use it really; please emit it anyway", meaning much the same thing.
It's the "later compilers" which I'm worried about here - I think they defined "unused" to mean "this really really isn't used and you can discard it". Hence my concern with the above.
-- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/ 2.6 Serial core - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |