From patchwork Sat Jul 1 05:20:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christoph_M=C3=BCllner?= X-Patchwork-Id: 114960 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp10842802vqr; Fri, 30 Jun 2023 22:29:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlFmRYObYjOcpgc7wEqJdYh7TkGaq73IHGzh6/3d6C51MIpMEfV/3e7awyQuwXNPwmoCt8lb X-Received: by 2002:a17:906:abd2:b0:98d:f4a7:71d1 with SMTP id kq18-20020a170906abd200b0098df4a771d1mr3417072ejb.8.1688189348477; Fri, 30 Jun 2023 22:29:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688189348; cv=none; d=google.com; s=arc-20160816; b=G+YO2ALmT0z1Nq4DKGsqIWpHrlBZvfQtrl4kvaQxqeN51Y8cT0sMuH8Cv/lC8iH2uR TaAMIQSw3y5q6LiJsoPdQuC9w1aEjAF/OhtIP/2v4CtXClRmnYKe2Y4SMRS34TQmfi15 lgp8icmNf4ThnQGxmXvOpPwTGVe09qLW+8zwXjI64dPDs2VToVSQMFSD6YSDrurFUYW6 hVKwUOxmcqNJafRXAIORV1ZN7R0+JeWD2uzpvN3Vj14h7ohVkLFahTn7HBhXG+Dwetkg GFAiY8HX3GZaZ5wOndFTqb3FhMYBrQicSYj3wkl9TnXsoKb9MoADDsZ0DDty9Bah+FmB BdFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature:dmarc-filter:delivered-to; bh=Z9pSPy4cODFsJcnnIneAZ3OPAS1JKT+9kquyyGGMClE=; fh=Gh389lnGS7+dIjI2+V6ajEvUcK2Xxxss0RzCnvp16eo=; b=REiKmPjXNlKtJC7rCcR3xfLQbSvh7iPzJ8i8fINp55zQ5u/7KFWLPtMAHKUCrjq35U pyTaFzM7xlR/wOzKdt30QpH9WOlSwF8iTUB6WhOL7wWzkOA7ggsye75NCA6iXTZgUrS8 vYEn2o2CPLGxlS1hxF9pU8Oaa4P6XWFfA7MfmSs7p+uXGgw9RbNJn9DDpD0iDzjuXiW5 7cT3k5uEsEl6/gZyF536TSMJBSWpZzbS74UK2soNKo8TdQPPEeE8ZwH/6OI2/AlOJ4Lb +P1TzRtWjcYiRMF9Wqo526KuhRU8aUiiU0m3d0GnS6bM+xq+WBUDhlGeZWAJWucqWH2m wqXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=HhD2jdYO; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id va25-20020a17090711d900b00993325b159csi14966ejb.659.2023.06.30.22.29.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jun 2023 22:29:08 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@vrull.eu header.s=google header.b=HhD2jdYO; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CA3E238708B3 for ; Sat, 1 Jul 2023 05:23:26 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by sourceware.org (Postfix) with ESMTPS id 11D383857705 for ; Sat, 1 Jul 2023 05:21:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 11D383857705 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-51dff848168so387876a12.2 for ; Fri, 30 Jun 2023 22:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; t=1688188877; x=1690780877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z9pSPy4cODFsJcnnIneAZ3OPAS1JKT+9kquyyGGMClE=; b=HhD2jdYOhqpxTZ0BzMnveXL22oMUExRYctMzDW/lckNW1eIR8GK+WAuvHvQHeivNpT zy6GBc7ErW61xHDqtRR4u0i2bstvaQKntGOuENzvjqONZ5HhjfgBro5Tb1lceF8UhbiN wsGX7uF9al6Nsaeu8tMTbQiPg7c7G/lbmhD1Sp2c7zob6++HLzLGRHuGWKj+J7vNKC/e elsMPT6m4URzIlZ3W/dYK9MB5yFDOSpv8t+S4l+4IPZ2k5iW40elo83v2fNuTZlt50oi WIlFP2UZsK5EzlqQn/h6+rb8N9d5POdd9wr2Z5mrtzsJdeoSaLCFnt0I0dgJQLSaS984 M68w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688188877; x=1690780877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z9pSPy4cODFsJcnnIneAZ3OPAS1JKT+9kquyyGGMClE=; b=lyOj1Nl/pyOXx6Cu6T9FRIBDdJul4+mrvHZi6Lk4cx87l1jw2ixtc4BXrIOR1aQ+fS 4CVsjy9p0B4cRO+P0feDIBcw6lXY23wdRUGvYUESZA31gjgtvDZ1C+xuvDA0XAf/8/Tp i3zkAb5AFiuouLDlvsGmujEuq20oZb4pfccOxCxV2iqDVJR3aGI5labzkVowx94ls2PQ gnu1BzSsBE5MpYXU9jIeNS0XfYEeAiftPk+7MFF/mt9edPB6YIhQj+0efeCY6EE2twVW qqEqyd7QUL7HYWdGO+zpZ+gpEIouRmkwQPggmk7oNV3q4hEWJlRaz1E6dLnsGbW4gqVz wCUw== X-Gm-Message-State: AC+VfDzekVHlL26LmfQEsehkfj08UqHznLD7mMmsG3gTQVfri8wVE9fY H8dIetgHEUANd7vIqz6aCnikQZ6TgLa2rKA37Tc= X-Received: by 2002:a17:906:dfd5:b0:992:6656:4053 with SMTP id jt21-20020a170906dfd500b0099266564053mr3047876ejc.15.1688188877542; Fri, 30 Jun 2023 22:21:17 -0700 (PDT) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id t14-20020a1709063e4e00b0098d25cbb899sm8784221eji.41.2023.06.30.22.21.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jun 2023 22:21:17 -0700 (PDT) From: Christoph Muellner To: binutils@sourceware.org, Nathan Huckleberry , nhuck@pmull.org, Jeff Law , Nelson Chu , Andrew Waterman , Palmer Dabbelt , Jim Wilson , Philipp Tomsich Cc: =?utf-8?q?Christoph_M=C3=BCllner?= Subject: [PATCH v6 09/15] RISC-V: Allow nested implications for extensions Date: Sat, 1 Jul 2023 07:20:58 +0200 Message-ID: <20230701052104.4018352-10-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230701052104.4018352-1-christoph.muellner@vrull.eu> References: <20230701052104.4018352-1-christoph.muellner@vrull.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_MANYTO, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770194834641776061?= X-GMAIL-MSGID: =?utf-8?q?1770194834641776061?= From: Nathan Huckleberry via Binutils Certain extensions require two levels of implications. For example, zvkng implies zvkn and zvkn implies zvkned. Enabling zvkng should also enable zvkned. This patch fixes this behavior. bfd/ChangeLog: * elfxx-riscv.c (riscv_parse_add_implicit_subsets): Allow nested implications for extensions. Signed-off-by: Nathan Huckleberry Signed-off-by: Christoph Müllner --- bfd/elfxx-riscv.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 426139d4960..f7fb7d88d76 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1873,14 +1873,29 @@ static void riscv_parse_add_implicit_subsets (riscv_parse_subset_t *rps) { struct riscv_implicit_subset *t = riscv_implicit_subsets; - for (; t->subset_name; t++) + bool finished = false; + while (!finished) { - riscv_subset_t *subset = NULL; - if (riscv_lookup_subset (rps->subset_list, t->subset_name, &subset) - && t->check_func (t->implicit_name, subset)) - riscv_parse_add_subset (rps, t->implicit_name, - RISCV_UNKNOWN_VERSION, - RISCV_UNKNOWN_VERSION, true); + finished = true; + for (; t->subset_name; t++) + { + riscv_subset_t *subset = NULL; + riscv_subset_t *implicit_subset = NULL; + if (riscv_lookup_subset (rps->subset_list, t->subset_name, &subset) + && !riscv_lookup_subset (rps->subset_list, t->implicit_name, + &implicit_subset) + && t->check_func (t->implicit_name, subset)) + { + riscv_parse_add_subset (rps, t->implicit_name, + RISCV_UNKNOWN_VERSION, + RISCV_UNKNOWN_VERSION, true); + + /* Restart the loop and pick up any new implications. */ + finished = false; + t = riscv_implicit_subsets; + break; + } + } } }