From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S262766AbUEWMkj (ORCPT ); Sun, 23 May 2004 08:40:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262768AbUEWMkj (ORCPT ); Sun, 23 May 2004 08:40:39 -0400 Received: from p060042.ppp.asahi-net.or.jp ([221.113.60.42]:22257 "EHLO mitou.ysato.dip.jp") by vger.kernel.org with ESMTP id S262766AbUEWMkd (ORCPT ); Sun, 23 May 2004 08:40:33 -0400 Date: Sun, 23 May 2004 21:40:31 +0900 Message-ID: From: Yoshinori Sato To: Linus Torvalds Cc: linux kernel Mailing List Subject: [PATCH] H8/300 module fix User-Agent: Wanderlust/2.11.24 (Wonderwall) SEMI/1.14.6 (Maruoka) LIMIT/1.14.7 (Fujiidera) APEL/10.6 Emacs/21.3 (i386-pc-linux-gnu) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org - fix relocation - define SYMBOL_PREFIX -- Yoshinori Sato diff -ur linux-2.6.6-bk9/arch/h8300/kernel/h8300_ksyms.c linux-2.6.6-h8300/arch/h8300/kernel/h8300_ksyms.c --- linux-2.6.6-bk9/arch/h8300/kernel/h8300_ksyms.c 2004-05-23 21:11:56.000000000 +0900 +++ linux-2.6.6-h8300/arch/h8300/kernel/h8300_ksyms.c 2004-05-23 21:01:50.000000000 +0900 @@ -40,6 +40,8 @@ EXPORT_SYMBOL(ip_fast_csum); EXPORT_SYMBOL(kernel_thread); +EXPORT_SYMBOL(enable_irq); +EXPORT_SYMBOL(disable_irq); /* Networking helper routines. */ EXPORT_SYMBOL(csum_partial_copy); diff -ur linux-2.6.6-bk9/arch/h8300/kernel/module.c linux-2.6.6-h8300/arch/h8300/kernel/module.c --- linux-2.6.6-bk9/arch/h8300/kernel/module.c 2004-05-23 21:11:56.000000000 +0900 +++ linux-2.6.6-h8300/arch/h8300/kernel/module.c 2004-05-23 21:01:50.000000000 +0900 @@ -67,7 +67,6 @@ Elf32_Sym *sym = (Elf32_Sym *)sechdrs[symindex].sh_addr + ELF32_R_SYM(rela[i].r_info); uint32_t v = sym->st_value + rela[i].r_addend; - uint32_t dot = sechdrs[symindex].sh_addr + rela[i].r_offset; switch (ELF32_R_TYPE(rela[i].r_info)) { case R_H8_DIR24R8: @@ -75,14 +74,15 @@ *loc = (*loc & 0xff000000) | ((*loc & 0xffffff) + v); break; case R_H8_DIR24A8: - *loc += v; + if (ELF32_R_SYM(rela[i].r_info)) + *loc += v; break; case R_H8_DIR32: case R_H8_DIR32A16: *loc += v; break; case R_H8_PCREL16: - v -= dot + 2; + v -= (unsigned long)loc + 2; if ((Elf32_Sword)v > 0x7fff || (Elf32_Sword)v < -(Elf32_Sword)0x8000) goto overflow; @@ -90,7 +90,7 @@ *(unsigned short *)loc = v; break; case R_H8_PCREL8: - v -= dot + 1; + v -= (unsigned long)loc + 1; if ((Elf32_Sword)v > 0x7f || (Elf32_Sword)v < -(Elf32_Sword)0x80) goto overflow; @@ -105,7 +105,7 @@ } return 0; overflow: - printk(KERN_ERR "module %s: relocation offset overflow: %p\n", + printk(KERN_ERR "module %s: relocation offset overflow: %08x\n", me->name, rela[i].r_offset); return -ENOEXEC; } diff -ur linux-2.6.6-bk9/include/asm-h8300/module.h linux-2.6.6-h8300/include/asm-h8300/module.h --- linux-2.6.6-bk9/include/asm-h8300/module.h 2004-05-23 21:12:07.000000000 +0900 +++ linux-2.6.6-h8300/include/asm-h8300/module.h 2004-05-23 21:00:28.000000000 +0900 @@ -8,4 +8,6 @@ #define Elf_Sym Elf32_Sym #define Elf_Ehdr Elf32_Ehdr +#define MODULE_SYMBOL_PREFIX "_" + #endif /* _ASM_H8/300_MODULE_H */ diff -ur linux-2.6.6-bk9/scripts/mk_elfconfig.c linux-2.6.6-h8300/scripts/mk_elfconfig.c --- linux-2.6.6-bk9/scripts/mk_elfconfig.c 2004-01-09 16:00:04.000000000 +0900 +++ linux-2.6.6-h8300/scripts/mk_elfconfig.c 2004-05-23 21:01:08.000000000 +0900 @@ -55,7 +55,7 @@ else abort(); - if (strcmp(argv[1], "v850") == 0) + if ((strcmp(argv[1], "v850") == 0) || (strcmp(argv[1], "h8300") == 0)) printf("#define MODULE_SYMBOL_PREFIX \"_\"\n"); else printf("#define MODULE_SYMBOL_PREFIX \"\"\n");