Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1004738rdb; Tue, 19 Sep 2023 17:56:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGT1IHEdhUewIHZD9sI8el7AdXww4Td2Jqq1hImcCX49m43lr423IPOpSe7L0Kco449KepY X-Received: by 2002:a17:902:ecc8:b0:1c3:432f:9f69 with SMTP id a8-20020a170902ecc800b001c3432f9f69mr1758650plh.23.1695171401542; Tue, 19 Sep 2023 17:56:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695171401; cv=none; d=google.com; s=arc-20160816; b=egEuf624Xkb8x9E0ufL32JNGLVZtOcoeVTWBs97oH8tpGLCrftkQYX/YPravZh0Vxb 16FUO+WrXy5VmqmTNCJ9dLY6NToGBUkrC9WksHl57adtr26Kgw3zm1mkOdpGt3pZLRde X1fpI1UHgcnTajUXwlZRgCvIZlNzuqUgb2+eJ+ik1Woes8bsv12qXfvFVgb6rAe6u52U Te6nw61iuJaRoLEJE/41fGGOjeW1SDrhE9V9pUFIyLPi4MSRO4CliOmFQ02dKUBy1nO+ OeqqUwLF1tjEFb6PlW1WAJXBB84BmzBtqkmis2ydqr5JkhApW1oCqg7fY/neXE28Elbq 8/BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=QiKc36SyKHESSsQhenaXrpw2Mp7z+R70C2lZ6X9q9Pg=; fh=LTgB4UUZOaMn+Ucc0I1O5ymEoSBFzf/51+XtJNl4QhU=; b=YtNzjVvojVUqG0Ub10kKO23dNUA1Z/82DY5yRBey+x/93VWqj3EmPGX3MHPmnugliQ fMi9z0KUaN0T+ejnlGVS4kI/weoZ198xVgZndXRMG+k9AAcMSZlWbuQtII/LfpxfBBQT fQ9VZEktIsqwOVDxiO64F63SYCOtpeQk2G7skX1SzaxTO/ENXY7iw+eY1gTRdN7AYMD1 Y7msY/ktu9/f0jN2gq5NlUHtgy0RiHaELJnMKYjShMKfcVdYLF9k/mbCx4aD6bYxn4kw XFVJpvOPQPyVHKdc6+TOp1NMYNU5NlON/zvr7eBJB3gnQ60yF16+HX+1sIdAlysv0xER LLGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="c/eClF5e"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id lk15-20020a17090308cf00b001bda1941a8esi10117366plb.582.2023.09.19.17.56.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Sep 2023 17:56:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="c/eClF5e"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id B1232809926E; Tue, 19 Sep 2023 12:44:32 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232943AbjISToe (ORCPT + 99 others); Tue, 19 Sep 2023 15:44:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232827AbjISToc (ORCPT ); Tue, 19 Sep 2023 15:44:32 -0400 Received: from mail-ua1-x936.google.com (mail-ua1-x936.google.com [IPv6:2607:f8b0:4864:20::936]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E98B89D for ; Tue, 19 Sep 2023 12:44:26 -0700 (PDT) Received: by mail-ua1-x936.google.com with SMTP id a1e0cc1a2514c-7a512434bc9so117774241.0 for ; Tue, 19 Sep 2023 12:44:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695152666; x=1695757466; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=QiKc36SyKHESSsQhenaXrpw2Mp7z+R70C2lZ6X9q9Pg=; b=c/eClF5eozlmFoLiWQEOaPfhBFu/BJGgBqJAjp6ENFSQHogFLXbBxMFIOaBvsFXutQ YgN1iwYlLg1xGqGkN4BQE45OBUjpZflQvqBGNf1O+7O+35R51Sx/Sszv3pqBwWOcKmfd nwYad5nsg6GcA/O/z6FY3/iEpqoYnpcvGKx1yB3IkWNoSV4aVF9/QYU4XnbQiQDP/Z81 cRRWnaWmR/CySN3TcfyaZdCqiFuOyfYjgCQe7TTWJcfbby6PD+rgjgXVdncMhK/MM8nn VWbS7bwQfyq7pAbSMlzmD2k0y4ZiXzUVBBX6Kcrhi5lKrNe7lRuwVo1bfiUi0HqXL2Qm 5iyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695152666; x=1695757466; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QiKc36SyKHESSsQhenaXrpw2Mp7z+R70C2lZ6X9q9Pg=; b=q6yH7sVMGreIDrRzfgGZpb3FGvrpDluxzub6fkuffJQonZ1p9pacGpsQ9ddX5zDFRt PehQxH+23P0GMpbWZO4kaoVyIPnCiV6wfIqza2PH02IqZj5PaJKMMgJ3ZhhmGySRVauA hVC1E7wTJVqNM81VeWe9DXVN7f41rr7okb39lmt4PrZ01Fb4wYyudmgf9v3pNVrXHV4T NaGleCHrcZCTYXCCzr/Z8SLJ6UqpjlMyJ2ZE+IXUCT6h6ByLncvEmQLutLjLQYrWoUsQ hjcnqpxMm/g9HGHHrShRsj1Zmr18eGNWOA6zGRH9ocumrAwt8J46HVqCcSCs5yCNhsUt kxeg== X-Gm-Message-State: AOJu0Yx1tBR2+ZNMWZDqrTS2x/s+/x9qgdIQEDla3tTsIIYT8tVNExIm xQW3qPAQZ4UqawR8aISOxuRf9haqHBv99YLb50hf0w== X-Received: by 2002:a05:6102:1522:b0:452:6834:b8f6 with SMTP id f34-20020a056102152200b004526834b8f6mr2060855vsv.3.1695152665688; Tue, 19 Sep 2023 12:44:25 -0700 (PDT) MIME-Version: 1.0 References: <20230918234412.363087-2-mmaurer@google.com> In-Reply-To: <20230918234412.363087-2-mmaurer@google.com> From: Nick Desaulniers Date: Tue, 19 Sep 2023 12:44:14 -0700 Message-ID: Subject: Re: [PATCH v2] rust: Respect HOSTCC when linking for host To: Matthew Maurer Cc: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Masahiro Yamada , Boqun Feng , Gary Guo , =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Nathan Chancellor , Nicolas Schier , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Tue, 19 Sep 2023 12:44:33 -0700 (PDT) On Mon, Sep 18, 2023 at 4:44=E2=80=AFPM Matthew Maurer = wrote: > > Currently, rustc defaults to invoking `cc`, even if `HOSTCC` is defined, > resulting in build failures in hermetic environments where `cc` does not > exist. This includes both hostprogs and proc-macros. > > Since we are setting the linker to `HOSTCC`, we set the linker flavor to > `gcc` explicitly. > > Signed-off-by: Matthew Maurer > --- > > Updated the patch to reflect Nick's comment that KBUILD_HOSTLDFLAGS > should be respected as well. > > I did not switch it to use HOSTLD for two reasons: > * That variable is not globally defined - it is only available in two > subdirectories of tools/ > * C host scripts are linked by HOSTCC as well, even when linking a > collection of object files. It *prints* HOSTLD, but invokes HOSTCC. > See scripts/Makefile.host cmd_host-cmulti for an example. Sure, that makes sense to me, thanks for pointing that out. > > rust/Makefile | 4 ++++ > scripts/Makefile.host | 4 ++++ > 2 files changed, 8 insertions(+) > > diff --git a/rust/Makefile b/rust/Makefile > index 87958e864be0..b60b7eb8c5a0 100644 > --- a/rust/Makefile > +++ b/rust/Makefile > @@ -380,9 +380,13 @@ $(obj)/exports_bindings_generated.h: $(obj)/bindings= .o FORCE > $(obj)/exports_kernel_generated.h: $(obj)/kernel.o FORCE > $(call if_changed,exports) > > +KBUILD_HOSTLDFLAGS_SQ =3D '$(subst ','\'',$(KBUILD_HOSTLDFLAGS))' I don't think we need to do this kind of escaping. If a linker flag is passed to the linker directly as the driver has spaces such as `-z relro`, if it is instead passed to the compiler as the driver will not contain spaces (`-Wl,-z,relro`). As such, I don't think we need this escaping (famous last words). Mind submitting a v3 without it? > + > quiet_cmd_rustc_procmacro =3D $(RUSTC_OR_CLIPPY_QUIET) P $@ > cmd_rustc_procmacro =3D \ > $(RUSTC_OR_CLIPPY) $(rust_common_flags) \ > + -Clinker-flavor=3Dgcc -Clinker=3D$(HOSTCC) \ > + -Clink-args=3D$(KBUILD_HOSTLDFLAGS_SQ) \ > --emit=3Ddep-info=3D$(depfile) --emit=3Dlink=3D$@ --exter= n proc_macro \ > --crate-type proc-macro \ > --crate-name $(patsubst lib%.so,%,$(notdir $@)) $< > diff --git a/scripts/Makefile.host b/scripts/Makefile.host > index 8f7f842b54f9..dc0410cae5ca 100644 > --- a/scripts/Makefile.host > +++ b/scripts/Makefile.host > @@ -87,10 +87,14 @@ hostcxx_flags =3D -Wp,-MMD,$(depfile) \ > $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \ > $(HOSTCXXFLAGS_$(target-stem).o) > > +KBUILD_HOSTLDFLAGS_SQ =3D '$(subst ','\'',$(KBUILD_HOSTLDFLAGS))' > + > # `--out-dir` is required to avoid temporaries being created by `rustc` = in the > # current working directory, which may be not accessible in the out-of-t= ree > # modules case. > hostrust_flags =3D --out-dir $(dir $@) --emit=3Ddep-info=3D$(depfile) \ > + -Clinker-flavor=3Dgcc -Clinker=3D$(HOSTCC) \ > + -Clink-args=3D$(KBUILD_HOSTLDFLAGS_SQ) \ > $(KBUILD_HOSTRUSTFLAGS) $(HOST_EXTRARUSTFLAGS) \ > $(HOSTRUSTFLAGS_$(target-stem)) > > -- > 2.42.0.459.ge4e396fd5e-goog > --=20 Thanks, ~Nick Desaulniers