From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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-Google-Smtp-Source: APBJJlFIKqybNGVvcjpNj7vYZ1WcuWiAJNUzfs+s8i0hIG1VkojZE696lfCEqjTL1NQ23/Wp2BxwRA== 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=20M=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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 List-Id: 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; + } + } } } -- 2.41.0