Move __this_module to modpost
Subsystems (2)
PATCH 1/1 Move __this_module to modpost
Move the __this_module structure to the modpost code where it really belongs. Also change the section to __module, which module-init-tools already knows about.
--
Brian Gerst
arch/v850/Makefile +0 -5
@@ -22,11 +22,6 @@ CFLAGS += -fno-builtin CFLAGS += -D__linux__ -DUTS_SYSNAME=\"uClinux\" -# This prevents the linker from consolidating the .gnu.linkonce.this_module -# section into .text (which the v850 default linker script for -r does for -# some reason) -LDFLAGS_MODULE += --unique=.gnu.linkonce.this_module - OBJCOPY_FLAGS_BLOB := -I binary -O elf32-little -B v850e
include/linux/module.h +1 -15
@@ -70,6 +70,7 @@ 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 @@#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 */
kernel/module.c +4 -2
@@ -1328,8 +1328,10 @@#endif } - modindex =find_sec (hdr, sechdrs, secstrings, -".gnu.linkonce.this_module" ); + modindex =find_sec (hdr, sechdrs, secstrings,"__module" ); +if (!modindex)/* To be removed in 2.7.x */ + modindex =find_sec (hdr, sechdrs, secstrings, +".gnu.linkonce.this_module" );if (!modindex) {printk (KERN_WARNING "No module found in object\n" ); err = -ENOEXEC ;
scripts/Makefile.modpost +2 -0
@@ -35,6 +35,8 @@ # 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 $@ $<
scripts/modpost.c +12 -0
@@ -355,6 +355,9 @@/* 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 ) {
@@ -480,6 +483,15 @@buf_printf (b,"#include <linux/compiler.h>\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(\"__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 */