From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by sourceware.org (Postfix) with ESMTPS id B378A382A2E7 for ; Fri, 30 Jun 2023 21:57:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B378A382A2E7 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-lj1-x236.google.com with SMTP id 38308e7fff4ca-2b69a48368fso37696261fa.0 for ; Fri, 30 Jun 2023 14:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; t=1688162261; x=1690754261; 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=1QmwMFKfPfcsLwNEUVIjISeKieF1fgKQWK1Sa4sFZM4=; b=K9CIVbV8oR0Mw5UC/0JFbubXJvY1gsPVzmZCssf1pYOU19HAvOzsV99Ge/eXWikyNQ hnOyd8hUnhXgoiK91KwTA6QLKzDkgYtcxNWQWVmogPkf8hGtxypoJEbF5BigVx03uvtl rZV6+7EP6nDCo7RENpY2aq+jMrbloQQEAJ03TxdPnbr4ReLfozNuU0Lngz+7iol4K2zH bnuKj/gxFEuIIAli1MlSynGZDCiTxwjHZzg5r5O2315kyJjk624ueTj8XM/a0iKA9M/F GFFKTIPLFQB+5SRH++w4obxhXVC/0rCkS5+mE+fAVTRVwbFPjZYDBzcRg4gVxkrQa7Ls QWTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688162261; x=1690754261; 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=1QmwMFKfPfcsLwNEUVIjISeKieF1fgKQWK1Sa4sFZM4=; b=ZfoK55LOrsDiiYhJLE1siDccHE7mitCXGvQMjeVLOlEWiCik6nc87BgXBanelKvXDj Zqun3wZsab/0Wq3670NNLRM0TdUM7Mrtm1t+qFQyQ0Rj1Rxwhns2566vDswnTvQIwS4h k3/s7A+zUzAR5EdYY0va9koGBE8Q/2V/enh3IOCIkhIRMpximCV+aZZVZBrDSYVmfNkZ NBAXKueYrHTBDLKtnuAbKqVWdezxITcL+fexWJavZIiIoWsjXpNWscM/ue1qG9OEcway CMjo8rm2dnmAyd5yJT5U3ppmiJB4DpBRRjBwidCgLRkRUH4e7b/yJPURKPwxSN54eV4Q RjMQ== X-Gm-Message-State: ABy/qLaYipAM0dHNiU0yq/ZvPpeojl+XjxEhqjcF09smharquP5/4rnq PcW9nRAwb0uqNRe2l/+TW/ZRhJ7HdLFyTl+BA7I= X-Google-Smtp-Source: APBJJlFDHsAB9ZraGZL/8yZriOu+1mJWFIwZnZQdaH1VEZVftVgaNvPsYbvRf45RCqL+KUjruABLeg== X-Received: by 2002:a2e:8058:0:b0:2b5:8eae:7848 with SMTP id p24-20020a2e8058000000b002b58eae7848mr3164361ljg.44.1688162260944; Fri, 30 Jun 2023 14:57:40 -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 q7-20020aa7d447000000b005183ce42da9sm7052132edr.18.2023.06.30.14.57.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Jun 2023 14:57:40 -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 v5 09/15] RISC-V: Allow nested implications for extensions Date: Fri, 30 Jun 2023 23:57:19 +0200 Message-ID: <20230630215725.3725876-10-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230630215725.3725876-1-christoph.muellner@vrull.eu> References: <20230630215725.3725876-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 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 426139d4960..ee368a74b4b 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1873,15 +1873,27 @@ 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) { + 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) - && t->check_func (t->implicit_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; + } } + } } /* Check extensions conflicts. */ -- 2.41.0