Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp9814945imu; Wed, 5 Dec 2018 10:42:09 -0800 (PST) X-Google-Smtp-Source: AFSGD/WZFQwMsiJtIqr7vP1NKl4QxBNcQN0+u7I8n21gZhAIqfvlFbTgk0euQkf+4o+sjjzVc6ID X-Received: by 2002:a17:902:6bc4:: with SMTP id m4mr24103099plt.93.1544035329539; Wed, 05 Dec 2018 10:42:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544035329; cv=none; d=google.com; s=arc-20160816; b=g25m5q9ZLaKm6anw7ibezY07lhXP8TD6j/FgMQwba+1XecmUczheocwCmVtaIGUMeE hmAbt6/xEbuMhDlHRMCe24aTQDszmuEaWmz0f1Cz+NZbiHDnJOK9fcgDNGsBR4Wp1+mC sYI0VPoEZCKBCgFCK1TR2dIvtBOcMIWHnbajeXH3q6QgIMoH+QRWRd6qkPtdlGDTBFBk V1ksgYxnLh7mL2UvIjqb5g18jz229SjDCO2Hwka5W6eTAXk79h239MHMgW+/sQUsrE9A M153LhGfu5Op05GkuGJ6BfwnDLDrLZpP0AD7X3iLdQxj0V0WbkJVWLV7qtmxVJBWoYrb 4qvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=KEwf4cb/XWVkxZOrt56/52D/0gRHqwxlGcYV+PdLeLI=; b=Z4QuhwpvHHVXM2epG5ojQKPrVr6eI9E2ViIt9VMCOBW51Fw7+vOJ83lMvTbaUj5k+Y MqI5nVIHQQo7KPIMkZaZ7c8Yo1j7UMiTMUWWUTTYHSqKBPrRHcGN4/VCr2vyMHUiwqOc dBt+uU2GVj4LerTdXiJyZncHNaChdjBaN11IXNP020mckkZyn0ZrE/gmtx9BBdQEtFjp xkVSeW7G2u4Ayx57uiO+rQh2MdLz2z1gamrY+YqkaPW3JZZFr6GZXa47Xf8N6pAMQuY3 IMJXE9lcfy2oajU7LWv/dP8o6U5oriJ0SsmROhziayFhl0g4oGf570EMUxyuTON5OPpo Vb/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ZLbOQiiR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r7si20334263pfb.237.2018.12.05.10.41.54; Wed, 05 Dec 2018 10:42:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ZLbOQiiR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727989AbeLESkn (ORCPT + 99 others); Wed, 5 Dec 2018 13:40:43 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:35650 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727349AbeLESkn (ORCPT ); Wed, 5 Dec 2018 13:40:43 -0500 Received: by mail-pl1-f194.google.com with SMTP id p8so10490890plo.2 for ; Wed, 05 Dec 2018 10:40:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KEwf4cb/XWVkxZOrt56/52D/0gRHqwxlGcYV+PdLeLI=; b=ZLbOQiiRHw6p/Iqudp6ZDAL5mqP2uYUIKDpOYeBu/JMl195R0sHwOzefc9htKk8qvB I9Ts/+oYKr0tm1ML4Q/SjDI9bGJn6rMUyZdm+/gCM/npJ8qHY7Tor2WZZkfSwPuHsTK7 lU3AsLE/DOybpWyfPCmUzhCUfOTzeKtFsTW3W8oA3Nmy0IWK7duV/45aPbx+swYhxwMZ zPo8kuiKj3OLXdHPLpz1s5k88wKuduLU26PbZntfWLjIkyr8AJmvM5dDmWi+I/QQXbgH zP8B8K8quOGyoCoLZoBLeRwmrC8KBJypFoRTVRbblgUMoAHqjfTzRyG2R/OOPfTqTHqe KeBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KEwf4cb/XWVkxZOrt56/52D/0gRHqwxlGcYV+PdLeLI=; b=uVSPYODWKaLZDUbRgOQ+GiXs3GFsAm0NiV/UrR4+/vmfYzGxFwdo7gdlqzeHijMYcf //QkZyKDS/V6JEQpOy/cCP91fNn1CL4pW/dKtPPUbiCrmSx4aZDEFeaV9turRx2G5gsT zmbP15VmArxjtwj3twGl4GeBotqKjDcFp7I/8Jk67X5p4+o+MOcPE0E/93bBGgFXTzrd ZV9hPw19+crXjkAK96ylOr2J1znrWd/195l1Ir4MjSfFdwQFOcI+9Ljg8yzD5juZwLYt CO80+RFdRE0C4YOC11FRSKxgy/co6KzfitHwoSI+3SUUCD/J4zu6grL87qX4JeJi9R0P JMpg== X-Gm-Message-State: AA+aEWY638wtBhm/yV6uKPPqPzd8wxo4qmxeDQbHy81rZ+N0LNteOBE0 X/+ugL7K4VdZwF0RXtKTmu6Q8K+0cl4iM/XqObhQBt7D X-Received: by 2002:a17:902:4464:: with SMTP id k91mr25655609pld.13.1544035241436; Wed, 05 Dec 2018 10:40:41 -0800 (PST) MIME-Version: 1.0 References: <20181205014213.943-1-natechancellor@gmail.com> <20181205014213.943-2-natechancellor@gmail.com> <20181205080645.GA11936@flashbox> <20181205183606.GA7274@flashbox> In-Reply-To: <20181205183606.GA7274@flashbox> From: Nick Desaulniers Date: Wed, 5 Dec 2018 10:40:30 -0800 Message-ID: Subject: Re: [PATCH 2/2] ARM: Wrap '--pic-veneer' with ld-option To: Nathan Chancellor Cc: Ard Biesheuvel , Arnd Bergmann , linux@armlinux.org.uk, Linux ARM , LKML , Stefan Agner , Nicolas Pitre Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 5, 2018 at 10:36 AM Nathan Chancellor wrote: > > On Wed, Dec 05, 2018 at 09:09:56AM +0100, Ard Biesheuvel wrote: > > (+ Arnd) > > > > On Wed, 5 Dec 2018 at 09:06, Nathan Chancellor wrote: > > > > > > On Wed, Dec 05, 2018 at 08:37:05AM +0100, Ard Biesheuvel wrote: > > > > On Wed, 5 Dec 2018 at 02:42, Nathan Chancellor wrote: > > > > > > > > > > This flag is not supported by lld: > > > > > > > > > > ld.lld: error: unknown argument: --pic-veneer > > > > > > > > > > Signed-off-by: Nathan Chancellor > > > > > > > > Hi Nate, > > > > > > > > Does this mean ld.lld is guaranteed to produce position independent > > > > veneers if you build kernels that are bigger than the typical range of > > > > a relative branch? > > > > > > > > > > Hi Ard, > > > > > > Honestly, I'm not quite sure. I saw your commit that introduced this > > > flag and I wasn't quite sure what to make of it for lld. What > > > configuration would I use to verify and what would I check for? > > > > > > > Try building allyesconfig, and check the resulting binary for veneers > > (which have 'veneer' in the symbol name, at least when ld.bfd emits > > them). These veneers should not take the [virtual] address of the > > branch target directly, but take a PC relative offset (as in the > > example in the commit log of that patch you are referring to) > > > > Alright, compiling with allyesconfig is a little rough at the moment > (bug reports I will file in due time) but I was able to do it. Here's > the disassembly specifically for the functions you had in your commit, > my assembly knowledge is pretty much non-existent unfortunately so I am > not sure what to make of it (it doesn't look like there is a virtual > address for pc in that mix?). I am happy to provide any more information > that is needed. Nathan, Thanks for getting a build working! I think Ard is looking for the presence of symbols with `veneer` in the name. Something like `llvm-objdump -t vmlinux | grep veneer` or `llvm-nm vmlinux | grep veneer` should tell you if such symbols exist. If they do, Ard was then looking for the disassembly of those labels (like you provided for __enable_mmu/__turn_mmu_on). > > c03030cc <__enable_mmu>: > c03030cc: e3c00002 bic r0, r0, #2 > c03030d0: e3c00b02 bic r0, r0, #2048 ; 0x800 > c03030d4: e3c00a01 bic r0, r0, #4096 ; 0x1000 > c03030d8: e3a05051 mov r5, #81 ; 0x51 > c03030dc: ee035f10 mcr 15, 0, r5, cr3, cr0, {0} > c03030e0: ee024f10 mcr 15, 0, r4, cr2, cr0, {0} > c03030e4: eafff3c5 b c0300000 <__turn_mmu_on> > c03030e8: e320f000 nop {0} > c03030ec: e320f000 nop {0} > c03030f0: e320f000 nop {0} > c03030f4: e320f000 nop {0} > c03030f8: e320f000 nop {0} > c03030fc: e320f000 nop {0} > > c0300000 <__turn_mmu_on>: > c0300000: e1a00000 nop ; (mov r0, r0) > c0300004: ee070f95 mcr 15, 0, r0, cr7, cr5, {4} > c0300008: ee010f10 mcr 15, 0, r0, cr1, cr0, {0} > c030000c: ee103f10 mrc 15, 0, r3, cr0, cr0, {0} > c0300010: ee070f95 mcr 15, 0, r0, cr7, cr5, {4} > c0300014: e1a03003 mov r3, r3 > c0300018: e1a0300d mov r3, sp > c030001c: e1a0f003 mov pc, r3 > > Thanks, > Nathan > > > > Additionally, I have filed an LLVM bug for the lld developers to > > > check and see if this is a flag they should support: > > > > > > https://bugs.llvm.org/show_bug.cgi?id=39886 > > > > > > Thanks for the quick reply, > > > Nathan > > > > > > > > --- > > > > > arch/arm/Makefile | 2 +- > > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > > > diff --git a/arch/arm/Makefile b/arch/arm/Makefile > > > > > index e2a0baf36766..4fab2aa29570 100644 > > > > > --- a/arch/arm/Makefile > > > > > +++ b/arch/arm/Makefile > > > > > @@ -10,7 +10,7 @@ > > > > > # > > > > > # Copyright (C) 1995-2001 by Russell King > > > > > > > > > > -LDFLAGS_vmlinux := --no-undefined -X --pic-veneer > > > > > +LDFLAGS_vmlinux := --no-undefined -X $(call ld-option,--pic-veneer) > > > > > ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) > > > > > LDFLAGS_vmlinux += --be8 > > > > > KBUILD_LDFLAGS_MODULE += --be8 > > > > > -- > > > > > 2.20.0.rc1 > > > > > -- Thanks, ~Nick Desaulniers