Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752738AbdFVO3i (ORCPT ); Thu, 22 Jun 2017 10:29:38 -0400 Received: from shards.monkeyblade.net ([184.105.139.130]:34966 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752523AbdFVO3g (ORCPT ); Thu, 22 Jun 2017 10:29:36 -0400 Date: Thu, 22 Jun 2017 10:29:23 -0400 (EDT) Message-Id: <20170622.102923.1704137848607888832.davem@davemloft.net> To: npiggin@gmail.com Cc: sfr@canb.auug.org.au, linux-next@vger.kernel.org, linux-kernel@vger.kernel.org, yamada.masahiro@socionext.com, amodra@gmail.com Subject: Re: linux-next: build failure after merge of most trees From: David Miller In-Reply-To: <20170622.101306.2121302610489503804.davem@davemloft.net> References: <20170622152441.3704b3d9@canb.auug.org.au> <20170622184116.0ebaabd9@roar.ozlabs.ibm.com> <20170622.101306.2121302610489503804.davem@davemloft.net> X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Thu, 22 Jun 2017 06:47:41 -0700 (PDT) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1223 Lines: 34 From: David Miller Date: Thu, 22 Jun 2017 10:13:06 -0400 (EDT) > From: Nicholas Piggin > Date: Thu, 22 Jun 2017 18:41:16 +1000 > >> Is there any way for the linker to place the inputs to avoid unresolvable >> relocations where possible? > > I don't think so. > >> A way to work around this is to make arch/sparc/lib/hweight.o an obj-y >> rather than lib-y. That's a hack because it just serves to move the >> input location, but not really any more of a hack than the current code >> that also only works because of input locations... > > I could adjust those branches in the sparc code into indirect calls > but it's going to perform a bit poorly on older cpus. > > Something like this: I just wanted to mention something in passing. On sparc64 we patch the first two instructions of memcpy, memset, bzero, etc. in order to vector them to cpu optimized routines. And we use the same kind of branch there. Now because the branches are to routines in the same directory it should never exceed the relocation limits. However, if the relocation limits were exceeded in this case, the build would still succeed and the kernel would be simply broken and not bootup properly.