Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759076AbcLAQfY (ORCPT ); Thu, 1 Dec 2016 11:35:24 -0500 Received: from mail.kernel.org ([198.145.29.136]:33426 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757473AbcLAQfW (ORCPT ); Thu, 1 Dec 2016 11:35:22 -0500 MIME-Version: 1.0 In-Reply-To: <20161201162039.602da20a@roar.ozlabs.ibm.com> References: <20161130013349.GN1402@wotan.suse.de> <20161130140947.3ea27d9e@roar.ozlabs.ibm.com> <20161130173816.GP1402@wotan.suse.de> <20161201135146.295868f0@roar.ozlabs.ibm.com> <20161201160430.6e95710a@roar.ozlabs.ibm.com> <20161201162039.602da20a@roar.ozlabs.ibm.com> From: "Luis R. Rodriguez" Date: Thu, 1 Dec 2016 08:34:56 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: linker-tables v5 testing To: Nicholas Piggin Cc: "H. Peter Anvin" , Michael Matz , Arnd Bergmann , Josh Poimboeuf , Kees Cook , Guenter Roeck , Masami Hiramatsu , "linux-kernel@vger.kernel.org" , Fengguang Wu , Adrian Hunter , David Ahern , Jiri Olsa , Namhyung Kim , Wang Nan , Arnaldo Carvalho de Melo , Borislav Petkov , Joerg Roedel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1987 Lines: 45 On Wed, Nov 30, 2016 at 9:20 PM, Nicholas Piggin wrote: > On Thu, 1 Dec 2016 16:04:30 +1100 > Nicholas Piggin wrote: > >> On Wed, 30 Nov 2016 19:15:27 -0800 >> "Luis R. Rodriguez" wrote: >> >> > On Wed, Nov 30, 2016 at 6:51 PM, Nicholas Piggin wrote: >> > > On Wed, 30 Nov 2016 18:38:16 +0100 >> > > "Luis R. Rodriguez" wrote: >> > > >> > >> On Wed, Nov 30, 2016 at 02:09:47PM +1100, Nicholas Piggin wrote: >> >> > >> What is wrong with that ? Separating linker table and section ranges is >> > > >> > > It's not that you separate those, of course you need that. It's that >> > > you also separate other sections from the input section descriptions: >> > > >> > > - *(.text.hot .text .text.fixup .text.unlikely) \ >> > > + *(.text.hot .text) \ >> > > + *(SORT(.text.rng.*)) \ >> > > + *(.text.fixup .text.unlikely) \ > > Ahh, you're doing it to avoid clash with compiler generated sections. Nope, its for two reasons: 1) To be able to construct arrays without modifying the linker script we had to get crafty, and opted in for the trick of picking two arbitrary delimiters for use of section start, and section end, namely the tilde character ("~") and the empty string (""), and then stuffing anything in between. For this to work properly we must SORT() these specially crafted sections as well. 2) Because I don't want to regress .text if SORT()'ing it breaks something. In theory it should not but I rather be careful. > The usual way to cope with that seems to be to use two dots for your name. > .text..rng.* I have been wondering why people started doing that, it was not clear nor documented anywhere. So no, it was not my original motivation, but if it helps, it will be good to document this as well. Luis