Ugh, I fail at typing, resending for rusty's benefit. On Tue, Dec 30, 2008 at 01:07:24PM -0500, Kyle McMartin wrote: > [Adding rusty to CC] > > On Mon, Dec 29, 2008 at 09:43:12PM +0100, Helge Deller wrote: > > +unsigned long module_additional_section_size(struct module *mod, > > + unsigned int section); > > + > > I think this would be more palatable as > > #ifdef HAVE_MODULE_SECTION_STUBS > unsigned long module_additional_section_size(struct module *mod, > unsigned int section); > #else > static inline unsigned long module_additional_section_size(struct module *mod, > unsigned int section) > { > return 0; > } > #endif > > and removing the conditional in kernel/module.c, possibly the symbol > should be "arch_module_a..." just to make it clear to anyone reading. > > Anyway, it's up to rusty. > > Rusty, we'd like to get this patch in, so I can merge the dependent > parisc-specific patch. > > regards, Kyle > > > /* Allocator used for allocating struct module, core sections and init > > sections. Returns NULL on failure. */ > > void *module_alloc(unsigned long size); > > diff --git a/init/Kconfig b/init/Kconfig > > index f763762..5383815 100644 > > --- a/init/Kconfig > > +++ b/init/Kconfig > > @@ -908,6 +908,9 @@ config MODULE_SRCVERSION_ALL > > the version). With this option, such a "srcversion" field > > will be created for all modules. If unsure, say N. > > > > +config HAVE_MODULE_SECTION_STUBS > > + bool > > + > > config KMOD > > def_bool y > > help > > diff --git a/kernel/module.c b/kernel/module.c > > index 1f4cc00..4b86308 100644 > > --- a/kernel/module.c > > +++ b/kernel/module.c > > @@ -1579,10 +1579,15 @@ static int simplify_symbols(Elf_Shdr *sechdrs, > > } > > > > /* Update size with this section: return offset. */ > > -static long get_offset(unsigned int *size, Elf_Shdr *sechdr) > > +static long get_offset(struct module *mod, unsigned int *size, > > + Elf_Shdr *sechdr, unsigned int section) > > { > > long ret; > > > > +#ifdef CONFIG_HAVE_MODULE_SECTION_STUBS > > + /* allocate some memory for stubs in front of each section */ > > + *size += module_additional_section_size(mod, section); > > +#endif > > ret = ALIGN(*size, sechdr->sh_addralign ?: 1); > > *size = ret + sechdr->sh_size; > > return ret; > > @@ -1622,7 +1627,7 @@ static void layout_sections(struct module *mod, > > || strncmp(secstrings + s->sh_name, > > ".init", 5) == 0) > > continue; > > - s->sh_entsize = get_offset(&mod->core_size, s); > > + s->sh_entsize = get_offset(mod, &mod->core_size, s, i); > > DEBUGP("\t%s\n", secstrings + s->sh_name); > > } > > if (m == 0) > > @@ -1640,7 +1645,7 @@ static void layout_sections(struct module *mod, > > || strncmp(secstrings + s->sh_name, > > ".init", 5) != 0) > > continue; > > - s->sh_entsize = (get_offset(&mod->init_size, s) > > + s->sh_entsize = (get_offset(mod, &mod->init_size, s, i) > > | INIT_OFFSET_MASK); > > DEBUGP("\t%s\n", secstrings + s->sh_name); > > } > > > -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html