From patchwork Tue Sep 18 05:59:52 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Larsson X-Patchwork-Id: 184613 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2DB732C0081 for ; Tue, 18 Sep 2012 16:00:33 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755304Ab2IRGAc (ORCPT ); Tue, 18 Sep 2012 02:00:32 -0400 Received: from vsp-authed02.binero.net ([195.74.38.226]:29940 "HELO vsp-authed-01-02.binero.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1754613Ab2IRGAb (ORCPT ); Tue, 18 Sep 2012 02:00:31 -0400 Received: from smtp01.binero.se (unknown [195.74.38.28]) by vsp-authed-01-02.binero.net (Halon Mail Gateway) with ESMTP; Tue, 18 Sep 2012 07:59:55 +0200 (CEST) Received: from localhost.localdomain (unknown [92.33.28.242]) (Authenticated sender: andreas@gaisler.com) by smtp-05-01.atm.binero.net (Postfix) with ESMTPA id 722B13A166; Tue, 18 Sep 2012 07:59:55 +0200 (CEST) From: Andreas Larsson To: davem@davemloft.net Cc: sparclinux@vger.kernel.org, software@gaisler.com, sam@ravnborg.org Subject: [PATCH v2] sparc32: Enable the relocation target R_SPARC_DISP32 for sparc32 Date: Tue, 18 Sep 2012 07:59:52 +0200 Message-Id: <1347947992-30526-1-git-send-email-andreas@gaisler.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <20120917.122722.2202914693352843309.davem@davemloft.net> References: <20120917.122722.2202914693352843309.davem@davemloft.net> Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org GNU Binutils 2.20.1 generates .eh_frame sections that uses R_SPARC_DISP32. Signed-off-by: Andreas Larsson --- arch/sparc/kernel/module.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index 15e0a16..bae6ab6 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c @@ -116,6 +116,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs, v = sym->st_value + rel[i].r_addend; switch (ELF_R_TYPE(rel[i].r_info) & 0xff) { + case R_SPARC_DISP32: + v -= (Elf_Addr) location; + *loc32 = v; + break; #ifdef CONFIG_SPARC64 case R_SPARC_64: location[0] = v >> 56; @@ -128,11 +132,6 @@ int apply_relocate_add(Elf_Shdr *sechdrs, location[7] = v >> 0; break; - case R_SPARC_DISP32: - v -= (Elf_Addr) location; - *loc32 = v; - break; - case R_SPARC_WDISP19: v -= (Elf_Addr) location; *loc32 = (*loc32 & ~0x7ffff) |