X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fpowerpc%2Fkernel%2Fmodule_64.c;h=928b8581fcb043142c088052885b3f5b671ec4cf;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=ba34001fca8e8420b6c1aab0df0f9b0a43de3bda;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c index ba34001fc..928b8581f 100644 --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c @@ -191,19 +191,11 @@ int module_frob_arch_sections(Elf64_Ehdr *hdr, (void *)hdr + sechdrs[sechdrs[i].sh_link].sh_offset); } - - if (!me->arch.stubs_section) { - printk("%s: doesn't contain .stubs.\n", me->name); + if (!me->arch.stubs_section || !me->arch.toc_section) { + printk("%s: doesn't contain .toc or .stubs.\n", me->name); return -ENOEXEC; } - /* If we don't have a .toc, just use .stubs. We need to set r2 - to some reasonable value in case the module calls out to - other functions via a stub, or if a function pointer escapes - the module by some means. */ - if (!me->arch.toc_section) - me->arch.toc_section = me->arch.stubs_section; - /* Override the stubs size */ sechdrs[me->arch.stubs_section].sh_size = get_stubs_size(hdr, sechdrs); return 0; @@ -350,7 +342,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, break; case R_PPC64_TOC16: - /* Subtract TOC pointer */ + /* Subtact TOC pointer */ value -= my_r2(sechdrs, me); if (value + 0x8000 > 0xffff) { printk("%s: bad TOC16 relocation (%lu)\n", @@ -363,7 +355,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, break; case R_PPC64_TOC16_DS: - /* Subtract TOC pointer */ + /* Subtact TOC pointer */ value -= my_r2(sechdrs, me); if ((value & 3) != 0 || value + 0x8000 > 0xffff) { printk("%s: bad TOC16_DS relocation (%lu)\n",