module.h unused or used?
PATCH 1/1 module.h unused or used?
Name: EXPORT_SYMBOL declares something used and unused
Author: Rusty Russell
Status: Trival
Someone added __attribute_used__ throughout module.h, but didn't remove the ", unused". Looks like some arch/gcc combos still consider it unused, and discard the fn.
Rant: GCC should have introduced "needed" and "unneeded" attributed, rather than dick around with the established behaviour of "unused", which could then be a (deprecated) synonym for "needed". The user then gets an unused warning and inserts attribute "needed" or "unneeded": both suppress the warning, but say explicitly whether it can be discarded or not.
But now we have "used" meaning it's unused (as the compiler will tell you), BUT I need it anyway. And every time I use them I have to check which is which. Even better, used defines to unused for backwards compatibility. Um, yeah.
include/linux/module.h +5 -4
@@ -64,11 +64,12 @@ void sort_main_extable(void);#define __MODULE_INFO (tag, name, info) \ static const char __module_cat(name,__LINE__)[] \ __attribute_used__ \ - __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info + __attribute__((section(".modinfo"))) = __stringify(tag) "=" info#define MODULE_GENERIC_TABLE (gtype,name) \ extern const struct gtype##_id __mod_##gtype##_table \ - __attribute__ ((unused, alias(__stringify(name)))) + __attribute_used__ \ + __attribute__ ((alias(__stringify(name))))#define THIS_MODULE (&__this_module)
@@ -165,7 +166,7 @@ void *__symbol_get_gpl(const char *symbo extern void *__crc_##sym __attribute__((weak)); \ static const unsigned long __kcrctab_##sym \ __attribute_used__ \ - __attribute__((section("__kcrctab" sec), unused)) \ + __attribute__((section("__kcrctab" sec))) \ = (unsigned long) &__crc_##sym;#else #define __CRC_SYMBOL (sym, sec)
@@ -179,7 +180,7 @@ void *__symbol_get_gpl(const char *symbo = MODULE_SYMBOL_PREFIX #sym; \ static const struct kernel_symbol __ksymtab_##sym \ __attribute_used__ \ - __attribute__((section("__ksymtab" sec), unused)) \ + __attribute__((section("__ksymtab" sec))) \ = { (unsigned long)&sym, __kstrtab_##sym }#define EXPORT_SYMBOL (sym) \
Signature · 1 line
Anyone who quotes me in their signature is an idiot -- Rusty Russell