From: Rusty Russell 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. --- 25-akpm/include/linux/module.h | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff -puN include/linux/module.h~module_h-attribute_used-fix include/linux/module.h --- 25/include/linux/module.h~module_h-attribute_used-fix 2004-03-12 01:33:03.000000000 -0800 +++ 25-akpm/include/linux/module.h 2004-03-12 01:33:03.000000000 -0800 @@ -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) \ _