Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp345314rdb; Mon, 18 Sep 2023 18:00:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IERcoS2YgKRQlov67VBv2hLiwb0xee+CU2avrqiJiEGrwAWpzTTuS37ikd9h0LsLir2jvC8 X-Received: by 2002:a05:6a20:4304:b0:134:30a8:9df5 with SMTP id h4-20020a056a20430400b0013430a89df5mr13607047pzk.43.1695085252034; Mon, 18 Sep 2023 18:00:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695085252; cv=none; d=google.com; s=arc-20160816; b=T3OfnaJ6dN1n97SjYvVFv7ijfteb4ScAenhB7WWb5QOThxtLaYGZsWOGnov39d1pYw Qx3OJhhrFt2NXREYpYMB5kuyIYwCmLrf2ycKzne54DiGTySTeC9vpsQkjh7QDdzD/mgb Yvd9z/IotNXy1LrfHTN5GQgFPD4rdN4y+EgjGKrHfnRzz5NZwGyewXvm3yhrPMC9U9O7 3UA33vyMUdz4tVRs0Wnr/iFTaR0gBsDj/OfbnowcNV5reti88iV/ObUSbUbr3HYTCrHE 4P9pgDT2LtRUDiEfoXjCVKHBI2l9aLJ/K5zz25+f5oLfSC8PdNmY9hILudOvoCaI6d6F vxqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:mime-version:date :dkim-signature; bh=c7Ja0i1IcPpF/fnQpaRtPSeE28AosoZQ6Vg1JwyxElA=; fh=BiRaoiZOuCBl9aVvgbMWX++ubMpiO+22FRY+ngyKD9Q=; b=taW/0rCYMzFaVnpZVKC4tOmjipqg9FwnALVBygjFJ0ab/93erx7F5Uq8WWvzvq4DI8 z6lKq6h2/0rIeDTjLMbNQis6G5NtjjGPNHA3gxhEOT8/FH0TZ/+HSyDHx03dHYmDzP5h kwbcIq+YYkWKTLULWdQ9ZJmG1JsyclRRiF9pGRIgn/IvMPAFX67kTIoJe46AfXW4cgD4 r+8UmCS/jmKLLAmQm/2mg3DXGsiXB65rzgQCj6j+2+uKA8GJOJjUU216N52HJ6MRIKm7 K29k5IIJ01TOW6kH6KOPyhwCB0F/dDMzf0LMwZ23RB4sOFANAJNJ7EH4eiekK31sY6Tv myMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="p/IVJrdh"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id o9-20020a056a001bc900b0068e4704fd5bsi8821538pfw.346.2023.09.18.18.00.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 18:00:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="p/IVJrdh"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 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 agentk.vger.email (Postfix) with ESMTP id CF34E81BC2ED; Mon, 18 Sep 2023 16:44:40 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230256AbjIRXoh (ORCPT + 99 others); Mon, 18 Sep 2023 19:44:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230154AbjIRXoe (ORCPT ); Mon, 18 Sep 2023 19:44:34 -0400 Received: from mail-ot1-x349.google.com (mail-ot1-x349.google.com [IPv6:2607:f8b0:4864:20::349]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44255AD for ; Mon, 18 Sep 2023 16:44:28 -0700 (PDT) Received: by mail-ot1-x349.google.com with SMTP id 46e09a7af769-6bdcdde1df9so7251758a34.2 for ; Mon, 18 Sep 2023 16:44:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695080667; x=1695685467; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=c7Ja0i1IcPpF/fnQpaRtPSeE28AosoZQ6Vg1JwyxElA=; b=p/IVJrdhz/bvrKB5/g5DkVC30AHte3Y77rMbkrnwL1BFvoaRWhGT8kuZUFD4myxPul 16zHuZ7mN2xZMYOHSBxMGpUhgYNRpKJwx8ZguxlmtQYIO403SZp9fxtSkIoGZ6BaSxpf QaGq6uhL720dcsBhFlhfKb4D0OTWi4xq+eGUFOBZF/FHAqOFnLaP3kkOsPlxlXCJkG3t wq45M8EvaT2RDV4Zi+5wRYbkvs12pcqAlmk3+LEwK5tS2niiclJnzwKe6x0prtrZJZTQ 70/bwrGEcrS8K3JbdIj6ZxxRL6wYDoDxVYxFBO4TamIQY3jOXUZbMO9cdf+TXP0j/ulO dT5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695080667; x=1695685467; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=c7Ja0i1IcPpF/fnQpaRtPSeE28AosoZQ6Vg1JwyxElA=; b=hqi7m+8ufaLMWbix+p+KEEgp0Ty40GSx+hkBGKIGd6iuOOWF/jrnbfKWIKlryc0rjP NsdIsl5NETSsLTN0jKwiunLI+5bMkZRtzpf8r1UZwXUDcM56Y58Ey0igKEZxdrrT5lDg 8bhQrLXl2MIGjj11433IJeIaxYJJ8aPerIOAGY3f2cXhPbb6adZD1AwAq/b0O9BnIy9G wMzRuSVJRncNoOjF3FR2TTB3vWnOXw2odq9KE2bE/Bdh3FafI1y2Dw2dzbPFL8uBewu/ 7lmaLEvPuCV5ZNHpkkHKD2KroX1niR03iT0TQO0wl0809CToG0Xst27FyUFLi/gHxR+L +BkA== X-Gm-Message-State: AOJu0YyJACwFYQRrqzP63quyHa0tVVV7PEToaWRbbrkgnIS3rrfbngly TQJRttUBALlC9f6UM4fdJVXjeCBIURXF X-Received: from anyblade.c.googlers.com ([fda3:e722:ac3:cc00:20:ed76:c0a8:1791]) (user=mmaurer job=sendgmr) by 2002:a05:6830:14d6:b0:6bf:27b3:3d29 with SMTP id t22-20020a05683014d600b006bf27b33d29mr2987806otq.5.1695080667608; Mon, 18 Sep 2023 16:44:27 -0700 (PDT) Date: Mon, 18 Sep 2023 23:43:35 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.42.0.459.ge4e396fd5e-goog Message-ID: <20230918234412.363087-2-mmaurer@google.com> Subject: [PATCH v2] rust: Respect HOSTCC when linking for host From: Matthew Maurer To: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Masahiro Yamada Cc: Matthew Maurer , Boqun Feng , Gary Guo , "=?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?=" , Benno Lossin , Andreas Hindborg , Alice Ryhl , Nathan Chancellor , Nick Desaulniers , 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" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email 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 (agentk.vger.email [0.0.0.0]); Mon, 18 Sep 2023 16:44:41 -0700 (PDT) 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. 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 = '$(subst ','\'',$(KBUILD_HOSTLDFLAGS))' + quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@ cmd_rustc_procmacro = \ $(RUSTC_OR_CLIPPY) $(rust_common_flags) \ + -Clinker-flavor=gcc -Clinker=$(HOSTCC) \ + -Clink-args=$(KBUILD_HOSTLDFLAGS_SQ) \ --emit=dep-info=$(depfile) --emit=link=$@ --extern 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 = -Wp,-MMD,$(depfile) \ $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \ $(HOSTCXXFLAGS_$(target-stem).o) +KBUILD_HOSTLDFLAGS_SQ = '$(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-tree # modules case. hostrust_flags = --out-dir $(dir $@) --emit=dep-info=$(depfile) \ + -Clinker-flavor=gcc -Clinker=$(HOSTCC) \ + -Clink-args=$(KBUILD_HOSTLDFLAGS_SQ) \ $(KBUILD_HOSTRUSTFLAGS) $(HOST_EXTRARUSTFLAGS) \ $(HOSTRUSTFLAGS_$(target-stem)) -- 2.42.0.459.ge4e396fd5e-goog