From: Brian Gerst Move the __this_module structure to the modpost code where it really belongs. --- 25-akpm/include/linux/module.h | 16 +--------------- 25-akpm/scripts/Makefile.modpost | 2 ++ 25-akpm/scripts/modpost.c | 12 ++++++++++++ 3 files changed, 15 insertions(+), 15 deletions(-) diff -puN include/linux/module.h~move-__this_module-to-modpost include/linux/module.h --- 25/include/linux/module.h~move-__this_module-to-modpost 2004-04-03 03:00:04.878489912 -0800 +++ 25-akpm/include/linux/module.h 2004-04-03 03:00:04.884489000 -0800 @@ -70,6 +70,7 @@ static const char __module_cat(name,__LI extern const struct gtype##_id __mod_##gtype##_table \ __attribute__ ((unused, alias(__stringify(name)))) +extern struct module __this_module; #define THIS_MODULE (&__this_module) #else /* !MODULE */ @@ -481,21 +482,6 @@ static inline int unregister_module_noti #endif /* CONFIG_MODULES */ -#ifdef MODULE -extern struct module __this_module; -#ifdef KBUILD_MODNAME -/* We make the linker do some of the work. */ -struct module __this_module -__attribute__((section(".gnu.linkonce.this_module"))) = { - .name = __stringify(KBUILD_MODNAME), - .init = init_module, -#ifdef CONFIG_MODULE_UNLOAD - .exit = cleanup_module, -#endif -}; -#endif /* KBUILD_MODNAME */ -#endif /* MODULE */ - #define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x) /* BELOW HERE ALL THESE ARE OBSOLETE AND WILL VANISH */ diff -puN scripts/Makefile.modpost~move-__this_module-to-modpost scripts/Makefile.modpost --- 25/scripts/Makefile.modpost~move-__this_module-to-modpost 2004-04-03 03:00:04.880489608 -0800 +++ 25-akpm/scripts/Makefile.modpost 2004-04-03 03:00:04.885488848 -0800 @@ -35,6 +35,8 @@ targets += $(modules) # Compile version info for unresolved symbols +modname = $(*F) + quiet_cmd_cc_o_c = CC $@ cmd_cc_o_c = $(CC) $(c_flags) $(CFLAGS_MODULE) \ -c -o $@ $< diff -puN scripts/modpost.c~move-__this_module-to-modpost scripts/modpost.c --- 25/scripts/modpost.c~move-__this_module-to-modpost 2004-04-03 03:00:04.881489456 -0800 +++ 25-akpm/scripts/modpost.c 2004-04-03 03:00:04.885488848 -0800 @@ -343,6 +343,9 @@ handle_modversions(struct module *mod, s /* ignore global offset table */ if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0) break; + /* ignore __this_module, it will be resolved shortly */ + if (strcmp(symname, MODULE_SYMBOL_PREFIX "__this_module") == 0) + break; #ifdef STT_REGISTER if (info->hdr->e_machine == EM_SPARC || info->hdr->e_machine == EM_SPARCV9) { @@ -468,6 +471,15 @@ add_header(struct buffer *b) buf_printf(b, "#include \n"); buf_printf(b, "\n"); buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n"); + buf_printf(b, "\n"); + buf_printf(b, "struct module __this_module\n"); + buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n"); + buf_printf(b, " .name = __stringify(KBUILD_MODNAME),\n"); + buf_printf(b, " .init = init_module,\n"); + buf_printf(b, "#ifdef CONFIG_MODULE_UNLOAD\n"); + buf_printf(b, " .exit = cleanup_module,\n"); + buf_printf(b, "#endif\n"); + buf_printf(b, "};\n"); } /* Record CRCs for unresolved symbols */ _