Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp10456315imu; Sun, 30 Dec 2018 23:23:45 -0800 (PST) X-Google-Smtp-Source: ALg8bN5gKIbqc8mDoBLKuYqgnquNZKzerHgyRZXN9cFqpdH7URxgqsvyViynhA5mGx8Q+5+90U9x X-Received: by 2002:a62:5444:: with SMTP id i65mr38391032pfb.193.1546241025424; Sun, 30 Dec 2018 23:23:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546241025; cv=none; d=google.com; s=arc-20160816; b=Pc4kvL32zW7rlyfCG+P/kABpu+EflIIW6VlBAu38Az11Hq1kI4tY4UALyeAtwh4NN5 dd9WF3fqOM3H4OrTBIEeMmj7J83dzNsGcBSFerGbXnlZalndRokAhSPQ9UoHRdTwdnTo LHs3T9JksthidAUhaayM/45RvMQr3AHwB3R4TZuEA6btM7SWoU30MpwrBt+Gglg0JNKd 39jdfXnqtYXeVhq93YdaRQYK6ml0lhCXMY2+tkNWYhQBF6wvps68J+1/DKaGoES0LBXg l+06wIUvedGlNULkU2gjWIu/s6QOldDteWAcn+xX2H8K5/qvsb0Qcn4mSpFtzqRYoUzJ xtLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=WheFQSYlbQ5F6ttBFaARgoYE4CP4dG57lpk67gyzyFg=; b=kw6F8p3nMzZgfJe4nmmphcbbfb2NdCqmCWDV4SnfKWTToDolX9ZRiZINRAJmvBbrjA j/e4jm+yerW2gk0R2mwYESo9p4/B7t68Hgq/Rw4sL85XQ0MGijdQIMrWRk/fC7KbrQCS ybdasSKdg62I1WCZ9z1b1Lw2aRmTZZhJZjPa4YqqZ74DnZOobJT4hZHGOSSwqsmCwHgf aeMXKb8/PGWHmg/8Pk9bFgfCNxTDYyQX7tD/AUHw0C268lgUOJ1BfARQbD7sU2I3t7gF D7ZhN93v7biwK8Lp/GzZ74bwGYS/IO/vsBQpQ5yj3ehmU8ZOOfHFu08CgR5bctcDRNnO H4dQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a20si14437571pfh.163.2018.12.30.23.23.29; Sun, 30 Dec 2018 23:23:45 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727146AbeLaHU5 (ORCPT + 99 others); Mon, 31 Dec 2018 02:20:57 -0500 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:41029 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727009AbeLaHU4 (ORCPT ); Mon, 31 Dec 2018 02:20:56 -0500 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Sun, 30 Dec 2018 23:20:33 -0800 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id 9B41240BCA; Sun, 30 Dec 2018 23:20:35 -0800 (PST) From: Nadav Amit To: Ingo Molnar , Andy Lutomirski , Peter Zijlstra , Josh Poimboeuf , Edward Cree CC: "H . Peter Anvin" , Thomas Gleixner , LKML , Nadav Amit , X86 ML , Paolo Abeni , Borislav Petkov , David Woodhouse , Nadav Amit Subject: [RFC v2 2/6] objtool: ignore instructions Date: Sun, 30 Dec 2018 23:21:08 -0800 Message-ID: <20181231072112.21051-3-namit@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181231072112.21051-1-namit@vmware.com> References: <20181231072112.21051-1-namit@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.vmware.com: namit@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In certain cases there is a need to suppress objtool warnings on specific instructions. Provide an interface to achieve this goal. Signed-off-by: Nadav Amit --- tools/objtool/check.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 0414a0d52262..c890d714fb73 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -431,10 +431,11 @@ static int add_dead_ends(struct objtool_file *file) /* * Warnings shouldn't be reported for ignored functions. */ -static void add_ignores(struct objtool_file *file) +static int add_ignores(struct objtool_file *file) { struct instruction *insn; struct section *sec; + struct rela *rela; struct symbol *func; for_each_sec(file, sec) { @@ -449,6 +450,20 @@ static void add_ignores(struct objtool_file *file) insn->ignore = true; } } + + sec = find_section_by_name(file->elf, ".rela.discard.ignore"); + if (!sec) + return 0; + + list_for_each_entry(rela, &sec->rela_list, list) { + insn = find_insn(file, rela->sym->sec, rela->addend); + if (!insn) { + WARN("bad .discard.ignore entry"); + return -1; + } + insn->ignore = true; + } + return 0; } /* @@ -1237,7 +1252,9 @@ static int decode_sections(struct objtool_file *file) if (ret) return ret; - add_ignores(file); + ret = add_ignores(file); + if (ret) + return ret; ret = add_nospec_ignores(file); if (ret) -- 2.17.1