]> git.hungrycats.org Git - linux/commitdiff
[PATCH] make gcc 3.4 compilation work
authorAndrew Morton <akpm@osdl.org>
Mon, 19 Jan 2004 13:13:24 +0000 (05:13 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Mon, 19 Jan 2004 13:13:24 +0000 (05:13 -0800)
From: David Mosberger <davidm@napali.hpl.hp.com>

With gcc-3.4 we need "attribute((used))" declarations to get "make
modules_install" to work.

Otherwise these sections get dropped from the final image (I assume).

include/linux/module.h
include/linux/moduleparam.h
scripts/modpost.c

index 13ff244afdbfe4caa2e7340b03cc064f375ca0f0..c0418e47a296891a19f7855e91b92a8d427d9de2 100644 (file)
@@ -60,6 +60,7 @@ search_extable(const struct exception_table_entry *first,
 #define __module_cat(a,b) ___module_cat(a,b)
 #define __MODULE_INFO(tag, name, info)                                   \
 static const char __module_cat(name,__LINE__)[]                                  \
+  __attribute_used__                                                     \
   __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
 
 #define MODULE_GENERIC_TABLE(gtype,name)                       \
@@ -142,6 +143,7 @@ void *__symbol_get_gpl(const char *symbol);
 #define __CRC_SYMBOL(sym, sec)                                 \
        extern void *__crc_##sym __attribute__((weak));         \
        static const unsigned long __kcrctab_##sym              \
+       __attribute_used__                                      \
        __attribute__((section("__kcrctab" sec), unused))       \
        = (unsigned long) &__crc_##sym;
 #else
@@ -155,6 +157,7 @@ void *__symbol_get_gpl(const char *symbol);
        __attribute__((section("__ksymtab_strings")))           \
        = MODULE_SYMBOL_PREFIX #sym;                            \
        static const struct kernel_symbol __ksymtab_##sym       \
+       __attribute_used__                                      \
        __attribute__((section("__ksymtab" sec), unused))       \
        = { (unsigned long)&sym, __kstrtab_##sym }
 
index 0a5becbed7748ff29b5cbec73d5ad5899c873d4a..cbca00722b5c7bba1ba4edc2e69cc9e9c351f99f 100644 (file)
@@ -52,6 +52,7 @@ struct kparam_array
 #define __module_param_call(prefix, name, set, get, arg, perm)         \
        static char __param_str_##name[] __initdata = prefix #name;     \
        static struct kernel_param const __param_##name                 \
+       __attribute_used__                                              \
     __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
        = { __param_str_##name, perm, set, get, arg }
 
index 0b6d7dfffab697fa59cf7977a9ba3b60026bc21a..7e6a4bb035a711076eb0e7ce7cdee406f64fccf1 100644 (file)
@@ -446,6 +446,7 @@ add_versions(struct buffer *b, struct module *mod)
 
        buf_printf(b, "\n");
        buf_printf(b, "static const struct modversion_info ____versions[]\n");
+       buf_printf(b, "__attribute_used__\n");
        buf_printf(b, "__attribute__((section(\"__versions\"))) = {\n");
 
        for (s = mod->unres; s; s = s->next) {