From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by sourceware.org (Postfix) with ESMTPS id 1CE3E3858D21 for ; Fri, 6 Dec 2024 09:01:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1CE3E3858D21 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=baylibre.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1CE3E3858D21 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::429 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733475691; cv=none; b=X5kr7JDb5JCZ7gUpRoPY0H036odQ4HI8Kh/HxdqPrJ6DENEOIsos2nAyD9oby7ShGkUOsZKhuRTuvw1klP1TsShCircbfRnx13cLpuuxKalUuWm9/706g+m2tendZ2kaHGjEmL9+gI6unZTD9TF6NJq8DRBJLqPVBpgFTcjfsUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733475691; c=relaxed/simple; bh=SdeSPAcCxJPVCmEmxgmPl3gO9JFu2jH77P6X/rmK/dw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=E4HFBx3yO9bxfU3EkVrnvqIqJELqwpz8JfhlnGNSSFd5UIQ74hz7NEkKhlY5KjX4F3uLbdgdW0HPdkbO5TCdP7xC9z6daTu6gqU+EjuNDLRjbK3Vae3kDXV5qyvSml/d3apaxKmt0Afko2pROsxSnNjFxAt00ybp918+kmnkjR0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1CE3E3858D21 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=Li7qRF0/ Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-385de59c1a0so1263998f8f.2 for ; Fri, 06 Dec 2024 01:01:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1733475689; x=1734080489; darn=gcc.gnu.org; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=JYUhMFiCf16F2PS60fneTS58jZiDiFZciyURLpPPlnQ=; b=Li7qRF0/0tm1xXP+xGpm/V2A2spIzvsLHNZe7zwwnWj4S73sCBZWizinkB4tQp2SyT k2ZyvDUqf7LT88+Q57p2/Vt4x5Z+kjHojcpiZhysFDVULfCl0SXZx4mVgHQKjV/9PvL1 PoW8H6d1b/DlBG8KNGa06p9mvq31IrAXyHlVd4cO5tYmy9CZZ0DfK87pyIwYgnENG/t/ wgszkTBK945+QFfm05TLUOTH916nD09bW5yFKS7RYTUsG9OP6hWTypDDATPB2z9vxpwE BMOP7ITgty59nVk6GohoiWxmfdOtWCiXaUG6TJc/LxpkUHzg8754xptXIUOooSiJPwNX egWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733475689; x=1734080489; h=mime-version:message-id:date:user-agent:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JYUhMFiCf16F2PS60fneTS58jZiDiFZciyURLpPPlnQ=; b=c9CbGmBOzEdvsypGW1JLjtg6Kqnzx+GaWUPZscDl46RTsqwa2utyROtfSswYr96GDh m7qaQFhTbc7GixJajcbvvmCQXpRBDUrS3nJT+uJPKzprQsy025fvu5iEWFvpgpc3S2YW 4obl99VxRK75DSOJ/TDFmidPLccW1FGV+2Kom6+pVknkls0JuI6NdpHP3pIY+21KsnrO Vy+0UHNrX9W618OoTBm82MeX9FjqafgTosFixy37aPQKYXxMsuGxG+arUHqt09NRPCcr dAt/uaeLk8weNpj7QZ4S8lKNsRcfRYQo36PsQx1M59XCHXVg5jyHTxWV/Qvh9Zf3fqUa sBbQ== X-Gm-Message-State: AOJu0YxtLpw/RyCpnJgn4VMIS/6Qy3SkqQxrEs/S2qjUm/FF6U94OKER qlTyeHHFan1B8cViT3c9+BRjKYvaD0PQKcS/R4Ng3LcVzRkaHHOIMpbDl0MgngNlw7sKPO4RlTa 3 X-Gm-Gg: ASbGncvvmqZyz+gF/4XWA0PWt9MGJ53LjR6/oaNdHFV6PMhxvBeJwxzzXch1v2OVA36 DlhzM8cAbEIsNRp+IoGcVDPJGstNfe5fNSpvb0vGK+TABiGA6lTxyV9ZZ4cU2BsX9xkrDS2ABlM LZC3CG4PfX7ip1Wh/k+mf8710IYqjcae2kvoOniMe8YWVLj7jNw90hNzoNYFoRSU5rnQ0wV+Pmq 24/InndVhk+fnhZ6W75h84V0aSQsZ0C/g19EThq8T1AXmk+W+/XOdVsOg2PKZQW+A3RsUPofkkp t3MnJVQhoyXoU8OP0FFybzt8LOR/cSWZjj1+5qMLGw4SsFk9UOABVrp2 X-Google-Smtp-Source: AGHT+IELdLjIlVGkGPxkRFLSSdHeVktMI9O86Bi0v/Pn8TB6EgMfz4o93hh7+mVfBFr7TA67Wy6o4w== X-Received: by 2002:a5d:47af:0:b0:385:d852:29ed with SMTP id ffacd0b85a97d-3862b3d0a3fmr1293200f8f.36.1733475689352; Fri, 06 Dec 2024 01:01:29 -0800 (PST) Received: from euler.schwinge.ddns.net (p200300c8b743ca00d37840a5117bb56d.dip0.t-ipconnect.de. [2003:c8:b743:ca00:d378:40a5:117b:b56d]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38621fbbe15sm4034591f8f.92.2024.12.06.01.01.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 01:01:28 -0800 (PST) From: Thomas Schwinge To: gcc-patches@gcc.gnu.org Cc: Tom de Vries Subject: 'gcc/config/nvptx/t-nvptx': Don't use the 'shell' function of 'make' (was: nvptx: Allow '--with-arch' to override the default '-misa' (was: nvptx multilib setup)) In-Reply-To: <874k0lmxrh.fsf@dem-tschwing-1.ger.mentorg.com> References: <87r18jt7uu.fsf@euler.schwinge.homeip.net> <87o801see9.fsf@euler.schwinge.homeip.net> <874k0lmxrh.fsf@dem-tschwing-1.ger.mentorg.com> User-Agent: Notmuch/0.30+8~g47a4bad (https://notmuchmail.org) Emacs/29.4 (x86_64-pc-linux-gnu) Date: Fri, 06 Dec 2024 10:01:22 +0100 Message-ID: <87jzcdmbh9.fsf@euler.schwinge.ddns.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi! I recently learned that the exit status of the command invoked in a 'Makefile' via '$(shell [...])' effectively gets discarded (unless explicitly checking the GNU Make 4.2+ '.SHELLSTATUS' variable or jumping through other hoops). I was under the assumption that an error in a 'shell' function would cause 'make' to error out, similarly to how it does in 'Makefile' rules... I learned this The Hard Way here: On 2022-06-15T23:18:10+0200, I wrote: > --- a/gcc/config/nvptx/t-nvptx > +++ b/gcc/config/nvptx/t-nvptx > +multilib_matches :=3D $(shell $(srcdir)/config/nvptx/gen-multilib-matche= s.sh $(srcdir)/config/nvptx $(multilib_options_isa_default) "$(multilib_opt= ions_isa_list)") When recently working on changing nvptx multilib things, and for that enhancing nvptx' 'gen-multilib-matches.sh', I made an error in there, and then got confusing behavior in that I could still successfully 'make' GCC, and my changes "mostly appeared to work as expected", but not quite. This was due to garbage in 'MULTILIB_MATCHES', caused by a shell syntax error in 'gen-multilib-matches.sh' -- which '$(shell [...])' swept under the table. Pushed to trunk branch commit 490443357668a87e3c322f218873a7649a2552df "'gcc/config/nvptx/t-nvptx': Don't use the 'shell' function of 'make'", see attached. Gr=C3=BC=C3=9Fe Thomas --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-gcc-config-nvptx-t-nvptx-Don-t-use-the-shell-functio.patch >From 490443357668a87e3c322f218873a7649a2552df Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 2 Dec 2024 15:06:58 +0100 Subject: [PATCH] 'gcc/config/nvptx/t-nvptx': Don't use the 'shell' function of 'make' The exit status of the command invoked in a 'Makefile' via '$(shell [...])' effectively gets discarded (unless explicitly checking the GNU Make 4.2+ '.SHELLSTATUS' variable or jumping through other hoops). In order to be able to catch errors in what the 'shell' function invokes, let's make things explicit: similar to how 'gcc/config/avr/t-avr' is doing with 't-multilib-avr', for example. gcc/ * config/nvptx/t-nvptx (multilib_matches): Don't use the 'shell' function of 'make'. * config/nvptx/gen-multilib-matches.sh: Adjust. --- gcc/config/nvptx/gen-multilib-matches.sh | 9 +++++++-- gcc/config/nvptx/t-nvptx | 14 +++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gcc/config/nvptx/gen-multilib-matches.sh b/gcc/config/nvptx/gen-multilib-matches.sh index 44c758c3b1bf..a39baee5cd24 100755 --- a/gcc/config/nvptx/gen-multilib-matches.sh +++ b/gcc/config/nvptx/gen-multilib-matches.sh @@ -33,6 +33,8 @@ sms=$(grep ^NVPTX_SM $nvptx_sm_def | sed 's/.*(//;s/,.*//') # ('misa=sm_SM'; thus not remapped), or has to be remapped to the "next lower" # variant that does get built. +multilib_matches= + # The "lowest" variant has to be built. sm_next_lower=INVALID @@ -50,11 +52,14 @@ for sm in $sms; do else # Output format as required for 'MULTILIB_MATCHES'. if [ x"$sm_map" = x. ]; then - echo ".=misa?sm_$sm" + multilib_matches_sm=".=misa?sm_$sm" else - echo "misa?sm_$sm_map=misa?sm_$sm" + multilib_matches_sm="misa?sm_$sm_map=misa?sm_$sm" fi + multilib_matches="$multilib_matches $multilib_matches_sm" sm_next_lower=$sm_map fi done + +echo "multilib_matches := $multilib_matches" diff --git a/gcc/config/nvptx/t-nvptx b/gcc/config/nvptx/t-nvptx index 9c5cbda00707..6c6a6329f0f8 100644 --- a/gcc/config/nvptx/t-nvptx +++ b/gcc/config/nvptx/t-nvptx @@ -43,12 +43,24 @@ MULTILIB_OPTIONS += mgomp multilib_options_isa_list := $(TM_MULTILIB_CONFIG) multilib_options_isa_default := $(word 1,$(multilib_options_isa_list)) multilib_options_misa_list := $(addprefix misa=,$(multilib_options_isa_list)) + +t-nvptx-gen-multilib-matches: $(srcdir)/config/nvptx/gen-multilib-matches.sh \ + $(srcdir)/config/nvptx/t-nvptx \ + Makefile \ + $(srcdir)/config/nvptx/nvptx-sm.def + $(SHELL) $< \ + $(dir $<) \ + $(multilib_options_isa_default) \ + '$(multilib_options_isa_list)' \ + > $@ + +include t-nvptx-gen-multilib-matches + # Add the requested '-misa' variants as a multilib option ('misa=VAR1/misa=VAR2/misa=VAR3' etc.): empty := space := $(empty) $(empty) MULTILIB_OPTIONS += $(subst $(space),/,$(multilib_options_misa_list)) # ..., and remap '-misa' variants as appropriate: -multilib_matches := $(shell $(srcdir)/config/nvptx/gen-multilib-matches.sh $(srcdir)/config/nvptx $(multilib_options_isa_default) "$(multilib_options_isa_list)") MULTILIB_MATCHES += $(multilib_matches) # ..., and don't actually build what's the default '-misa': MULTILIB_EXCEPTIONS += *misa=$(multilib_options_isa_default)* -- 2.34.1 --=-=-=--