Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757797AbbDWCvX (ORCPT ); Wed, 22 Apr 2015 22:51:23 -0400 Received: from mail-wi0-f181.google.com ([209.85.212.181]:33570 "EHLO mail-wi0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754557AbbDWCvT convert rfc822-to-8bit (ORCPT ); Wed, 22 Apr 2015 22:51:19 -0400 MIME-Version: 1.0 In-Reply-To: References: Date: Thu, 23 Apr 2015 10:51:18 +0800 Message-ID: Subject: Re: [PATCH] blackfin: Makefile: Skip reloc overflow issue when COMPILE_TEST enabled From: Steven Miao To: Chen Gang Cc: Richard Weinberger , bfin , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2379 Lines: 51 On Wed, Apr 22, 2015 at 10:32 PM, Chen Gang wrote: > On 4/22/15 17:00, Steven Miao wrote: >> Hi, >> >> On Thu, Apr 9, 2015 at 5:03 AM, Chen Gang wrote: >>> l1_text is at L1_CODE_START (e.g. for bf533, 0xff800000). If the kernel >>> is too big, it may be overwritten, the related issue: >>> >>> LD init/built-in.o >>> init/built-in.o: In function `do_early_param': >>> init/main.c:(.init.text+0xe0): relocation truncated to fit: R_BFIN_PCREL24 against symbol `strcmp' defined in .l1.text section in arch/blackfin/lib/lib.a(strcmp.o) >>> init/main.c:(.init.text+0x10e): relocation truncated to fit: R_BFIN_PCREL24 against symbol `strcmp' defined in .l1.text section in arch/blackfin/lib/lib.a(strcmp.o) >> blackfin toolchain generate 24 bit pc-relative calls by default, with >> a range of –16,777,216 through 16,777,214 (0xFF00 0000 to 0x00FF FFFE) >> is available. >> So call to l1_text should be ok. What do you mean the kernel is too big? >> http://docs.blackfin.uclinux.org/doku.php?id=ism:call >> >> > > Excuse me, I am not quite familiar with what you said above, can we > also treat 24-bit as 16MB size limitation for kernel size? I am not > quite sure, could you provide more information about it?. > > And I checked "arch/blackfin/kernel/vmlinux.lds.S", for me, in current > case: The memory address on blackfin usually starts from 0, if pc = 0, the pc relative call range is [0xFF00 0000 - 0xFFFFFFFF, 0 - 0x00FF FFFE], it covers L1 space. If the kernel is big than 16M, eg. pc = 0x100 0000, the pc relative call range accordingly is [0x1 - 0x100 0000, 0x100 0000 - 0x 1FF FFFE ], it cann't call to L1 space. > > - init section is the last section of kernel, l1.text is within init > section, and it is in the fixed address. The other contents before > l1.text are dynamic (depend on kernel size). > > - if kernel is too big, the contents before l1.text (the other contents > in .init.text) will override it, so ld reports issues. > > > Thanks. > -- > Chen Gang > > Open, share, and attitude like air, water, and life which God blessed -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/