Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp6961930rwl; Mon, 9 Jan 2023 15:49:30 -0800 (PST) X-Google-Smtp-Source: AMrXdXtFxQtxk+o1BBBYi3rp4wZANyOTM74JF18fwXkMURaEkAW39PAsFQhlEh8CrXTYKddNyOWD X-Received: by 2002:aa7:c046:0:b0:499:c343:30e5 with SMTP id k6-20020aa7c046000000b00499c34330e5mr1086171edo.3.1673308170263; Mon, 09 Jan 2023 15:49:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673308170; cv=none; d=google.com; s=arc-20160816; b=MUeQYNXDymdbFe8xKERnZRE8UUDUXeT5ilrxYXvjz1Z86iHEeXTCsfQYLSH3MwDLLD +sa0gMLnpDduta04NRMCvcLwqPh1TBTMBXieO0bidc9O8rM6bse8/tiOsbb5kTI1FYFq gNHh37BXw/KMtWMmtT2JNqlO+M8RYYqHwvbg6QiZdLo9KsLwDx0EvFN1/T5/ENs/BezP GxqluMbUDJjmM7QarzaadPOURvCEm77I2ymYWEXcJr+0qa4cWbmKQhKPC+zoa5xLcrUh M/7ciiRm+v9IPowfkjFf9CW5B42WbI1vXkL9tFKJhQqrDlmG1rpHpXyRkm+e3aQVC/4x /rJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=/CVTYF+siE7mPtrMDw8SN4lrmh2h4F+GDmmLhXk98fA=; b=y770sRRkKFhmdQmkKJEPCUqv+QGpSFTLgVpCvhwbVTj1ryYLy4QeHZWMOeHT0wSyqa zOOFp+4XLh0J0xaWnDwj8pl+r27alsk5xAFe5Jz72YwolzH79FdokKDUDy8EsnFRww8Q IXY0ayRKzTOSSCQ9V4wsSLNQbnoJSWhZJjMtzo7+/wpoiVFc48E5bRsOIJZpepeex/tc EOtn+0AXGeuV4Qk7dKYjBiSqMLDSzl4mnp+IpjWvT6gi0pYEHhLQyE9N8JHYdxdfFrSb XBC8KvQyRhmB2wQnjUJ3flS1VwaDWpRI2QgkMrFzJ/C/p9aiXnqOnAiLTyO2l+BZGSGr 9G2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Fp8t4mN5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h7-20020a056402280700b00487b286dfd3si11990520ede.23.2023.01.09.15.49.17; Mon, 09 Jan 2023 15:49:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Fp8t4mN5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235474AbjAIXGM (ORCPT + 53 others); Mon, 9 Jan 2023 18:06:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234607AbjAIXGK (ORCPT ); Mon, 9 Jan 2023 18:06:10 -0500 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07C871A07E for ; Mon, 9 Jan 2023 15:06:06 -0800 (PST) Received: by mail-pj1-x1031.google.com with SMTP id z9-20020a17090a468900b00226b6e7aeeaso11443827pjf.1 for ; Mon, 09 Jan 2023 15:06:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/CVTYF+siE7mPtrMDw8SN4lrmh2h4F+GDmmLhXk98fA=; b=Fp8t4mN5XBq2ZAbrbns8S/ghiLp66DrY/knFr24tO2TBIqJVPkF2Is8LhmtEtWKkCj 4k3FlBBFHxZItXcxKiT25Z+b1mOn0KTod4/vHIkLxG6/HfMovDovyxQFbVw6DrwH45D9 95B2jczsZYv+SVrrQSvJJX2rVfzrFuBR+ZhvlVqXFkHJ36Dzwbu/IsHcT0YRBTeYNDWy 7GUSw7vLqR7zrF+VEyKAFAF8x2a0DWw/HLS8xE4b8H9kX81NCfX/4BGggRTRF6BtbI7T kUYk8+eW47s9tuJbVmoF87cVXTBkrIBpSxEugfpQY7OSXxlAA4ZQ+v+vXzV6LAT82isb wsnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=/CVTYF+siE7mPtrMDw8SN4lrmh2h4F+GDmmLhXk98fA=; b=zN2s8WLwQXV2jS3OfIxF0OLZFR2kqzo+B4A2nBNEKl4u76mewf8LdKuOL/bJpL5zo/ SLEEQJk29T/awqS8OjjsPMrByDDeB1VZIkU9ZVdltx38o9galOma54egDCTUg7k6ZJ2W V9fN2XwIv7C3t5Yt/UYLaqPtgKe96KKgDYC77yg+/k5eqgtsVfGa+4qMGqJ/Z6oRMnym qnLPSxNK1WvrdO5m5uj45xaYgpZ62rVu1NJn98hKsJwxgsMoYGT0B+KItaX7WkS6btS3 A53jYO7DNt+X9522GIeTloo+AvfCP6dGiZTxbsygtZBv97zQkv8kAEvuJtOTFI1jqyIZ uCkw== X-Gm-Message-State: AFqh2kp3ttJTCNwRaq5Rx9WaG6sYkiGRtUwjMetr0pjtheq/W8lmQDwA 9AoW1KAYVral+P1Y7UySq6+FZYK9McZCLLjNtPdKdg== X-Received: by 2002:a17:90b:a18:b0:227:202b:8eaa with SMTP id gg24-20020a17090b0a1800b00227202b8eaamr360967pjb.147.1673305565227; Mon, 09 Jan 2023 15:06:05 -0800 (PST) MIME-Version: 1.0 References: <20230105090155.357604-1-irogers@google.com> <20230105090155.357604-4-irogers@google.com> In-Reply-To: <20230105090155.357604-4-irogers@google.com> From: Nick Desaulniers Date: Mon, 9 Jan 2023 15:05:53 -0800 Message-ID: Subject: Re: [PATCH v3 3/3] objtool: Alter how HOSTCC is forced To: Ian Rogers , Josh Poimboeuf , Peter Zijlstra Cc: Nathan Chancellor , Tom Rix , Masahiro Yamada , Nicolas Schier , linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Stephane Eranian , Andrii Nakryiko , Jiri Olsa , Arnaldo Carvalho de Melo , Namhyung Kim Content-Type: text/plain; charset="UTF-8" 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 On Thu, Jan 5, 2023 at 1:02 AM Ian Rogers wrote: > > HOSTCC is always wanted when building objtool. Setting CC to HOSTCC > happens after tools/scripts/Makefile.include is included, meaning > flags are set assuming say CC is gcc, but then it can be later set to > HOSTCC which may be clang. tools/scripts/Makefile.include is needed > for host set up and common macros in objtool's Makefile. Rather than > override CC to HOSTCC, just pass CC as HOSTCC to Makefile.build, the > libsubcmd builds and the linkage step. This means the Makefiles don't > see things like CC changing and tool flag determination, and similar, > work properly. To avoid mixing CFLAGS from different compilers just > the objtool CFLAGS are determined with the exception of > EXTRA_WARNINGS. HOSTCFLAGS is added to these so that command line > flags can add to the CFLAGS. > > Signed-off-by: Ian Rogers Thanks Ian, and happy new year! Sorry for delays reviewing this; I'm just getting back online today. Assuming Peter and Josh may be too, otherwise can Peter or Josh PTAL? Reviewed-by: Nick Desaulniers Tested-by: Nick Desaulniers (I'm happy that this allows me to now pass HOSTCFLAGS on to objtool successfully) > --- > tools/objtool/Makefile | 25 +++++++++++++++---------- > 1 file changed, 15 insertions(+), 10 deletions(-) > > diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile > index 61a00b7acae9..49956f4f58b9 100644 > --- a/tools/objtool/Makefile > +++ b/tools/objtool/Makefile > @@ -2,16 +2,12 @@ > include ../scripts/Makefile.include > include ../scripts/Makefile.arch > > -# always use the host compiler > -AR = $(HOSTAR) > -CC = $(HOSTCC) > -LD = $(HOSTLD) > - > ifeq ($(srctree),) > srctree := $(patsubst %/,%,$(dir $(CURDIR))) > srctree := $(patsubst %/,%,$(dir $(srctree))) > endif > > +MAKE = make -S > LIBSUBCMD_DIR = $(srctree)/tools/lib/subcmd/ > ifneq ($(OUTPUT),) > LIBSUBCMD_OUTPUT = $(abspath $(OUTPUT))/libsubcmd > @@ -37,12 +33,19 @@ INCLUDES := -I$(srctree)/tools/include \ > -I$(srctree)/tools/objtool/arch/$(SRCARCH)/include \ > -I$(LIBSUBCMD_OUTPUT)/include > WARNINGS := $(EXTRA_WARNINGS) -Wno-switch-default -Wno-switch-enum -Wno-packed -Wno-nested-externs > -CFLAGS := -Werror $(WARNINGS) $(KBUILD_HOSTCFLAGS) -g $(INCLUDES) $(LIBELF_FLAGS) > -LDFLAGS += $(LIBELF_LIBS) $(LIBSUBCMD) $(KBUILD_HOSTLDFLAGS) > +OBJTOOL_CFLAGS := -Werror $(WARNINGS) -g $(INCLUDES) $(LIBELF_FLAGS) $(HOSTCFLAGS) > +OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBSUBCMD) > > # Allow old libelf to be used: > elfshdr := $(shell echo '$(pound)include ' | $(CC) $(CFLAGS) -x c -E - | grep elf_getshdr) > -CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) > +OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED) > + > +# Always want host compilation. > +HOST_OVERRIDES := CC="$(HOSTCC)" EXTRA_CFLAGS="$(OBJTOOL_CFLAGS)" \ > + LD="$(HOSTLD)" AR="$(HOSTAR)" > +BUILD_HOST_OVERRIDES := CC="$(HOSTCC)" CFLAGS="$(OBJTOOL_CFLAGS)" \ > + LD="$(HOSTLD)" LDFLAGS="$(OBJTOOL_LDFLAGS)" \ > + AR="$(HOSTAR)" > > AWK = awk > MKDIR = mkdir > @@ -65,10 +68,11 @@ include $(srctree)/tools/build/Makefile.include > > $(OBJTOOL_IN): fixdep FORCE > $(Q)$(CONFIG_SHELL) ./sync-check.sh > - $(Q)$(MAKE) $(build)=objtool > + $(Q)$(MAKE) $(build)=objtool $(BUILD_HOST_OVERRIDES) > + > > $(OBJTOOL): $(LIBSUBCMD) $(OBJTOOL_IN) > - $(QUIET_LINK)$(CC) $(OBJTOOL_IN) $(LDFLAGS) -o $@ > + $(QUIET_LINK)$(HOSTCC) $(OBJTOOL_IN) $(KBUILD_HOSTLDFLAGS) $(OBJTOOL_LDFLAGS) -o $@ > > > $(LIBSUBCMD_OUTPUT): > @@ -77,6 +81,7 @@ $(LIBSUBCMD_OUTPUT): > $(LIBSUBCMD): fixdep FORCE $(LIBSUBCMD_OUTPUT) > $(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=$(LIBSUBCMD_OUTPUT) \ > DESTDIR=$(LIBSUBCMD_DESTDIR) prefix= subdir= \ > + $(HOST_OVERRIDES) \ > $@ install_headers > > $(LIBSUBCMD)-clean: > -- > 2.39.0.314.g84b9a713c41-goog > -- Thanks, ~Nick Desaulniers